Version 2.0.0-dev.69.1

Cherry-pick 11f3c57e9c09c62c46aaf7824c3ffdc8debb3960 to dev
Cherry-pick 83a615cf4b4acfd6c0fb58a15ed82b09ff1669cf to dev
Cherry-pick ec733c3b3c20adefb188e4b6e55103eef452a691 to dev
Cherry-pick a7e511f4dce66362fb6ec921e80cc8c93cc277d7 to dev
Cherry-pick 651994ba70fbf916316af8dd37571a4549bb66a1 to dev
Cherry-pick 296319d2f00e3f51942f884f8f340f725c598ac8 to dev
Cherry-pick cc1a7b35d009eb0fb526baf87202d3e97cd8aa1f to dev
Cherry-pick 64a1f8f69c5538ec89d3349c0dcee6f7304e9f75 to dev
Cherry-pick 389b8997b3e8a9f0eea287a99099b1d847851b6d to dev
Cherry-pick db45d049dbcd05e359f5ca09396d0685fa47ba4e to dev
Cherry-pick c6f525634f7238eb2e55d04f839b4e300d1f7cc2 to dev
Cherry-pick a3bb529eecf1b88b69f61500a311100a39e39899 to dev
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 832c29d..a15d952 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,18 @@
+## 2.0.0-dev.69.1
+
+Cherry-pick 11f3c57e9c09c62c46aaf7824c3ffdc8debb3960 to dev
+Cherry-pick 83a615cf4b4acfd6c0fb58a15ed82b09ff1669cf to dev
+Cherry-pick ec733c3b3c20adefb188e4b6e55103eef452a691 to dev
+Cherry-pick a7e511f4dce66362fb6ec921e80cc8c93cc277d7 to dev
+Cherry-pick 651994ba70fbf916316af8dd37571a4549bb66a1 to dev
+Cherry-pick 296319d2f00e3f51942f884f8f340f725c598ac8 to dev
+Cherry-pick cc1a7b35d009eb0fb526baf87202d3e97cd8aa1f to dev
+Cherry-pick 64a1f8f69c5538ec89d3349c0dcee6f7304e9f75 to dev
+Cherry-pick 389b8997b3e8a9f0eea287a99099b1d847851b6d to dev
+Cherry-pick db45d049dbcd05e359f5ca09396d0685fa47ba4e to dev
+Cherry-pick c6f525634f7238eb2e55d04f839b4e300d1f7cc2 to dev
+Cherry-pick a3bb529eecf1b88b69f61500a311100a39e39899 to dev
+
 ## 2.0.0-dev.69.0
 
 ### Core library changes
diff --git a/DEPS b/DEPS
index 21df396..6afb6ba 100644
--- a/DEPS
+++ b/DEPS
@@ -95,7 +95,7 @@
   "intl_tag": "0.15.6",
   "jinja2_rev": "2222b31554f03e62600cd7e383376a7c187967a1",
   "json_rpc_2_tag": "2.0.8",
-  "linter_tag": "0.1.56",
+  "linter_tag": "0.1.58",
   "logging_tag": "0.11.3+1",
   "markdown_tag": "2.0.1",
   "matcher_tag": "0.12.3",
@@ -103,7 +103,7 @@
   "mockito_tag": "d39ac507483b9891165e422ec98d9fb480037c8b",
   "mustache4dart_tag" : "v2.1.2",
   "oauth2_tag": "1.2.1",
-  "observatory_pub_packages_rev": "caf0aecfb15077fc7a34d48e9df13606c793fddf",
+  "observatory_pub_packages_rev": "129400266c6839365b9e93147f53fc0970e1d440",
   "package_config_tag": "1.0.3",
   "package_resolver_tag": "1.0.3",
   "path_tag": "1.5.1",
diff --git a/pkg/analysis_server/lib/src/plugin/plugin_manager.dart b/pkg/analysis_server/lib/src/plugin/plugin_manager.dart
index 65d00d4..ba63c49 100644
--- a/pkg/analysis_server/lib/src/plugin/plugin_manager.dart
+++ b/pkg/analysis_server/lib/src/plugin/plugin_manager.dart
@@ -1072,8 +1072,10 @@
       return false;
     }
     channel = info._createChannel();
-    await channel.listen(handleResponse, handleNotification,
-        onDone: handleOnDone, onError: handleOnError);
+    // TODO(brianwilkerson) Determine if await is necessary, if so, change the
+    // return type of `channel.listen` to `Future<void>`.
+    await (channel.listen(handleResponse, handleNotification,
+        onDone: handleOnDone, onError: handleOnError) as dynamic);
     if (channel == null) {
       // If there is an error when starting the isolate, the channel will invoke
       // handleOnDone, which will cause `channel` to be set to `null`.
diff --git a/pkg/analysis_server/lib/src/server/http_server.dart b/pkg/analysis_server/lib/src/server/http_server.dart
index c5cff7d..783cb9c 100644
--- a/pkg/analysis_server/lib/src/server/http_server.dart
+++ b/pkg/analysis_server/lib/src/server/http_server.dart
@@ -136,7 +136,9 @@
     if (getHandler == null) {
       getHandler = new DiagnosticsSite(socketServer, _printBuffer);
     }
-    await getHandler.handleGetRequest(request);
+    // TODO(brianwilkerson) Determine if await is necessary, if so, change the
+    // return type of [AbstractGetHandler.handleGetRequest] to `Future<void>`.
+    await (getHandler.handleGetRequest(request) as dynamic);
   }
 
   /**
diff --git a/pkg/analysis_server/lib/src/status/pages.dart b/pkg/analysis_server/lib/src/status/pages.dart
index f9c7e06..e727bf5 100644
--- a/pkg/analysis_server/lib/src/status/pages.dart
+++ b/pkg/analysis_server/lib/src/status/pages.dart
@@ -38,7 +38,9 @@
     } else {
       buf.writeln('<div>');
     }
-    await gen();
+    // TODO(brianwilkerson) Determine if await is necessary, if so, change the
+    // return type of [gen] to `Future<void>`.
+    await (gen() as dynamic);
     buf.writeln('</div>');
   }
 
@@ -60,7 +62,9 @@
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     buf.clear();
-    await generatePage(params);
+    // TODO(brianwilkerson) Determine if await is necessary, if so, change the
+    // return type of [generatePage] to `Future<void>`.
+    await (generatePage(params) as dynamic);
     return buf.toString();
   }
 
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_context.dart b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
index 5d5c629..fe326f3 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
@@ -93,7 +93,7 @@
       }
 
       logger.run('Append library files', () {
-        return appendLibraryFiles(targetLibrary);
+        appendLibraryFiles(targetLibrary);
       });
 
       Set<String> libraryUrisToLink = new Set<String>();
diff --git a/pkg/analyzer_cli/lib/src/build_mode.dart b/pkg/analyzer_cli/lib/src/build_mode.dart
index d83ab5e..b072546 100644
--- a/pkg/analyzer_cli/lib/src/build_mode.dart
+++ b/pkg/analyzer_cli/lib/src/build_mode.dart
@@ -144,7 +144,7 @@
     errorSink = errorBuffer;
     outSink = outBuffer;
     exitHandler = (int exitCode) {
-      return throw new StateError('Exit called: $exitCode');
+      throw new StateError('Exit called: $exitCode');
     };
     await super.run();
   }
diff --git a/pkg/compiler/lib/src/common_elements.dart b/pkg/compiler/lib/src/common_elements.dart
index 8a39e86..4d68545 100644
--- a/pkg/compiler/lib/src/common_elements.dart
+++ b/pkg/compiler/lib/src/common_elements.dart
@@ -1115,18 +1115,39 @@
   FunctionEntity get hashCodeForNativeObject =>
       _findHelperFunction('hashCodeForNativeObject');
 
-  ClassEntity get instantiation1Class => _findHelperClass('Instantiation1');
-  ClassEntity get instantiation2Class => _findHelperClass('Instantiation2');
-  ClassEntity get instantiation3Class => _findHelperClass('Instantiation3');
-  FunctionEntity get instantiate1 => _findHelperFunction('instantiate1');
-  FunctionEntity get instantiate2 => _findHelperFunction('instantiate2');
-  FunctionEntity get instantiate3 => _findHelperFunction('instantiate3');
+  // TODO(johnniwinther,sra): Support arbitrary type argument count.
+  void _checkTypeArgumentCount(int typeArgumentCount) {
+    assert(typeArgumentCount > 0);
+    if (typeArgumentCount > 20) {
+      failedAt(
+          NO_LOCATION_SPANNABLE,
+          "Unsupported instantiation argument count: "
+          "${typeArgumentCount}");
+    }
+  }
+
+  ClassEntity getInstantiationClass(int typeArgumentCount) {
+    _checkTypeArgumentCount(typeArgumentCount);
+    return _findHelperClass('Instantiation$typeArgumentCount');
+  }
+
+  FunctionEntity getInstantiateFunction(int typeArgumentCount) {
+    _checkTypeArgumentCount(typeArgumentCount);
+    return _findHelperFunction('instantiate$typeArgumentCount');
+  }
+
   FunctionEntity get instantiatedGenericFunctionType =>
       _findHelperFunction('instantiatedGenericFunctionType');
 
   FunctionEntity get extractFunctionTypeObjectFromInternal =>
       _findHelperFunction('extractFunctionTypeObjectFromInternal');
 
+  bool isInstantiationClass(ClassEntity cls) {
+    return cls.library == _jsHelperLibrary &&
+        cls.name != 'Instantiation' &&
+        cls.name.startsWith('Instantiation');
+  }
+
   // From dart:_internal
 
   ClassEntity _symbolImplementationClass;
diff --git a/pkg/compiler/lib/src/deferred_load.dart b/pkg/compiler/lib/src/deferred_load.dart
index 8b87744..e72eca9 100644
--- a/pkg/compiler/lib/src/deferred_load.dart
+++ b/pkg/compiler/lib/src/deferred_load.dart
@@ -15,6 +15,7 @@
         ConstantValue,
         ConstructedConstantValue,
         DeferredConstantValue,
+        TypeConstantValue,
         DeferredGlobalConstantValue,
         InstantiationConstantValue;
 import 'elements/types.dart';
@@ -193,6 +194,10 @@
   Iterable<ImportEntity> memberImportsTo(
       MemberEntity element, LibraryEntity library);
 
+  /// Returns every [ImportEntity] that imports [element] into [library].
+  Iterable<ImportEntity> typedefImportsTo(
+      TypedefEntity element, LibraryEntity library);
+
   /// Collects all direct dependencies of [element].
   ///
   /// The collected dependent elements and constants are are added to
@@ -410,18 +415,9 @@
         }
       }
       constant.getDependencies().forEach((ConstantValue dependency) {
-        if (dependency is DeferredConstantValue) {
-          /// New deferred-imports are only discovered when we are visiting the
-          /// main output unit (size == 0) or code reachable from a deferred
-          /// import (size == 1). After that, we are rediscovering the
-          /// same nodes we have already seen.
-          if (newSet.length <= 1) {
-            queue.addConstant(
-                dependency, importSets.singleton(dependency.import));
-          }
-        } else {
-          _updateConstantRecursive(dependency, oldSet, newSet, queue);
-        }
+        // Constants are not allowed to refer to deferred constants, so
+        // no need to check for a deferred type literal here.
+        _updateConstantRecursive(dependency, oldSet, newSet, queue);
       });
     } else {
       assert(
@@ -505,16 +501,21 @@
     // dependencies are already visited as dependencies of the enclosing member.
   }
 
+  /// Whether to enqueue a deferred dependency.
+  ///
+  /// Due to the nature of the algorithm, some dependencies may be visited more
+  /// than once. However, we know that new deferred-imports are only discovered
+  /// when we are visiting the main output unit (size == 0) or code reachable
+  /// from a deferred import (size == 1). After that, we are rediscovering the
+  /// same nodes we have already seen.
+  _shouldAddDeferredDependency(ImportSet newSet) => newSet.length <= 1;
+
   void _processDependencies(LibraryEntity library, Dependencies dependencies,
       ImportSet oldSet, ImportSet newSet, WorkQueue queue) {
     for (ClassEntity cls in dependencies.classes) {
       Iterable<ImportEntity> imports = classImportsTo(cls, library);
       if (_isExplicitlyDeferred(imports)) {
-        /// New deferred-imports are only discovered when we are visiting the
-        /// main output unit (size == 0) or code reachable from a deferred
-        /// import (size == 1). After that, we are rediscovering the
-        /// same nodes we have already seen.
-        if (newSet.length <= 1) {
+        if (_shouldAddDeferredDependency(newSet)) {
           for (ImportEntity deferredImport in imports) {
             queue.addClass(cls, importSets.singleton(deferredImport));
           }
@@ -527,11 +528,7 @@
     for (MemberEntity member in dependencies.members) {
       Iterable<ImportEntity> imports = memberImportsTo(member, library);
       if (_isExplicitlyDeferred(imports)) {
-        /// New deferred-imports are only discovered when we are visiting the
-        /// main output unit (size == 0) or code reachable from a deferred
-        /// import (size == 1). After that, we are rediscovering the
-        /// same nodes we have already seen.
-        if (newSet.length <= 1) {
+        if (_shouldAddDeferredDependency(newSet)) {
           for (ImportEntity deferredImport in imports) {
             queue.addMember(member, importSets.singleton(deferredImport));
           }
@@ -546,14 +543,36 @@
     }
 
     for (ConstantValue dependency in dependencies.constants) {
+      // TODO(sigmund): either delete DeferredConstantValue or use it to
+      // represent deferred TypeConstantValues below.
       if (dependency is DeferredConstantValue) {
-        if (newSet.length <= 1) {
+        if (_shouldAddDeferredDependency(newSet)) {
           queue.addConstant(
               dependency, importSets.singleton(dependency.import));
         }
-      } else {
-        _updateConstantRecursive(dependency, oldSet, newSet, queue);
+        continue;
       }
+
+      if (dependency is TypeConstantValue) {
+        var type = dependency.representedType;
+        var imports = const <ImportEntity>[];
+        if (type is InterfaceType) {
+          imports = classImportsTo(type.element, library);
+        } else if (type is TypedefType) {
+          imports = typedefImportsTo(type.element, library);
+        }
+        if (_isExplicitlyDeferred(imports)) {
+          if (_shouldAddDeferredDependency(newSet)) {
+            for (ImportEntity deferredImport in imports) {
+              queue.addConstant(
+                  dependency, importSets.singleton(deferredImport));
+            }
+          }
+          continue;
+        }
+      }
+
+      _updateConstantRecursive(dependency, oldSet, newSet, queue);
     }
   }
 
diff --git a/pkg/compiler/lib/src/js_backend/backend_impact.dart b/pkg/compiler/lib/src/js_backend/backend_impact.dart
index 361ac44..b560560 100644
--- a/pkg/compiler/lib/src/js_backend/backend_impact.dart
+++ b/pkg/compiler/lib/src/js_backend/backend_impact.dart
@@ -768,18 +768,15 @@
     ]);
   }
 
-  BackendImpact _genericInstantiation;
+  Map<int, BackendImpact> _genericInstantiation = <int, BackendImpact>{};
 
-  BackendImpact get genericInstantiation =>
-      _genericInstantiation ??= new BackendImpact(staticUses: [
-        _commonElements.instantiate1,
-        _commonElements.instantiate2,
-        _commonElements.instantiate3,
+  BackendImpact getGenericInstantiation(int typeArgumentCount) =>
+      _genericInstantiation[typeArgumentCount] ??=
+          new BackendImpact(staticUses: [
+        _commonElements.getInstantiateFunction(typeArgumentCount),
         _commonElements.instantiatedGenericFunctionType,
         _commonElements.extractFunctionTypeObjectFromInternal,
       ], instantiatedClasses: [
-        _commonElements.instantiation1Class,
-        _commonElements.instantiation2Class,
-        _commonElements.instantiation3Class,
+        _commonElements.getInstantiationClass(typeArgumentCount),
       ]);
 }
diff --git a/pkg/compiler/lib/src/js_backend/codegen_listener.dart b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
index 8332542..d276f51 100644
--- a/pkg/compiler/lib/src/js_backend/codegen_listener.dart
+++ b/pkg/compiler/lib/src/js_backend/codegen_listener.dart
@@ -157,14 +157,8 @@
     } else if (constant is InstantiationConstantValue) {
       // TODO(johnniwinther): Register these using `BackendImpact`.
       impactBuilder.registerTypeUse(new TypeUse.instantiation(
-          _elementEnvironment
-              .getThisType(_commonElements.instantiation1Class)));
-      impactBuilder.registerTypeUse(new TypeUse.instantiation(
-          _elementEnvironment
-              .getThisType(_commonElements.instantiation2Class)));
-      impactBuilder.registerTypeUse(new TypeUse.instantiation(
-          _elementEnvironment
-              .getThisType(_commonElements.instantiation2Class)));
+          _elementEnvironment.getThisType(_commonElements
+              .getInstantiationClass(constant.typeArguments.length))));
       impactBuilder.registerStaticUse(new StaticUse.staticInvoke(
           _commonElements.instantiatedGenericFunctionType,
           CallStructure.TWO_ARGS));
diff --git a/pkg/compiler/lib/src/js_backend/constant_emitter.dart b/pkg/compiler/lib/src/js_backend/constant_emitter.dart
index f3e8913..709b64f 100644
--- a/pkg/compiler/lib/src/js_backend/constant_emitter.dart
+++ b/pkg/compiler/lib/src/js_backend/constant_emitter.dart
@@ -340,24 +340,8 @@
   @override
   jsAst.Expression visitInstantiation(InstantiationConstantValue constant,
       [_]) {
-    // TODO(johnniwinther,sra): Support arbitrary type argument count.
-    ClassEntity cls;
-    switch (constant.typeArguments.length) {
-      case 1:
-        cls = _commonElements.instantiation1Class;
-        break;
-      case 2:
-        cls = _commonElements.instantiation2Class;
-        break;
-      case 3:
-        cls = _commonElements.instantiation3Class;
-        break;
-      default:
-        failedAt(
-            NO_LOCATION_SPANNABLE,
-            "Unsupported instantiation argument count: "
-            "${constant.typeArguments.length}");
-    }
+    ClassEntity cls =
+        _commonElements.getInstantiationClass(constant.typeArguments.length);
     List<jsAst.Expression> fields = <jsAst.Expression>[
       constantReferenceGenerator(constant.function),
       _reifiedTypeArguments(constant, constant.typeArguments)
diff --git a/pkg/compiler/lib/src/js_backend/impact_transformer.dart b/pkg/compiler/lib/src/js_backend/impact_transformer.dart
index 46e3e2d4..abec762 100644
--- a/pkg/compiler/lib/src/js_backend/impact_transformer.dart
+++ b/pkg/compiler/lib/src/js_backend/impact_transformer.dart
@@ -301,9 +301,10 @@
     }
 
     if (worldImpact.genericInstantiations.isNotEmpty) {
-      registerImpact(_impacts.genericInstantiation);
       for (GenericInstantiation instantiation
           in worldImpact.genericInstantiations) {
+        registerImpact(_impacts
+            .getGenericInstantiation(instantiation.typeArguments.length));
         _rtiNeedBuilder.registerGenericInstantiation(instantiation);
       }
     }
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 31545bb..7679275 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
@@ -718,9 +718,7 @@
       callStubs.add(_buildStubMethod(name, function));
     }
 
-    if (cls == _commonElements.instantiation1Class ||
-        cls == _commonElements.instantiation2Class ||
-        cls == _commonElements.instantiation3Class) {
+    if (_commonElements.isInstantiationClass(cls)) {
       callStubs.addAll(_generateInstantiationStubs(cls));
     }
 
diff --git a/pkg/compiler/lib/src/kernel/deferred_load.dart b/pkg/compiler/lib/src/kernel/deferred_load.dart
index b312027..7b0a987 100644
--- a/pkg/compiler/lib/src/kernel/deferred_load.dart
+++ b/pkg/compiler/lib/src/kernel/deferred_load.dart
@@ -48,6 +48,13 @@
   }
 
   @override
+  Iterable<ImportEntity> typedefImportsTo(
+      TypedefEntity element, LibraryEntity library) {
+    ir.Typedef node = _elementMap.getTypedefNode(element);
+    return _findImportsTo(node, node.name, node.enclosingLibrary, library);
+  }
+
+  @override
   Iterable<ImportEntity> memberImportsTo(
       Entity element, LibraryEntity library) {
     ir.Member node = _elementMap.getMemberDefinition(element).node;
diff --git a/pkg/compiler/lib/src/kernel/element_map.dart b/pkg/compiler/lib/src/kernel/element_map.dart
index 7be52d1..23a83dd 100644
--- a/pkg/compiler/lib/src/kernel/element_map.dart
+++ b/pkg/compiler/lib/src/kernel/element_map.dart
@@ -192,6 +192,9 @@
   /// Returns the [ir.Library] corresponding to [library].
   ir.Library getLibraryNode(LibraryEntity library);
 
+  /// Returns the node that defines [typedef].
+  ir.Typedef getTypedefNode(covariant TypedefEntity typedef);
+
   /// Returns the definition information for [member].
   MemberDefinition getMemberDefinition(covariant MemberEntity member);
 
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index cdbfe78..524c487 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -844,6 +844,10 @@
     return _classes.getData(cls).definition;
   }
 
+  ir.Typedef _getTypedefNode(covariant IndexedTypedef typedef) {
+    return _typedefs.getData(typedef).node;
+  }
+
   @override
   ImportEntity getImport(ir.LibraryDependency node) {
     ir.Library library = node.parent;
@@ -1439,6 +1443,11 @@
     return _getClassDefinition(cls);
   }
 
+  @override
+  ir.Typedef getTypedefNode(TypedefEntity typedef) {
+    return _getTypedefNode(typedef);
+  }
+
   /// Returns the element type of a async/sync*/async* function.
   @override
   DartType getFunctionAsyncOrSyncStarElementType(ir.FunctionNode functionNode) {
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index 188caba..c537370 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -3670,7 +3670,8 @@
     add(argumentsInstruction);
 
     List<HInstruction> argumentNames = <HInstruction>[];
-    for (String argumentName in selector.namedArguments) {
+    for (String argumentName
+        in selector.callStructure.getOrderedNamedArguments()) {
       ConstantValue argumentNameConstant =
           constantSystem.createString(argumentName);
       argumentNames.add(graph.addConstant(argumentNameConstant, closedWorld));
@@ -4363,7 +4364,8 @@
     }
     int typeArgumentCount = node.typeArguments.length;
     bool targetCanThrow = false; // TODO(sra): Is this true?
-    FunctionEntity target = _instantiator(typeArgumentCount);
+    FunctionEntity target =
+        _commonElements.getInstantiateFunction(typeArgumentCount);
     if (target == null) {
       reporter.internalError(
           _elementMap.getSpannable(targetElement, node),
@@ -4383,14 +4385,6 @@
     push(instruction);
   }
 
-  FunctionEntity _instantiator(int count) {
-    // TODO(johnniwinther,sra): Support arbitrary type argument count.
-    if (count == 1) return _commonElements.instantiate1;
-    if (count == 2) return _commonElements.instantiate2;
-    if (count == 3) return _commonElements.instantiate3;
-    return null;
-  }
-
   @override
   void visitMethodInvocation(ir.MethodInvocation node) {
     node.receiver.accept(this);
diff --git a/pkg/dev_compiler/test/sourcemap/common.dart b/pkg/dev_compiler/test/sourcemap/common.dart
index c934036..c4868c3 100644
--- a/pkg/dev_compiler/test/sourcemap/common.dart
+++ b/pkg/dev_compiler/test/sourcemap/common.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:async' show Future;
+
 import 'dart:io';
 
 import 'package:path/path.dart' as path;
@@ -19,14 +21,15 @@
 abstract class ChainContextWithCleanupHelper extends ChainContext {
   Map<TestDescription, Data> cleanupHelper = {};
 
-  void cleanUp(TestDescription description, Result result) {
+  Future<void> cleanUp(TestDescription description, Result result) {
     if (debugging() && result.outcome != Expectation.Pass) {
       print("Not cleaning up: Running in debug-mode for non-passing test.");
-      return;
+      return null;
     }
 
     Data data = cleanupHelper.remove(description);
     data?.outDir?.deleteSync(recursive: true);
+    return null;
   }
 
   bool debugging() => false;
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 fc453d5..5bd77ea 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
@@ -5827,6 +5827,17 @@
         r"""Try removing the default value or making the parameter optional.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeReturnFromVoidFunction = messageReturnFromVoidFunction;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageReturnFromVoidFunction = const MessageCode(
+    "ReturnFromVoidFunction",
+    analyzerCode: "RETURN_OF_INVALID_TYPE",
+    dart2jsCode: "*fatal*",
+    severity: Severity.errorLegacyWarning,
+    message: r"""Can't return a value from a void function.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeReturnTypeFunctionExpression =
     messageReturnTypeFunctionExpression;
 
@@ -6866,6 +6877,14 @@
         r"""Try removing the keyword 'var', or replacing it with the name of the return type.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeVoidExpression = messageVoidExpression;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageVoidExpression = const MessageCode("VoidExpression",
+    severity: Severity.errorLegacyWarning,
+    message: r"""This expression has type 'void' and can't be used.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<
     Message Function(
         String string,
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 0b4dadd..c57370a 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
@@ -786,8 +786,11 @@
   @override
   Expression _finish(
       Expression body, ComplexAssignmentJudgment complexAssignment) {
+    int offset = offsetForToken(token);
     return super._finish(
-        makeLet(receiverVariable, makeLet(indexVariable, body)),
+        makeLet(
+            receiverVariable, makeLet(indexVariable, body)..fileOffset = offset)
+          ..fileOffset = offset,
         complexAssignment);
   }
 
@@ -1047,7 +1050,9 @@
   @override
   Expression _finish(
       Expression body, ComplexAssignmentJudgment complexAssignment) {
-    return super._finish(makeLet(indexVariable, body), complexAssignment);
+    return super._finish(
+        makeLet(indexVariable, body)..fileOffset = offsetForToken(token),
+        complexAssignment);
   }
 
   @override
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 71d3160..5e966d5 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
@@ -39,6 +39,7 @@
 
 import '../fasta_codes.dart'
     show
+        messageVoidExpression,
         noLength,
         templateCantInferTypeDueToCircularity,
         templateCantUseSuperBoundedTypeForInstanceCreation,
@@ -439,7 +440,8 @@
       variable.type = inferredType;
     }
     for (var judgment in cascadeJudgments) {
-      inferrer.inferExpression(factory, judgment, const UnknownType(), false);
+      inferrer.inferExpression(factory, judgment, const UnknownType(), false,
+          isVoidAllowed: true);
     }
     inferrer.listener.cascadeExpression(this, fileOffset, inferredType);
     return null;
@@ -1176,7 +1178,8 @@
             this.variable.type,
             syntheticAssignment.rhs,
             syntheticAssignment.rhs.fileOffset,
-            template: templateForInLoopElementTypeNotAssignable);
+            template: templateForInLoopElementTypeNotAssignable,
+            isVoidAllowed: true);
         if (syntheticAssignment is PropertyAssignmentJudgment) {
           syntheticAssignment._handleWriteContravariance(
               inferrer, inferrer.thisType);
@@ -1479,6 +1482,10 @@
       inferrer.inferExpression(factory, rightJudgment, typeContext, _forceLub);
     }
     var rhsType = rightJudgment.inferredType;
+    if (rhsType is VoidType) {
+      inferrer.helper?.addProblem(
+          messageVoidExpression, rightJudgment.fileOffset, noLength);
+    }
     // - Let T = greatest closure of K with respect to `?` if K is not `_`, else
     //   UP(t0, t1)
     // - Then the inferred type is T.
@@ -2473,7 +2480,7 @@
       Factory<Expression, Statement, Initializer, Type> factory) {
     var judgment = this.judgment;
     var closureContext = inferrer.closureContext;
-    var typeContext = !closureContext.isGenerator
+    DartType typeContext = !closureContext.isGenerator
         ? closureContext.returnOrYieldContext
         : const UnknownType();
     DartType inferredType;
@@ -2487,8 +2494,8 @@
     // inferred type of the closure.  TODO(paulberry): is this what we want
     // for Fasta?
     if (judgment != null) {
-      closureContext.handleReturn(
-          inferrer, inferredType, expression, fileOffset);
+      closureContext.handleReturn(inferrer, inferredType, expression,
+          fileOffset, !identical(returnKeyword?.lexeme, "return"));
     }
     inferrer.listener
         .returnStatement(this, fileOffset, returnKeyword, null, semicolon);
@@ -3221,7 +3228,8 @@
       Factory<Expression, Statement, Initializer, Type> factory,
       kernel.Expression expression,
       DartType typeContext,
-      bool typeNeeded) {
+      bool typeNeeded,
+      {bool isVoidAllowed: false}) {
     // `null` should never be used as the type context.  An instance of
     // `UnknownType` should be used instead.
     assert(typeContext != null);
@@ -3247,7 +3255,34 @@
       // so that the type hierarchy will be simpler (which may speed up "is"
       // checks).
       expression.infer(this, factory, typeContext);
-      return expression.inferredType;
+      DartType inferredType = expression.inferredType;
+      if (inferredType is VoidType && !isVoidAllowed) {
+        TreeNode parent = expression.parent;
+        if (parent is ReturnStatement ||
+            parent is ExpressionStatement ||
+            parent is AsExpression) {
+          return inferredType;
+        } else if (parent is ForStatement &&
+            parent.updates.contains(expression)) {
+          return inferredType;
+        } else if (parent is VariableDeclaration) {
+          TreeNode grandParent = parent.parent;
+          if (grandParent is ForStatement &&
+              parent.name == null &&
+              grandParent.variables.contains(parent)) {
+            return inferredType;
+          }
+        } else if (parent is ConditionalExpression) {
+          if (parent.then == expression || parent.otherwise == expression) {
+            return inferredType;
+          }
+        } else if (parent is DeferredCheckJudgment) {
+          return inferredType;
+        }
+        helper?.addProblem(
+            messageVoidExpression, expression.fileOffset, noLength);
+      }
+      return inferredType;
     } else {
       // Encountered an expression type for which type inference is not yet
       // implemented, so just infer dynamic for now.
diff --git a/pkg/front_end/lib/src/fasta/rewrite_severity.dart b/pkg/front_end/lib/src/fasta/rewrite_severity.dart
index 3961294..936bccc 100644
--- a/pkg/front_end/lib/src/fasta/rewrite_severity.dart
+++ b/pkg/front_end/lib/src/fasta/rewrite_severity.dart
@@ -8,6 +8,15 @@
 
 Severity rewriteSeverity(
     Severity severity, msg.Code<Object> code, Uri fileUri) {
+  if (code == msg.codeVoidExpression) {
+    // TODO(ahe): Remove this special case when
+    // [https://github.com/dart-lang/dartdoc/issues/1724] is fixed.
+    String path = fileUri.path;
+    if (path.endsWith("/third_party/pkg/dartdoc/lib/src/model.dart") ||
+        path.endsWith("/third_party/pkg/dartdoc/lib/src/io_utils.dart")) {
+      return Severity.ignored;
+    }
+  }
   if (severity != Severity.ignored) return severity;
   String path = fileUri.path;
   String fastaPath = "/pkg/front_end/lib/src/fasta/";
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 5ded6a7b..650c384 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
@@ -68,7 +68,28 @@
 
 import '../builder/builder.dart' show PrefixBuilder;
 
-import '../fasta_codes.dart';
+import '../fasta_codes.dart'
+    show
+        LocatedMessage,
+        Message,
+        Template,
+        messageReturnFromVoidFunction,
+        messageVoidExpression,
+        noLength,
+        templateArgumentTypeNotAssignable,
+        templateImplicitCallOfNonMethod,
+        templateInvalidAssignment,
+        templateInvalidCastFunctionExpr,
+        templateInvalidCastLiteralList,
+        templateInvalidCastLiteralMap,
+        templateInvalidCastLocalFunction,
+        templateInvalidCastNewExpr,
+        templateInvalidCastStaticMethod,
+        templateInvalidCastTopLevelFunction,
+        templateMixinInferenceNoMatchingClass,
+        templateUndefinedGetter,
+        templateUndefinedMethod,
+        templateUndefinedSetter;
 
 import '../kernel/factory.dart' show Factory;
 
@@ -166,6 +187,8 @@
   /// this typing expectation in `Stream` or `Iterator`, as appropriate.
   final DartType returnOrYieldContext;
 
+  final DartType declaredReturnType;
+
   final bool _needToInferReturnType;
 
   final bool _needImplicitDowncasts;
@@ -187,6 +210,7 @@
       DartType returnContext,
       bool needToInferReturnType,
       bool needImplicitDowncasts) {
+    DartType declaredReturnType = returnContext;
     bool isAsync = asyncMarker == AsyncMarker.Async ||
         asyncMarker == AsyncMarker.AsyncStar;
     bool isGenerator = asyncMarker == AsyncMarker.SyncStar ||
@@ -204,28 +228,33 @@
           inferrer.typeSchemaEnvironment.unfutureType(returnContext));
     }
     return new ClosureContext._(isAsync, isGenerator, returnContext,
-        needToInferReturnType, needImplicitDowncasts);
+        declaredReturnType, needToInferReturnType, needImplicitDowncasts);
   }
 
-  ClosureContext._(this.isAsync, this.isGenerator, this.returnOrYieldContext,
-      this._needToInferReturnType, this._needImplicitDowncasts) {
+  ClosureContext._(
+      this.isAsync,
+      this.isGenerator,
+      this.returnOrYieldContext,
+      this.declaredReturnType,
+      this._needToInferReturnType,
+      this._needImplicitDowncasts) {
     assert(returnOrYieldContext != null);
   }
 
   /// Updates the inferred return type based on the presence of a return
   /// statement returning the given [type].
   void handleReturn(TypeInferrerImpl inferrer, DartType type,
-      Expression expression, int fileOffset) {
+      Expression expression, int fileOffset, bool isArrow) {
     if (isGenerator) return;
     _updateInferredReturnType(
-        inferrer, type, expression, fileOffset, true, false);
+        inferrer, type, expression, fileOffset, true, false, isArrow);
   }
 
   void handleYield(TypeInferrerImpl inferrer, bool isYieldStar, DartType type,
       Expression expression, int fileOffset) {
     if (!isGenerator) return;
     _updateInferredReturnType(
-        inferrer, type, expression, fileOffset, false, isYieldStar);
+        inferrer, type, expression, fileOffset, false, isYieldStar, false);
   }
 
   DartType inferReturnType(TypeInferrerImpl inferrer) {
@@ -242,8 +271,14 @@
     return _wrapAsyncOrGenerator(inferrer, inferredType);
   }
 
-  void _updateInferredReturnType(TypeInferrerImpl inferrer, DartType type,
-      Expression expression, int fileOffset, bool isReturn, bool isYieldStar) {
+  void _updateInferredReturnType(
+      TypeInferrerImpl inferrer,
+      DartType type,
+      Expression expression,
+      int fileOffset,
+      bool isReturn,
+      bool isYieldStar,
+      bool isArrow) {
     if (_needImplicitDowncasts) {
       var expectedType = isYieldStar
           ? _wrapAsyncOrGenerator(inferrer, returnOrYieldContext)
@@ -252,7 +287,10 @@
         expectedType = greatestClosure(inferrer.coreTypes, expectedType);
         if (inferrer.ensureAssignable(
                 expectedType, type, expression, fileOffset,
-                isReturnFromAsync: isAsync) !=
+                isReturnFromAsync: isAsync,
+                isReturn: isReturn,
+                declaredReturnType: declaredReturnType,
+                isArrow: isArrow) !=
             null) {
           type = expectedType;
         }
@@ -568,9 +606,23 @@
   /// [expectedType], and inserts an implicit downcast if appropriate.
   Expression ensureAssignable(DartType expectedType, DartType actualType,
       Expression expression, int fileOffset,
-      {bool isReturnFromAsync = false,
+      {bool isReturnFromAsync: false,
+      bool isReturn: false,
+      bool isVoidAllowed,
+      bool isArrow: false,
+      DartType declaredReturnType,
       Template<Message Function(DartType, DartType)> template}) {
+    isVoidAllowed ??= isArrow;
     assert(expectedType != null);
+    if (isReturn &&
+        !isArrow &&
+        !isValidReturn(declaredReturnType, actualType, isReturnFromAsync)) {
+      TreeNode parent = expression.parent;
+      Expression errorNode = helper.wrapInCompileTimeError(
+          expression, messageReturnFromVoidFunction);
+      parent?.replaceChild(expression, errorNode);
+      return errorNode;
+    }
     expectedType = greatestClosure(coreTypes, expectedType);
 
     DartType initialExpectedType = expectedType;
@@ -587,6 +639,28 @@
         expectedType = futuredExpectedType;
       }
     }
+    if (isReturn && !isArrow) {
+      if (expectedType is VoidType) {
+        isVoidAllowed = true;
+        if (actualType is! VoidType &&
+            actualType is! DynamicType &&
+            !isNull(actualType)) {
+          // Error: not assignable.  Perform error recovery.
+          TreeNode parent = expression.parent;
+          Expression errorNode = helper.wrapInCompileTimeError(
+              expression, messageReturnFromVoidFunction);
+          parent?.replaceChild(expression, errorNode);
+          return errorNode;
+        }
+      } else {
+        DartType flattened = typeSchemaEnvironment.unfutureType(expectedType);
+        if (flattened is VoidType) {
+          isVoidAllowed = true;
+        } else {
+          isVoidAllowed = expectedType is DynamicType;
+        }
+      }
+    }
 
     // We don't need to insert assignability checks when doing top level type
     // inference since top level type inference only cares about the type that
@@ -623,6 +697,15 @@
       }
     }
 
+    if (actualType is VoidType && !isVoidAllowed) {
+      // Error: not assignable.  Perform error recovery.
+      TreeNode parent = expression.parent;
+      Expression errorNode =
+          helper.wrapInCompileTimeError(expression, messageVoidExpression);
+      parent?.replaceChild(expression, errorNode);
+      return errorNode;
+    }
+
     if (expectedType == null ||
         typeSchemaEnvironment.isSubtypeOf(actualType, expectedType)) {
       // Types are compatible.
@@ -660,6 +743,67 @@
     }
   }
 
+  bool isValidReturn(
+      DartType returnType, DartType expressionType, bool isAsync) {
+    final DartType t = returnType;
+    final DartType s = expressionType;
+    if (!isAsync) {
+      if (t is DynamicType) {
+        // * `return exp;` where `exp` has static type `S` is a valid return if:
+        //   * `T` is `dynamic`
+        return true;
+      }
+
+      if (t is VoidType) {
+        // * `return exp;` where `exp` has static type `S` is a valid return if:
+        //   * `T` is `void`
+        //   * and `S` is `void` or `dynamic` or `Null`
+        return s is VoidType || s is DynamicType || isNull(s);
+      } else {
+        // * `return exp;` where `exp` has static type `S` is a valid return if:
+        //   * `T` is not `void`
+        //   * and `S` is not `void`
+        //   * and `S` is assignable to `T`
+        return s is! VoidType;
+      }
+    }
+    final DartType flattenT = typeSchemaEnvironment.unfutureType(t);
+
+    // * `return exp;` where `exp` has static type `S` is a valid return if:
+    //   * `flatten(T)` is `dynamic` or `Null`
+    if (flattenT is DynamicType || isNull(flattenT)) return true;
+
+    // * `return exp;` where `exp` has static type `S` is a valid return if:
+    //   * `T` is `void`
+    //   * and `S` is `void`, `dynamic` or `Null`
+    if (t is VoidType) {
+      if (s is VoidType || s is DynamicType || isNull(s)) return true;
+    } else {
+      final DartType flattenS = typeSchemaEnvironment.unfutureType(s);
+      // * `return exp;` where `exp` has static type `S` is a valid return if:
+      //   * `T` is not `void`
+      //   * `flatten(T)` is `void`
+      //   * and `flatten(S)` is `void`, `dynamic` or `Null`
+      if (flattenT is VoidType) {
+        if (flattenS is VoidType ||
+            flattenS is DynamicType ||
+            isNull(flattenS)) {
+          return true;
+        }
+      }
+
+      // * `return exp;` where `exp` has static type `S` is a valid return if:
+      //   * `T` is not `void`
+      //   * and `flatten(S)` is not `void`
+      if (flattenS is! VoidType) return true;
+    }
+    return false;
+  }
+
+  bool isNull(DartType type) {
+    return type is InterfaceType && type.classNode == coreTypes.nullClass;
+  }
+
   /// Finds a member of [receiverType] called [name], and if it is found,
   /// reports it through instrumentation using [fileOffset].
   ///
@@ -1087,7 +1231,8 @@
       Factory<Expression, Statement, Initializer, Type> factory,
       kernel.Expression expression,
       DartType typeContext,
-      bool typeNeeded);
+      bool typeNeeded,
+      {bool isVoidAllowed});
 
   @override
   void inferFieldInitializer<Expression, Statement, Initializer, Type>(
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index 77ca5a3..30473ab 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -372,6 +372,7 @@
 UnterminatedString/script8: Fail
 UnterminatedToken/analyzerCode: Fail
 UnterminatedToken/example: Fail
+VoidExpression/analyzerCode: Fail
 WebLiteralCannotBeRepresentedExactly/analyzerCode: Fail
 WebLiteralCannotBeRepresentedExactly/example: Fail
 YieldAsIdentifier/example: Fail
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 7c48b34..c47b557 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -2618,3 +2618,19 @@
   severity: ERROR
   script: |
     class Hest<X extends Y Function<Y>(Y)> {}
+
+VoidExpression:
+  template: "This expression has type 'void' and can't be used."
+  severity: ERROR_LEGACY_WARNING
+  statement: |
+    {
+      void x;
+      var y = x;
+    }
+
+ReturnFromVoidFunction:
+  template: "Can't return a value from a void function."
+  severity: ERROR_LEGACY_WARNING
+  analyzerCode: RETURN_OF_INVALID_TYPE
+  dart2jsCode: "*fatal*"
+  declaration: "void foo() { return 1; }"
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 45c3553..2d2e2b7 100644
--- a/pkg/front_end/test/incremental_load_from_dill_test.dart
+++ b/pkg/front_end/test/incremental_load_from_dill_test.dart
@@ -55,8 +55,8 @@
   ];
 
   @override
-  void cleanUp(TestDescription description, Result result) {
-    cleanupHelper?.outDir?.deleteSync(recursive: true);
+  Future<void> cleanUp(TestDescription description, Result result) async {
+    await cleanupHelper?.outDir?.delete(recursive: true);
   }
 
   TestData cleanupHelper;
@@ -343,7 +343,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/testcases/expression.status b/pkg/front_end/testcases/expression.status
index 87869b0..e9ab4a8 100644
--- a/pkg/front_end/testcases/expression.status
+++ b/pkg/front_end/testcases/expression.status
@@ -1,3 +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.
+# 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/inference/block_bodied_lambdas_void_context.dart.strong.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.strong.expect
index bdd35f6..ecfd44f 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.strong.expect
@@ -5,7 +5,9 @@
 static method f() → dynamic {
   core::List<core::int> o;
   o.{core::Iterable::forEach}((core::int i) → void {
-    return i.{core::num::+}(1);
+    return let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart:12:33: Error: Can't return a value from a void function.
+    return i /*@target=num::+*/ + 1;
+                                ^" in let final dynamic #t2 = i.{core::num::+}(1) in null;
   });
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.strong.transformed.expect
index bdd35f6..9b35c93 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart.strong.transformed.expect
@@ -5,7 +5,9 @@
 static method f() → dynamic {
   core::List<core::int> o;
   o.{core::Iterable::forEach}((core::int i) → void {
-    return i.{core::num::+}(1);
+    return let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/block_bodied_lambdas_void_context.dart:12:33: Error: Can't return a value from a void function.
+    return i /*@target=num::+*/ + 1;
+                                ^" in let final core::int #t2 = i.{core::num::+}(1) in null;
   });
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_use_of_void_local.dart.strong.expect b/pkg/front_end/testcases/inference/infer_use_of_void_local.dart.strong.expect
index f8773b2..007fd21 100644
--- a/pkg/front_end/testcases/inference/infer_use_of_void_local.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_use_of_void_local.dart.strong.expect
@@ -1,8 +1,16 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference/infer_use_of_void_local.dart:11:26: Error: This expression has type 'void' and can't be used.
+//   var /*@type=void*/ x = f();
+//                          ^
+
 library test;
 import self as self;
 
 static method f() → void {}
 static method g() → void {
-  void x = self::f();
+  void x = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_use_of_void_local.dart:11:26: Error: This expression has type 'void' and can't be used.
+  var /*@type=void*/ x = f();
+                         ^" in let final dynamic #t2 = self::f() in null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_use_of_void_local.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_use_of_void_local.dart.strong.transformed.expect
index f8773b2..b7f9b2f 100644
--- a/pkg/front_end/testcases/inference/infer_use_of_void_local.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_use_of_void_local.dart.strong.transformed.expect
@@ -1,8 +1,16 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference/infer_use_of_void_local.dart:11:26: Error: This expression has type 'void' and can't be used.
+//   var /*@type=void*/ x = f();
+//                          ^
+
 library test;
 import self as self;
 
 static method f() → void {}
 static method g() → void {
-  void x = self::f();
+  void x = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_use_of_void_local.dart:11:26: Error: This expression has type 'void' and can't be used.
+  var /*@type=void*/ x = f();
+                         ^" in let final void #t2 = self::f() in null;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_variable_void.dart.strong.expect b/pkg/front_end/testcases/inference/infer_variable_void.dart.strong.expect
index 3bfd2e6..2464498 100644
--- a/pkg/front_end/testcases/inference/infer_variable_void.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_variable_void.dart.strong.expect
@@ -1,3 +1,9 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference/infer_variable_void.dart:9:55: Error: This expression has type 'void' and can't be used.
+// var /*@topType=void*/ x = /*info:USE_OF_VOID_RESULT*/ f();
+//                                                       ^
+
 library test;
 import self as self;
 
diff --git a/pkg/front_end/testcases/inference/infer_variable_void.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_variable_void.dart.strong.transformed.expect
index 3bfd2e6..2464498 100644
--- a/pkg/front_end/testcases/inference/infer_variable_void.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_variable_void.dart.strong.transformed.expect
@@ -1,3 +1,9 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference/infer_variable_void.dart:9:55: Error: This expression has type 'void' and can't be used.
+// var /*@topType=void*/ x = /*info:USE_OF_VOID_RESULT*/ f();
+//                                                       ^
+
 library test;
 import self as self;
 
diff --git a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.expect b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.expect
index 0d3fd7d..eb90747 100644
--- a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.expect
@@ -1,3 +1,9 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart:27:73: Error: This expression has type 'void' and can't be used.
+//   var /*@type=void*/ y = /*info:USE_OF_VOID_RESULT*/ /*@typeArgs=void*/ run(
+//                                                                         ^
+
 library test;
 import self as self;
 import "dart:core" as core;
@@ -17,7 +23,9 @@
     core::print("running");
   }
   dynamic x = self::run<dynamic>(printRunning);
-  void y = self::run<void>(printRunning);
+  void y = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart:27:73: Error: This expression has type 'void' and can't be used.
+  var /*@type=void*/ y = /*info:USE_OF_VOID_RESULT*/ /*@typeArgs=void*/ run(
+                                                                        ^" in let final dynamic #t2 = self::run<void>(printRunning) in null;
   x = 123;
   x = "hi";
   y = 123;
diff --git a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
index 0d3fd7d..4f71280 100644
--- a/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
@@ -1,3 +1,9 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart:27:73: Error: This expression has type 'void' and can't be used.
+//   var /*@type=void*/ y = /*info:USE_OF_VOID_RESULT*/ /*@typeArgs=void*/ run(
+//                                                                         ^
+
 library test;
 import self as self;
 import "dart:core" as core;
@@ -17,7 +23,9 @@
     core::print("running");
   }
   dynamic x = self::run<dynamic>(printRunning);
-  void y = self::run<void>(printRunning);
+  void y = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/void_return_type_subtypes_dynamic.dart:27:73: Error: This expression has type 'void' and can't be used.
+  var /*@type=void*/ y = /*info:USE_OF_VOID_RESULT*/ /*@typeArgs=void*/ run(
+                                                                        ^" in let final void #t2 = self::run<void>(printRunning) in null;
   x = 123;
   x = "hi";
   y = 123;
diff --git a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.expect
index 9a42ff3..6b4745f 100644
--- a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.expect
@@ -1,3 +1,9 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference_new/infer_use_of_void.dart:17:59: Error: This expression has type 'void' and can't be used.
+//     new C(). /*info:USE_OF_VOID_RESULT*/ /*@target=C::f*/ f();
+//                                                           ^
+
 library test;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.transformed.expect
index 9a42ff3..6b4745f 100644
--- a/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_use_of_void.dart.strong.transformed.expect
@@ -1,3 +1,9 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference_new/infer_use_of_void.dart:17:59: Error: This expression has type 'void' and can't be used.
+//     new C(). /*info:USE_OF_VOID_RESULT*/ /*@target=C::f*/ f();
+//                                                           ^
+
 library test;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.expect b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.expect
index 5417786..5d708e6 100644
--- a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.expect
@@ -1,3 +1,9 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart:19:74: Error: This expression has type 'void' and can't be used.
+// var /*@topType=void*/ y = /*info:USE_OF_VOID_RESULT*/ /*@typeArgs=void*/ run(
+//                                                                          ^
+
 library test;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
index 5417786..5d708e6 100644
--- a/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart.strong.transformed.expect
@@ -1,3 +1,9 @@
+// Errors:
+//
+// pkg/front_end/testcases/inference_new/void_return_type_subtypes_dynamic.dart:19:74: Error: This expression has type 'void' and can't be used.
+// var /*@topType=void*/ y = /*info:USE_OF_VOID_RESULT*/ /*@typeArgs=void*/ run(
+//                                                                          ^
+
 library test;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/rasta/super.dart.strong.expect b/pkg/front_end/testcases/rasta/super.dart.strong.expect
index d4f9d08..f65cbcd 100644
--- a/pkg/front_end/testcases/rasta/super.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.strong.expect
@@ -222,6 +222,10 @@
 //     use(super.m -= 42);
 //               ^
 //
+// pkg/front_end/testcases/rasta/super.dart:146:15: Error: This expression has type 'void' and can't be used.
+//     use(super.m());
+//               ^
+//
 // pkg/front_end/testcases/rasta/super.dart:147:11: Error: Too many positional arguments: 0 allowed, 1 given.
 //     super.m(87);
 //           ^
@@ -230,6 +234,10 @@
 //     use(super.m(87));
 //               ^
 //
+// pkg/front_end/testcases/rasta/super.dart:148:15: Error: This expression has type 'void' and can't be used.
+//     use(super.m(87));
+//               ^
+//
 // pkg/front_end/testcases/rasta/super.dart:149:11: Error: Too many positional arguments: 0 allowed, 1 given.
 //     super.n(87);
 //           ^
@@ -237,6 +245,10 @@
 // pkg/front_end/testcases/rasta/super.dart:150:15: Error: Too many positional arguments: 0 allowed, 1 given.
 //     use(super.n(87));
 //               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:150:15: Error: This expression has type 'void' and can't be used.
+//     use(super.n(87));
+//               ^
 
 library;
 import self as self;
@@ -426,11 +438,17 @@
     super.{self::A::[]}(87).call();
     self::use(super.{self::A::[]}(87).call());
     super.{self::A::m}();
-    self::use(super.{self::A::m}());
+    self::use(let dynamic _ = null in let final dynamic #t43 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:146:15: Error: This expression has type 'void' and can't be used.
+    use(super.m());
+              ^" in let final dynamic #t44 = super.{self::A::m}() in null);
     super.{self::A::m}(87);
-    self::use(super.{self::A::m}(87));
+    self::use(let dynamic _ = null in let final dynamic #t45 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:148:15: Error: This expression has type 'void' and can't be used.
+    use(super.m(87));
+              ^" in let final dynamic #t46 = super.{self::A::m}(87) in null);
     super.{self::A::n}(87);
-    self::use(super.{self::A::n}(87));
+    self::use(let dynamic _ = null in let final dynamic #t47 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:150:15: Error: This expression has type 'void' and can't be used.
+    use(super.n(87));
+              ^" in let final dynamic #t48 = super.{self::A::n}(87) in null);
     super.{self::A::a} = 42;
     self::use(super.{self::A::a} = 42);
     super.{self::A::b} = 42;
@@ -450,35 +468,35 @@
     super.{self::B::i} = 42;
     self::use(super.{self::B::i} = 42);
     super.{self::A::[]=}(87, 42);
-    self::use(let final core::int #t43 = 87 in let final core::int #t44 = 42 in let final void #t45 = super.{self::A::[]=}(#t43, #t44) in #t44);
+    self::use(let final core::int #t49 = 87 in let final core::int #t50 = 42 in let final void #t51 = super.{self::A::[]=}(#t49, #t50) in #t50);
     super.m = 42;
     self::use(super.m = 42);
     super.{self::A::n} = 42;
     self::use(super.{self::A::n} = 42);
     super.{self::A::a}.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : null;
-    self::use(let final dynamic #t46 = super.{self::A::a} in #t46.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t46);
+    self::use(let final dynamic #t52 = super.{self::A::a} in #t52.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t52);
     super.{self::B::b}.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : null;
-    self::use(let final dynamic #t47 = super.{self::B::b} in #t47.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t47);
+    self::use(let final dynamic #t53 = super.{self::B::b} in #t53.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t53);
     super.{self::A::c}.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : null;
-    self::use(let final dynamic #t48 = super.{self::A::c} in #t48.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t48);
+    self::use(let final dynamic #t54 = super.{self::A::c} in #t54.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t54);
     super.{self::B::d}.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : null;
-    self::use(let final dynamic #t49 = super.{self::B::d} in #t49.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t49);
+    self::use(let final dynamic #t55 = super.{self::B::d} in #t55.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t55);
     super.{self::A::e}.{core::Object::==}(null) ?{dynamic} super.e = 42 : null;
-    self::use(let final dynamic #t50 = super.{self::A::e} in #t50.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t50);
+    self::use(let final dynamic #t56 = super.{self::A::e} in #t56.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t56);
     super.{self::A::f}.{core::Object::==}(null) ?{dynamic} super.f = 42 : null;
-    self::use(let final dynamic #t51 = super.{self::A::f} in #t51.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t51);
+    self::use(let final dynamic #t57 = super.{self::A::f} in #t57.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t57);
     super.g.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : null;
-    self::use(let final dynamic #t52 = super.g in #t52.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t52);
+    self::use(let final dynamic #t58 = super.g in #t58.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t58);
     super.{self::A::h}.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : null;
-    self::use(let final dynamic #t53 = super.{self::A::h} in #t53.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t53);
+    self::use(let final dynamic #t59 = super.{self::A::h} in #t59.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t59);
     super.{self::A::i}.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : null;
-    self::use(let final dynamic #t54 = super.{self::A::i} in #t54.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t54);
-    let final core::int #t55 = 87 in super.{self::A::[]}(#t55).{core::Object::==}(null) ?{dynamic} let final core::int #t56 = 42 in let final void #t57 = super.{self::A::[]=}(#t55, #t56) in #t56 : null;
-    self::use(let final core::int #t58 = 87 in let final dynamic #t59 = super.{self::A::[]}(#t58) in #t59.{core::Object::==}(null) ?{dynamic} let final core::int #t60 = 42 in let final void #t61 = super.{self::A::[]=}(#t58, #t60) in #t60 : #t59);
+    self::use(let final dynamic #t60 = super.{self::A::i} in #t60.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t60);
+    let final core::int #t61 = 87 in super.{self::A::[]}(#t61).{core::Object::==}(null) ?{dynamic} let final core::int #t62 = 42 in let final void #t63 = super.{self::A::[]=}(#t61, #t62) in #t62 : null;
+    self::use(let final core::int #t64 = 87 in let final dynamic #t65 = super.{self::A::[]}(#t64) in #t65.{core::Object::==}(null) ?{dynamic} let final core::int #t66 = 42 in let final void #t67 = super.{self::A::[]=}(#t64, #t66) in #t66 : #t65);
     super.{self::A::m}.{core::Object::==}(null) ?{core::Object} super.m = 42 : null;
-    self::use(let final () → void #t62 = super.{self::A::m} in #t62.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t62);
+    self::use(let final () → void #t68 = super.{self::A::m} in #t68.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t68);
     super.{self::A::n}.{core::Object::==}(null) ?{core::Object} super.{self::A::n} = 42 : null;
-    self::use(let final () → void #t63 = super.{self::A::n} in #t63.{core::Object::==}(null) ?{core::Object} super.{self::A::n} = 42 : #t63);
+    self::use(let final () → void #t69 = super.{self::A::n} in #t69.{core::Object::==}(null) ?{core::Object} super.{self::A::n} = 42 : #t69);
     super.{self::A::a} = super.{self::A::a}.+(42);
     self::use(super.{self::A::a} = super.{self::A::a}.+(42));
     super.{self::A::b} = super.{self::B::b}.+(42);
@@ -497,21 +515,21 @@
     self::use(super.{self::A::h} = super.{self::A::h}.+(42));
     super.{self::B::i} = super.{self::A::i}.+(42);
     self::use(super.{self::B::i} = super.{self::A::i}.+(42));
-    let final core::int #t64 = 87 in super.{self::A::[]=}(#t64, super.{self::A::[]}(#t64).+(42));
-    self::use(let final core::int #t65 = 87 in let final dynamic #t66 = super.{self::A::[]}(#t65).+(42) in let final void #t67 = super.{self::A::[]=}(#t65, #t66) in #t66);
-    super.m = let final dynamic #t68 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:222:13: Error: The method '+' isn't defined for the class '() \u8594 void'.
+    let final core::int #t70 = 87 in super.{self::A::[]=}(#t70, super.{self::A::[]}(#t70).+(42));
+    self::use(let final core::int #t71 = 87 in let final dynamic #t72 = super.{self::A::[]}(#t71).+(42) in let final void #t73 = super.{self::A::[]=}(#t71, #t72) in #t72);
+    super.m = let final dynamic #t74 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:222:13: Error: The method '+' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     super.m += 42;
             ^";
-    self::use(super.m = let final dynamic #t69 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:223:17: Error: The method '+' isn't defined for the class '() \u8594 void'.
+    self::use(super.m = let final dynamic #t75 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:223:17: Error: The method '+' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     use(super.m += 42);
                 ^");
-    super.{self::A::n} = let final dynamic #t70 = super.{self::A::n} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:224:13: Error: The method '+' isn't defined for the class '() \u8594 void'.
+    super.{self::A::n} = let final dynamic #t76 = super.{self::A::n} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:224:13: Error: The method '+' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     super.n += 42;
             ^";
-    self::use(super.{self::A::n} = let final dynamic #t71 = super.{self::A::n} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:225:17: Error: The method '+' isn't defined for the class '() \u8594 void'.
+    self::use(super.{self::A::n} = let final dynamic #t77 = super.{self::A::n} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:225:17: Error: The method '+' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     use(super.n += 42);
                 ^");
@@ -533,21 +551,21 @@
     self::use(super.{self::A::h} = super.{self::A::h}.-(42));
     super.{self::B::i} = super.{self::A::i}.-(42);
     self::use(super.{self::B::i} = super.{self::A::i}.-(42));
-    let final core::int #t72 = 87 in super.{self::A::[]=}(#t72, super.{self::A::[]}(#t72).-(42));
-    self::use(let final core::int #t73 = 87 in let final dynamic #t74 = super.{self::A::[]}(#t73).-(42) in let final void #t75 = super.{self::A::[]=}(#t73, #t74) in #t74);
-    super.m = let final dynamic #t76 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:247:13: Error: The method '-' isn't defined for the class '() \u8594 void'.
+    let final core::int #t78 = 87 in super.{self::A::[]=}(#t78, super.{self::A::[]}(#t78).-(42));
+    self::use(let final core::int #t79 = 87 in let final dynamic #t80 = super.{self::A::[]}(#t79).-(42) in let final void #t81 = super.{self::A::[]=}(#t79, #t80) in #t80);
+    super.m = let final dynamic #t82 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:247:13: Error: The method '-' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     super.m -= 42;
             ^";
-    self::use(super.m = let final dynamic #t77 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:248:17: Error: The method '-' isn't defined for the class '() \u8594 void'.
+    self::use(super.m = let final dynamic #t83 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:248:17: Error: The method '-' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     use(super.m -= 42);
                 ^");
-    super.{self::A::n} = let final dynamic #t78 = super.{self::A::n} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:249:13: Error: The method '-' isn't defined for the class '() \u8594 void'.
+    super.{self::A::n} = let final dynamic #t84 = super.{self::A::n} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:249:13: Error: The method '-' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     super.n -= 42;
             ^";
-    self::use(super.{self::A::n} = let final dynamic #t79 = super.{self::A::n} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:250:17: Error: The method '-' isn't defined for the class '() \u8594 void'.
+    self::use(super.{self::A::n} = let final dynamic #t85 = super.{self::A::n} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/super.dart:250:17: Error: The method '-' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     use(super.n -= 42);
                 ^");
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index b5d4f7b..5ef2a39 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -220,3 +220,5 @@
 co19_language_metadata_syntax_t04: RuntimeError # Fasta doesn't recover well
 
 external_import: RuntimeError # The native extension to import doesn't exist. This is ok.
+
+inference/void_return_type_subtypes_dynamic: RuntimeError
diff --git a/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect b/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect
index b5aeddb..7ce7859 100644
--- a/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect
+++ b/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect
@@ -200,6 +200,10 @@
 //     use(super.m -= 42);
 //               ^
 //
+// pkg/front_end/testcases/super_rasta_copy.dart:138:15: Error: This expression has type 'void' and can't be used.
+//     use(super.m());
+//               ^
+//
 // pkg/front_end/testcases/super_rasta_copy.dart:139:11: Error: Too many positional arguments: 0 allowed, 1 given.
 //     super.m(87);
 //           ^
@@ -207,6 +211,10 @@
 // pkg/front_end/testcases/super_rasta_copy.dart:140:15: Error: Too many positional arguments: 0 allowed, 1 given.
 //     use(super.m(87));
 //               ^
+//
+// pkg/front_end/testcases/super_rasta_copy.dart:140:15: Error: This expression has type 'void' and can't be used.
+//     use(super.m(87));
+//               ^
 
 library;
 import self as self;
@@ -362,9 +370,13 @@
     super.{self::A::[]}(87).call();
     self::use(super.{self::A::[]}(87).call());
     super.{self::A::m}();
-    self::use(super.{self::A::m}());
+    self::use(let dynamic _ = null in let final dynamic #t35 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:138:15: Error: This expression has type 'void' and can't be used.
+    use(super.m());
+              ^" in let final dynamic #t36 = super.{self::A::m}() in null);
     super.{self::A::m}(87);
-    self::use(super.{self::A::m}(87));
+    self::use(let dynamic _ = null in let final dynamic #t37 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:140:15: Error: This expression has type 'void' and can't be used.
+    use(super.m(87));
+              ^" in let final dynamic #t38 = super.{self::A::m}(87) in null);
     super.{self::A::a} = 42;
     self::use(super.{self::A::a} = 42);
     super.{self::A::b} = 42;
@@ -384,31 +396,31 @@
     super.{self::B::i} = 42;
     self::use(super.{self::B::i} = 42);
     super.{self::A::[]=}(87, 42);
-    self::use(let final core::int #t35 = 87 in let final core::int #t36 = 42 in let final void #t37 = super.{self::A::[]=}(#t35, #t36) in #t36);
+    self::use(let final core::int #t39 = 87 in let final core::int #t40 = 42 in let final void #t41 = super.{self::A::[]=}(#t39, #t40) in #t40);
     super.m = 42;
     self::use(super.m = 42);
     super.{self::A::a}.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : null;
-    self::use(let final dynamic #t38 = super.{self::A::a} in #t38.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t38);
+    self::use(let final dynamic #t42 = super.{self::A::a} in #t42.{core::Object::==}(null) ?{dynamic} super.{self::A::a} = 42 : #t42);
     super.{self::B::b}.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : null;
-    self::use(let final dynamic #t39 = super.{self::B::b} in #t39.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t39);
+    self::use(let final dynamic #t43 = super.{self::B::b} in #t43.{core::Object::==}(null) ?{dynamic} super.{self::A::b} = 42 : #t43);
     super.{self::A::c}.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : null;
-    self::use(let final dynamic #t40 = super.{self::A::c} in #t40.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t40);
+    self::use(let final dynamic #t44 = super.{self::A::c} in #t44.{core::Object::==}(null) ?{dynamic} super.{self::B::c} = 42 : #t44);
     super.{self::B::d}.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : null;
-    self::use(let final dynamic #t41 = super.{self::B::d} in #t41.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t41);
+    self::use(let final dynamic #t45 = super.{self::B::d} in #t45.{core::Object::==}(null) ?{dynamic} super.{self::A::d} = 42 : #t45);
     super.{self::A::e}.{core::Object::==}(null) ?{dynamic} super.e = 42 : null;
-    self::use(let final dynamic #t42 = super.{self::A::e} in #t42.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t42);
+    self::use(let final dynamic #t46 = super.{self::A::e} in #t46.{core::Object::==}(null) ?{dynamic} super.e = 42 : #t46);
     super.{self::A::f}.{core::Object::==}(null) ?{dynamic} super.f = 42 : null;
-    self::use(let final dynamic #t43 = super.{self::A::f} in #t43.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t43);
+    self::use(let final dynamic #t47 = super.{self::A::f} in #t47.{core::Object::==}(null) ?{dynamic} super.f = 42 : #t47);
     super.g.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : null;
-    self::use(let final dynamic #t44 = super.g in #t44.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t44);
+    self::use(let final dynamic #t48 = super.g in #t48.{core::Object::==}(null) ?{dynamic} super.{self::A::g} = 42 : #t48);
     super.{self::A::h}.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : null;
-    self::use(let final dynamic #t45 = super.{self::A::h} in #t45.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t45);
+    self::use(let final dynamic #t49 = super.{self::A::h} in #t49.{core::Object::==}(null) ?{dynamic} super.{self::A::h} = 42 : #t49);
     super.{self::A::i}.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : null;
-    self::use(let final dynamic #t46 = super.{self::A::i} in #t46.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t46);
-    let final core::int #t47 = 87 in super.{self::A::[]}(#t47).{core::Object::==}(null) ?{dynamic} let final core::int #t48 = 42 in let final void #t49 = super.{self::A::[]=}(#t47, #t48) in #t48 : null;
-    self::use(let final core::int #t50 = 87 in let final dynamic #t51 = super.{self::A::[]}(#t50) in #t51.{core::Object::==}(null) ?{dynamic} let final core::int #t52 = 42 in let final void #t53 = super.{self::A::[]=}(#t50, #t52) in #t52 : #t51);
+    self::use(let final dynamic #t50 = super.{self::A::i} in #t50.{core::Object::==}(null) ?{dynamic} super.{self::B::i} = 42 : #t50);
+    let final core::int #t51 = 87 in super.{self::A::[]}(#t51).{core::Object::==}(null) ?{dynamic} let final core::int #t52 = 42 in let final void #t53 = super.{self::A::[]=}(#t51, #t52) in #t52 : null;
+    self::use(let final core::int #t54 = 87 in let final dynamic #t55 = super.{self::A::[]}(#t54) in #t55.{core::Object::==}(null) ?{dynamic} let final core::int #t56 = 42 in let final void #t57 = super.{self::A::[]=}(#t54, #t56) in #t56 : #t55);
     super.{self::A::m}.{core::Object::==}(null) ?{core::Object} super.m = 42 : null;
-    self::use(let final () → void #t54 = super.{self::A::m} in #t54.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t54);
+    self::use(let final () → void #t58 = super.{self::A::m} in #t58.{core::Object::==}(null) ?{core::Object} super.m = 42 : #t58);
     super.{self::A::a} = super.{self::A::a}.+(42);
     self::use(super.{self::A::a} = super.{self::A::a}.+(42));
     super.{self::A::b} = super.{self::B::b}.+(42);
@@ -427,13 +439,13 @@
     self::use(super.{self::A::h} = super.{self::A::h}.+(42));
     super.{self::B::i} = super.{self::A::i}.+(42);
     self::use(super.{self::B::i} = super.{self::A::i}.+(42));
-    let final core::int #t55 = 87 in super.{self::A::[]=}(#t55, super.{self::A::[]}(#t55).+(42));
-    self::use(let final core::int #t56 = 87 in let final dynamic #t57 = super.{self::A::[]}(#t56).+(42) in let final void #t58 = super.{self::A::[]=}(#t56, #t57) in #t57);
-    super.m = let final dynamic #t59 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:208:13: Error: The method '+' isn't defined for the class '() \u8594 void'.
+    let final core::int #t59 = 87 in super.{self::A::[]=}(#t59, super.{self::A::[]}(#t59).+(42));
+    self::use(let final core::int #t60 = 87 in let final dynamic #t61 = super.{self::A::[]}(#t60).+(42) in let final void #t62 = super.{self::A::[]=}(#t60, #t61) in #t61);
+    super.m = let final dynamic #t63 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:208:13: Error: The method '+' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     super.m += 42;
             ^";
-    self::use(super.m = let final dynamic #t60 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:209:17: Error: The method '+' isn't defined for the class '() \u8594 void'.
+    self::use(super.m = let final dynamic #t64 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:209:17: Error: The method '+' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
     use(super.m += 42);
                 ^");
@@ -455,13 +467,13 @@
     self::use(super.{self::A::h} = super.{self::A::h}.-(42));
     super.{self::B::i} = super.{self::A::i}.-(42);
     self::use(super.{self::B::i} = super.{self::A::i}.-(42));
-    let final core::int #t61 = 87 in super.{self::A::[]=}(#t61, super.{self::A::[]}(#t61).-(42));
-    self::use(let final core::int #t62 = 87 in let final dynamic #t63 = super.{self::A::[]}(#t62).-(42) in let final void #t64 = super.{self::A::[]=}(#t62, #t63) in #t63);
-    super.m = let final dynamic #t65 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:231:13: Error: The method '-' isn't defined for the class '() \u8594 void'.
+    let final core::int #t65 = 87 in super.{self::A::[]=}(#t65, super.{self::A::[]}(#t65).-(42));
+    self::use(let final core::int #t66 = 87 in let final dynamic #t67 = super.{self::A::[]}(#t66).-(42) in let final void #t68 = super.{self::A::[]=}(#t66, #t67) in #t67);
+    super.m = let final dynamic #t69 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:231:13: Error: The method '-' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     super.m -= 42;
             ^";
-    self::use(super.m = let final dynamic #t66 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:232:17: Error: The method '-' isn't defined for the class '() \u8594 void'.
+    self::use(super.m = let final dynamic #t70 = super.{self::A::m} in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/super_rasta_copy.dart:232:17: Error: The method '-' isn't defined for the class '() \u8594 void'.
 Try correcting the name to the name of an existing method, or defining a method named '-'.
     use(super.m -= 42);
                 ^");
diff --git a/pkg/pkg.status b/pkg/pkg.status
index e2a1a1a..54eb793 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -95,6 +95,7 @@
 [ $runtime == vm ]
 analysis_server/test/benchmarks_test: Pass, Slow
 analysis_server/test/completion_test: Pass, Slow
+analysis_server/test/context_manager_test: Fail
 analysis_server/test/domain_completion_test: Pass, Slow
 analysis_server/test/edit/refactoring_test: Pass, Slow
 analysis_server/test/integration/*: Pass, Slow
@@ -113,7 +114,10 @@
 analyzer/test/file_system/physical_resource_provider_test: Pass, Fail # Issue 25472
 analyzer/test/generated/hint_code_driver_test: Pass, Slow
 analyzer/test/generated/non_error_resolver_kernel_test: Pass, Slow
+analyzer/test/generated/static_type_warning_code_kernel_test: Fail
+analyzer/test/generated/static_warning_code_kernel_test: Fail
 analyzer/test/generated/strong_mode_driver_test: Pass, Slow
+analyzer/test/generated/strong_mode_kernel_test: Fail
 analyzer/test/src/dart/analysis/driver_resolution_kernel_test: Pass, Slow
 analyzer/test/src/dart/analysis/driver_resolution_test: Pass, Slow
 analyzer/test/src/dart/analysis/driver_test: Pass, Slow
diff --git a/pkg/testing/lib/src/chain.dart b/pkg/testing/lib/src/chain.dart
index 2a82f99..53256ae 100644
--- a/pkg/testing/lib/src/chain.dart
+++ b/pkg/testing/lib/src/chain.dart
@@ -293,7 +293,7 @@
     return result.copyWithOutcome(outcome);
   }
 
-  void cleanUp(TestDescription description, Result result) {}
+  Future<void> cleanUp(TestDescription description, Result result) => null;
 }
 
 abstract class Step<I, O, C extends ChainContext> {
diff --git a/runtime/lib/convert_patch.dart b/runtime/lib/convert_patch.dart
index a2c802d..34fa1e6 100644
--- a/runtime/lib/convert_patch.dart
+++ b/runtime/lib/convert_patch.dart
@@ -621,22 +621,6 @@
   }
 
   /**
-   * Create a _NumberBuffer containing the digits from [start] to [chunkEnd].
-   *
-   * This creates a number buffer and initializes it with the part of the
-   * number literal ending the current chunk
-   */
-  void createNumberBuffer(int start) {
-    assert(start >= 0);
-    assert(start < chunkEnd);
-    int length = chunkEnd - start;
-    var buffer = new _NumberBuffer(length);
-    copyCharsToList(start, chunkEnd, buffer.list, 0);
-    buffer.length = length;
-    return buffer;
-  }
-
-  /**
    * Continues parsing a partial value.
    */
   int parsePartial(int position) {
diff --git a/runtime/observatory/.packages b/runtime/observatory/.packages
index 08b8b0b..69347be 100644
--- a/runtime/observatory/.packages
+++ b/runtime/observatory/.packages
@@ -3,7 +3,6 @@
 collection:../../third_party/observatory_pub_packages/packages/collection/lib
 intl:../../third_party/observatory_pub_packages/packages/intl/lib
 logging:../../third_party/observatory_pub_packages/packages/logging/lib
-matcher:../../third_party/observatory_pub_packages/packages/matcher/lib
 meta:../../third_party/observatory_pub_packages/packages/meta/lib
 observable:../../third_party/observatory_pub_packages/packages/observable/lib
 path:../../third_party/observatory_pub_packages/packages/path/lib
@@ -11,4 +10,25 @@
 stack_trace:../../third_party/observatory_pub_packages/packages/stack_trace/lib
 unittest:../../third_party/observatory_pub_packages/packages/unittest/lib
 usage:../../third_party/observatory_pub_packages/packages/usage/lib
-observatory:lib/
+observatory:lib
+
+# Testing only
+async:../../third_party/pkg/async/lib
+boolean_selector:../../third_party/pkg/boolean_selector/lib
+charcode:../../third_party/pkg/charcode/lib
+dart_internal:../../pkg/dart_internal/lib
+http:../../third_party/pkg/http/lib
+http_parser:../../third_party/pkg/http_parser/lib
+matcher:../../third_party/pkg/matcher/lib
+package_config:../../third_party/pkg_tested/package_config/lib
+package_resolver:../../third_party/pkg_tested/package_resolver/lib
+pool:../../third_party/pkg/pool/lib
+pub_semver:../../third_party/pkg/pub_semver/lib
+source_map_stack_trace:../../third_party/pkg/source_map_stack_trace/lib
+source_maps:../../third_party/pkg/source_maps/lib
+source_span:../../third_party/pkg/source_span/lib
+stream_channel:../../third_party/pkg/stream_channel/lib
+string_scanner:../../third_party/pkg/string_scanner/lib
+term_glyph:../../third_party/pkg/term_glyph/lib
+test:../../third_party/pkg/test/lib
+typed_data:../../third_party/pkg/typed_data/lib
diff --git a/runtime/observatory/BUILD.gn b/runtime/observatory/BUILD.gn
index 4c1c2e0..599a35f 100644
--- a/runtime/observatory/BUILD.gn
+++ b/runtime/observatory/BUILD.gn
@@ -32,7 +32,6 @@
                                ])  # Dependencies
 
   args = [
-    "--no-preview-dart-2",
     "-DOBS_VER=${version_string}",
     "-o",
     rebase_path(output),
diff --git a/runtime/observatory/tests/observatory_ui/allocation_profile/element_test.dart b/runtime/observatory/tests/observatory_ui/allocation_profile/element_test.dart
index 5fe996a..3673da4 100644
--- a/runtime/observatory/tests/observatory_ui/allocation_profile/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/allocation_profile/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/allocation_profile.dart';
 import 'package:observatory/src/elements/class_ref.dart';
@@ -32,7 +32,7 @@
     final completer = new Completer<AllocationProfileMock>();
     final repo = new AllocationProfileRepositoryMock(
         getter:
-            expectAsync((M.IsolateRef i, bool gc, bool reset, bool combine) {
+            expectAsync4((M.IsolateRef i, bool gc, bool reset, bool combine) {
       expect(i, equals(isolate));
       expect(gc, isFalse);
       expect(reset, isFalse);
@@ -57,7 +57,7 @@
       int step = 0;
       final repo = new AllocationProfileRepositoryMock(
           getter:
-              expectAsync((M.IsolateRef i, bool gc, bool reset, bool combine) {
+              expectAsync4((M.IsolateRef i, bool gc, bool reset, bool combine) {
         expect(i, equals(isolate));
         expect(combine, isFalse);
         switch (step) {
@@ -100,7 +100,7 @@
       int count = 0;
       final repo = new AllocationProfileRepositoryMock(
           getter:
-              expectAsync((M.IsolateRef i, bool gc, bool reset, bool combine) {
+              expectAsync4((M.IsolateRef i, bool gc, bool reset, bool combine) {
         expect(i, equals(isolate));
         expect(gc, isFalse);
         expect(reset, isFalse);
@@ -151,7 +151,7 @@
       final completer = new Completer<AllocationProfileMock>();
       final repo = new AllocationProfileRepositoryMock(
           getter:
-              expectAsync((M.IsolateRef i, bool gc, bool reset, bool combine) {
+              expectAsync4((M.IsolateRef i, bool gc, bool reset, bool combine) {
         expect(i, equals(isolate));
         expect(gc, isFalse);
         expect(reset, isFalse);
diff --git a/runtime/observatory/tests/observatory_ui/class_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/class_ref/element_test.dart
index 41aeb10..3baccf5 100644
--- a/runtime/observatory/tests/observatory_ui/class_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/class_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/class_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/class_tree/element_test.dart b/runtime/observatory/tests/observatory_ui/class_tree/element_test.dart
index 495e841..ed05811 100644
--- a/runtime/observatory/tests/observatory_ui/class_tree/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/class_tree/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/class_tree.dart';
 import 'package:observatory/src/elements/nav/notify.dart';
 import '../mocks.dart';
@@ -43,12 +43,12 @@
           events,
           notifications,
           new ClassRepositoryMock(
-              object: expectAsync((i) async {
+              object: expectAsync1((i) async {
                 expect(i, equals(isolate));
                 expect(rendered, isFalse);
                 return object;
               }, count: 1),
-              getter: expectAsync((i, id) async {
+              getter: expectAsync2((i, id) async {
                 expect(i, equals(isolate));
                 expect(ids.contains(id), isTrue);
                 switch (id) {
diff --git a/runtime/observatory/tests/observatory_ui/code_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/code_ref/element_test.dart
index 7a65c84..4f9e229 100644
--- a/runtime/observatory/tests/observatory_ui/code_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/code_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/code_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/context_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/context_ref/element_test.dart
index dadeb4d..857f99b 100644
--- a/runtime/observatory/tests/observatory_ui/context_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/context_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/context_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/context_view/element_test.dart b/runtime/observatory/tests/observatory_ui/context_view/element_test.dart
index 6228d54..f2552d3 100644
--- a/runtime/observatory/tests/observatory_ui/context_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/context_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/context_view.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 import 'package:observatory/src/elements/object_common.dart';
@@ -35,7 +35,7 @@
   });
   test('elements created after attachment', () async {
     final contexts = new ContextRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(context.id));
       return context;
diff --git a/runtime/observatory/tests/observatory_ui/cpu_profile/element_test.dart b/runtime/observatory/tests/observatory_ui/cpu_profile/element_test.dart
index 1bba139..a596684 100644
--- a/runtime/observatory/tests/observatory_ui/cpu_profile/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/cpu_profile/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/cpu_profile.dart';
 import 'package:observatory/src/elements/cpu_profile/virtual_tree.dart';
diff --git a/runtime/observatory/tests/observatory_ui/cpu_profile/virtual-tree/element_test.dart b/runtime/observatory/tests/observatory_ui/cpu_profile/virtual-tree/element_test.dart
index cb93e56..1f15445 100644
--- a/runtime/observatory/tests/observatory_ui/cpu_profile/virtual-tree/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/cpu_profile/virtual-tree/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/cpu_profile/virtual_tree.dart';
 import '../../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/cpu_profile_table/element_test.dart b/runtime/observatory/tests/observatory_ui/cpu_profile_table/element_test.dart
index f4bd1c8..9857f12 100644
--- a/runtime/observatory/tests/observatory_ui/cpu_profile_table/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/cpu_profile_table/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/cpu_profile_table.dart';
 import 'package:observatory/src/elements/cpu_profile/virtual_tree.dart';
diff --git a/runtime/observatory/tests/observatory_ui/curly_block/element_test.dart b/runtime/observatory/tests/observatory_ui/curly_block/element_test.dart
index 882f665..e647e5f 100644
--- a/runtime/observatory/tests/observatory_ui/curly_block/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/curly_block/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/curly_block.dart';
 
 main() {
@@ -152,7 +152,7 @@
       await e.onRendered.first;
     });
     test('fires on toggle', () async {
-      e.onToggle.listen(expectAsync((CurlyBlockToggleEvent event) {
+      e.onToggle.listen(expectAsync1((CurlyBlockToggleEvent event) {
         expect(event, isNotNull);
         expect(event.control, equals(e));
       }, count: 1));
@@ -160,7 +160,7 @@
       await e.onRendered.first;
     });
     test('fires on manual toggle', () async {
-      e.onToggle.listen(expectAsync((CurlyBlockToggleEvent event) {
+      e.onToggle.listen(expectAsync1((CurlyBlockToggleEvent event) {
         expect(event, isNotNull);
         expect(event.control, equals(e));
       }, count: 1));
@@ -168,7 +168,7 @@
       await e.onRendered.first;
     });
     test('does not fire if setting same expanded value', () async {
-      e.onToggle.listen(expectAsync((_) {}, count: 0));
+      e.onToggle.listen(expectAsync1((_) {}, count: 0));
       e.expanded = e.expanded;
       await e.onRendered.first;
     });
diff --git a/runtime/observatory/tests/observatory_ui/error_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/error_ref/element_test.dart
index 59bddca..867b5f2 100644
--- a/runtime/observatory/tests/observatory_ui/error_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/error_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/error_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/error_view/element_test.dart b/runtime/observatory/tests/observatory_ui/error_view/element_test.dart
index 7d30a03..e69fec7 100644
--- a/runtime/observatory/tests/observatory_ui/error_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/error_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/error_view.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/field_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/field_ref/element_test.dart
index 653f0c6..75df874 100644
--- a/runtime/observatory/tests/observatory_ui/field_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/field_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/field_ref.dart';
 import 'package:observatory/src/elements/instance_ref.dart';
diff --git a/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart b/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart
index e2c74f5..023f08a 100644
--- a/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/flag_list/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'package:observatory/models.dart' as M;
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/flag_list.dart';
 import 'package:observatory/src/elements/nav/notify.dart';
 import '../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/function_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/function_ref/element_test.dart
index 4068493..516b9d5 100644
--- a/runtime/observatory/tests/observatory_ui/function_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/function_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/function_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/general_error/element_test.dart b/runtime/observatory/tests/observatory_ui/general_error/element_test.dart
index 4957467..2509c92 100644
--- a/runtime/observatory/tests/observatory_ui/general_error/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/general_error/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/general_error.dart';
 import 'package:observatory/src/elements/nav/notify.dart';
 import '../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/heap_snapshot/element_test.dart b/runtime/observatory/tests/observatory_ui/heap_snapshot/element_test.dart
index ecebb93..1907d27 100644
--- a/runtime/observatory/tests/observatory_ui/heap_snapshot/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/heap_snapshot/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/containers/virtual_tree.dart';
 import 'package:observatory/src/elements/heap_snapshot.dart';
diff --git a/runtime/observatory/tests/observatory_ui/icdata_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/icdata_ref/element_test.dart
index 89063c4..263c4fb 100644
--- a/runtime/observatory/tests/observatory_ui/icdata_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/icdata_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/instance_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/icdata_view/element_test.dart b/runtime/observatory/tests/observatory_ui/icdata_view/element_test.dart
index 9599570..3e4907b 100644
--- a/runtime/observatory/tests/observatory_ui/icdata_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/icdata_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/icdata_view.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 import 'package:observatory/src/elements/object_common.dart';
@@ -35,7 +35,7 @@
   });
   test('elements created after attachment', () async {
     final icdatas = new ICDataRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(icdata.id));
       return icdata;
diff --git a/runtime/observatory/tests/observatory_ui/inbound_references/element_test.dart b/runtime/observatory/tests/observatory_ui/inbound_references/element_test.dart
index 5ecf47b..aa0eac2 100644
--- a/runtime/observatory/tests/observatory_ui/inbound_references/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/inbound_references/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/curly_block.dart';
 import 'package:observatory/src/elements/inbound_references.dart';
 import 'package:observatory/src/elements/instance_ref.dart';
@@ -32,7 +32,7 @@
         elements: const [const InboundReferenceMock(source: source)]);
     bool invoked = false;
     final inbounds = new InboundReferencesRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(object.id));
       invoked = true;
diff --git a/runtime/observatory/tests/observatory_ui/instance_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/instance_ref/element_test.dart
index e156fa7..bbec367 100644
--- a/runtime/observatory/tests/observatory_ui/instance_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/instance_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/icdata_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/isolate/counter_chart/element_test.dart b/runtime/observatory/tests/observatory_ui/isolate/counter_chart/element_test.dart
index 8aef7df..af3b05f 100644
--- a/runtime/observatory/tests/observatory_ui/isolate/counter_chart/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/isolate/counter_chart/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/isolate/counter_chart.dart';
 
 main() {
diff --git a/runtime/observatory/tests/observatory_ui/isolate/isolate-shared-summary/element_test.dart b/runtime/observatory/tests/observatory_ui/isolate/isolate-shared-summary/element_test.dart
index f87a61a..fbbfaf1 100644
--- a/runtime/observatory/tests/observatory_ui/isolate/isolate-shared-summary/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/isolate/isolate-shared-summary/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/isolate/counter_chart.dart';
 import 'package:observatory/src/elements/isolate/shared_summary.dart';
 import '../../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/isolate_reconnect/element_test.dart b/runtime/observatory/tests/observatory_ui/isolate_reconnect/element_test.dart
index 9a40331c..10ba984 100644
--- a/runtime/observatory/tests/observatory_ui/isolate_reconnect/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/isolate_reconnect/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/isolate_reconnect.dart';
 import 'package:observatory/src/elements/nav/notify.dart';
 import '../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/isolate_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/isolate_ref/element_test.dart
index 6d4e25b..7dd81cc 100644
--- a/runtime/observatory/tests/observatory_ui/isolate_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/isolate_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/isolate_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/library_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/library_ref/element_test.dart
index f1e2dda..53d176d 100644
--- a/runtime/observatory/tests/observatory_ui/library_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/library_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/library_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/local_var_descriptor_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/local_var_descriptor_ref/element_test.dart
index c3071a8..eeae150 100644
--- a/runtime/observatory/tests/observatory_ui/local_var_descriptor_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/local_var_descriptor_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/local_var_descriptors_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/megamorphiccache_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/megamorphiccache_ref/element_test.dart
index 41e879d..7a48808 100644
--- a/runtime/observatory/tests/observatory_ui/megamorphiccache_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/megamorphiccache_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/megamorphiccache_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/megamorphiccache_view/element_test.dart b/runtime/observatory/tests/observatory_ui/megamorphiccache_view/element_test.dart
index 7024d41..81dc1cd 100644
--- a/runtime/observatory/tests/observatory_ui/megamorphiccache_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/megamorphiccache_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/megamorphiccache_view.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 import 'package:observatory/src/elements/object_common.dart';
@@ -45,7 +45,7 @@
   });
   test('elements created after attachment', () async {
     final caches = new MegamorphicCacheRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(cache.id));
       return cache;
diff --git a/runtime/observatory/tests/observatory_ui/mocks/repositories/event.dart b/runtime/observatory/tests/observatory_ui/mocks/repositories/event.dart
index 2bbdb4b..8b74218 100644
--- a/runtime/observatory/tests/observatory_ui/mocks/repositories/event.dart
+++ b/runtime/observatory/tests/observatory_ui/mocks/repositories/event.dart
@@ -6,134 +6,146 @@
 
 class EventRepositoryMock implements M.EventRepository {
   final _onEvent = new StreamController<M.Event>.broadcast();
-  get onEvent => _onEvent.stream;
+  Stream<M.Event> get onEvent => _onEvent.stream;
   get onEventHasListener => _onEvent.hasListener;
 
   final _onVMEvent = new StreamController<M.VMEvent>.broadcast();
-  get onVMEvent => _onVMEvent.stream;
+  Stream<M.VMEvent> get onVMEvent => _onVMEvent.stream;
   get onVMEventHasListener => _onVMEvent.hasListener;
 
-  final _onVMUpdate = new StreamController<M.Event>.broadcast();
-  get onVMUpdate => _onVMUpdate.stream;
+  final _onVMUpdate = new StreamController<M.VMUpdateEvent>.broadcast();
+  Stream<M.VMUpdateEvent> get onVMUpdate => _onVMUpdate.stream;
   get onVMUpdateHasListener => _onVMUpdate.hasListener;
 
   final _onIsolateEvent = new StreamController<M.IsolateEvent>.broadcast();
-  get onIsolateEvent => _onIsolateEvent.stream;
+  Stream<M.IsolateEvent> get onIsolateEvent => _onIsolateEvent.stream;
   get onIsolateEventHasListener => _onIsolateEvent.hasListener;
 
   final _onIsolateStart = new StreamController<M.IsolateStartEvent>.broadcast();
-  get onIsolateStart => _onIsolateStart.stream;
+  Stream<M.IsolateStartEvent> get onIsolateStart => _onIsolateStart.stream;
   get onIsolateStartHasListener => _onIsolateStart.hasListener;
 
   final _onIsolateRunnable =
       new StreamController<M.IsolateRunnableEvent>.broadcast();
-  get onIsolateRunnable => _onIsolateRunnable.stream;
+  Stream<M.IsolateRunnableEvent> get onIsolateRunnable =>
+      _onIsolateRunnable.stream;
   get onIsolateRunnableHasListener => _onIsolateRunnable.hasListener;
 
   final _onIsolateExit = new StreamController<M.IsolateExitEvent>.broadcast();
-  get onIsolateExit => _onIsolateExit.stream;
+  Stream<M.IsolateExitEvent> get onIsolateExit => _onIsolateExit.stream;
   get onIsolateExitHasListener => _onIsolateExit.hasListener;
 
   final _onIsolateUpdate =
       new StreamController<M.IsolateUpdateEvent>.broadcast();
-  get onIsolateUpdate => _onIsolateUpdate.stream;
+  Stream<M.IsolateUpdateEvent> get onIsolateUpdate => _onIsolateUpdate.stream;
   get onIsolateUpdateHasListener => _onIsolateUpdate.hasListener;
 
   final _onIsolateReload =
       new StreamController<M.IsolateReloadEvent>.broadcast();
-  get onIsolateReload => _onIsolateReload.stream;
+  Stream<M.IsolateReloadEvent> get onIsolateReload => _onIsolateReload.stream;
   get onIsolateReloadHasListener => _onIsolateReload.hasListener;
 
   final _onServiceExtensionAdded =
       new StreamController<M.ServiceExtensionAddedEvent>.broadcast();
-  get onServiceExtensionAdded => _onServiceExtensionAdded.stream;
+  Stream<M.ServiceExtensionAddedEvent> get onServiceExtensionAdded =>
+      _onServiceExtensionAdded.stream;
   get onServiceExtensionAddedHasListener =>
       _onServiceExtensionAdded.hasListener;
 
   final _onDebugEvent = new StreamController<M.DebugEvent>.broadcast();
-  get onDebugEvent => _onDebugEvent.stream;
+  Stream<M.DebugEvent> get onDebugEvent => _onDebugEvent.stream;
   get onDebugEventHasListener => _onDebugEvent.hasListener;
 
   final _onPauseStart = new StreamController<M.PauseStartEvent>.broadcast();
-  get onPauseStart => _onPauseStart.stream;
+  Stream<M.PauseStartEvent> get onPauseStart => _onPauseStart.stream;
   get onPauseStartHasListener => _onPauseStart.hasListener;
 
   final _onPauseExit = new StreamController<M.PauseExitEvent>.broadcast();
-  get onPauseExit => _onPauseExit.stream;
+  Stream<M.PauseExitEvent> get onPauseExit => _onPauseExit.stream;
   get onPauseExitHasListener => _onPauseExit.hasListener;
 
   final _onPauseBreakpoint =
       new StreamController<M.PauseBreakpointEvent>.broadcast();
-  get onPauseBreakpoint => _onPauseBreakpoint.stream;
+  Stream<M.PauseBreakpointEvent> get onPauseBreakpoint =>
+      _onPauseBreakpoint.stream;
   get onPauseBreakpointHasListener => _onPauseBreakpoint.hasListener;
 
   final _onPauseInterrupted =
       new StreamController<M.PauseInterruptedEvent>.broadcast();
-  get onPauseInterrupted => _onPauseInterrupted.stream;
+  Stream<M.PauseInterruptedEvent> get onPauseInterrupted =>
+      _onPauseInterrupted.stream;
   get onPauseInterruptedHasListener => _onPauseInterrupted.hasListener;
 
   final _onPauseException =
       new StreamController<M.PauseExceptionEvent>.broadcast();
-  get onPauseException => _onPauseException.stream;
+  Stream<M.PauseExceptionEvent> get onPauseException =>
+      _onPauseException.stream;
   get onPauseExceptionHasListener => _onPauseException.hasListener;
 
   final _onResume = new StreamController<M.ResumeEvent>.broadcast();
-  get onResume => _onResume.stream;
+  Stream<M.ResumeEvent> get onResume => _onResume.stream;
   get onResumeHasListener => _onResume.hasListener;
 
   final _onBreakpointAdded =
       new StreamController<M.BreakpointAddedEvent>.broadcast();
-  get onBreakpointAdded => _onBreakpointAdded.stream;
+  Stream<M.BreakpointAddedEvent> get onBreakpointAdded =>
+      _onBreakpointAdded.stream;
   get onBreakpointAddedHasListener => _onBreakpointAdded.hasListener;
 
   final _onBreakpointResolved =
       new StreamController<M.BreakpointResolvedEvent>.broadcast();
-  get onBreakpointResolved => _onBreakpointResolved.stream;
+  Stream<M.BreakpointResolvedEvent> get onBreakpointResolved =>
+      _onBreakpointResolved.stream;
   get onBreakpointResolvedHasListener => _onBreakpointResolved.hasListener;
 
   final _onBreakpointRemoved =
       new StreamController<M.BreakpointRemovedEvent>.broadcast();
-  get onBreakpointRemoved => _onBreakpointRemoved.stream;
+  Stream<M.BreakpointRemovedEvent> get onBreakpointRemoved =>
+      _onBreakpointRemoved.stream;
   get onBreakpointRemovedHasListener => _onBreakpointRemoved.hasListener;
 
   final _onInspect = new StreamController<M.InspectEvent>.broadcast();
-  get onInspect => _onInspect.stream;
+  Stream<M.InspectEvent> get onInspect => _onInspect.stream;
   get onInspectHasListener => _onInspect.hasListener;
 
   final _onGCEvent = new StreamController<M.GCEvent>.broadcast();
-  get onGCEvent => _onGCEvent.stream;
+  Stream<M.GCEvent> get onGCEvent => _onGCEvent.stream;
   get onGCEventHasListener => _onGCEvent.hasListener;
 
   final _onLoggingEvent = new StreamController<M.LoggingEvent>.broadcast();
-  get onLoggingEvent => _onLoggingEvent.stream;
+  Stream<M.LoggingEvent> get onLoggingEvent => _onLoggingEvent.stream;
   get onLoggingEventHasListener => _onLoggingEvent.hasListener;
 
   final _onExtensionEvent = new StreamController<M.ExtensionEvent>.broadcast();
-  get onExtensionEvent => _onExtensionEvent.stream;
+  Stream<M.ExtensionEvent> get onExtensionEvent => _onExtensionEvent.stream;
   get onExtensionEventHasListener => _onExtensionEvent.hasListener;
 
   final _onTimelineEvents =
       new StreamController<M.TimelineEventsEvent>.broadcast();
-  get onTimelineEvents => _onTimelineEvents.stream;
+  Stream<M.TimelineEventsEvent> get onTimelineEvents =>
+      _onTimelineEvents.stream;
   get onTimelineEventsEventHasListener => _onTimelineEvents.hasListener;
 
   final _onConnectionClosed =
       new StreamController<M.ConnectionClosedEvent>.broadcast();
-  get onConnectionClosed => _onConnectionClosed.stream;
+  Stream<M.ConnectionClosedEvent> get onConnectionClosed =>
+      _onConnectionClosed.stream;
   get onConnectionClosedHasListener => _onConnectionClosed.hasListener;
 
   final _onServiceEvent = new StreamController<M.ServiceEvent>.broadcast();
-  get onServiceEvent => _onServiceEvent.stream;
+  Stream<M.ServiceEvent> get onServiceEvent => _onServiceEvent.stream;
   get onServiceEventHasListener => _onServiceEvent.hasListener;
 
   final _onServiceRegistered =
       new StreamController<M.ServiceRegisteredEvent>.broadcast();
-  get onServiceRegistered => _onServiceRegistered.stream;
+  Stream<M.ServiceRegisteredEvent> get onServiceRegistered =>
+      _onServiceRegistered.stream;
   get onServiceRegisteredHasListener => _onServiceRegistered.hasListener;
 
   final _onServiceUnregistered =
       new StreamController<M.ServiceUnregisteredEvent>.broadcast();
-  get onServiceUnregistered => _onServiceUnregistered.stream;
+  Stream<M.ServiceUnregisteredEvent> get onServiceUnregistered =>
+      _onServiceUnregistered.stream;
   get onServiceUnregisteredHasListener => _onServiceUnregistered.hasListener;
 
   void add(M.Event event) {
diff --git a/runtime/observatory/tests/observatory_ui/nav/class-menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/class-menu/element_test.dart
index 263ab43..ba755bc 100644
--- a/runtime/observatory/tests/observatory_ui/nav/class-menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/class-menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/class_menu.dart';
 import '../../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/nav/isolate-menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/isolate-menu/element_test.dart
index 5d40f27..80d3e70 100644
--- a/runtime/observatory/tests/observatory_ui/nav/isolate-menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/isolate-menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/isolate_menu.dart';
 import '../../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/nav/library-menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/library-menu/element_test.dart
index c566588..59c59b6 100644
--- a/runtime/observatory/tests/observatory_ui/nav/library-menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/library-menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/library_menu.dart';
 import '../../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/nav/menu-item/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/menu-item/element_test.dart
index ccb778f..8f77748 100644
--- a/runtime/observatory/tests/observatory_ui/nav/menu-item/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/menu-item/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/menu_item.dart';
 
 main() {
diff --git a/runtime/observatory/tests/observatory_ui/nav/notify/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/notify/element_test.dart
index 1b647d8..3fafd60 100644
--- a/runtime/observatory/tests/observatory_ui/nav/notify/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/notify/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html' hide Notification, NotificationEvent;
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/nav/notify.dart';
 import 'package:observatory/src/elements/nav/notify_event.dart';
diff --git a/runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.dart
index e653dbc..557a278 100644
--- a/runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/notify_event.dart';
 import '../../mocks.dart';
 
@@ -14,9 +14,11 @@
   final event = new PauseStartEventMock(
       isolate: new IsolateMock(id: 'isolate-id', name: 'isolate-name'));
   group('instantiation', () {
-    final e = new NavNotifyEventElement(event);
-    expect(e, isNotNull, reason: 'element correctly created');
-    expect(e.event, equals(event));
+    test('default', () {
+      final e = new NavNotifyEventElement(event);
+      expect(e, isNotNull, reason: 'element correctly created');
+      expect(e.event, equals(event));
+    });
   });
   group('elements', () {
     test('created after attachment', () async {
@@ -43,18 +45,18 @@
     });
     test('navigation after connect', () async {
       sub = window.onPopState
-          .listen(expectAsync((_) {}, count: 1, reason: 'event is fired'));
+          .listen(expectAsync1((_) {}, count: 1, reason: 'event is fired'));
       e.querySelector('a').click();
     });
     test('onDelete events (DOM)', () async {
-      sub = e.onDelete.listen(expectAsync((EventDeleteEvent ev) {
+      sub = e.onDelete.listen(expectAsync1((EventDeleteEvent ev) {
         expect(ev, isNotNull, reason: 'event is passed');
         expect(ev.event, equals(event), reason: 'exception is the same');
       }, count: 1, reason: 'event is fired'));
       e.querySelector('button').click();
     });
     test('onDelete events (code)', () async {
-      sub = e.onDelete.listen(expectAsync((EventDeleteEvent ev) {
+      sub = e.onDelete.listen(expectAsync1((EventDeleteEvent ev) {
         expect(ev, isNotNull, reason: 'event is passed');
         expect(ev.event, equals(event), reason: 'exception is the same');
       }, count: 1, reason: 'event is fired'));
diff --git a/runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.dart b/runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.dart
index 4f19e64..473ab77 100644
--- a/runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/notify_exception.dart';
 import '../../mocks.dart';
 
@@ -39,11 +39,11 @@
     });
     test('navigation after connect', () async {
       sub = window.onPopState
-          .listen(expectAsync((_) {}, count: 1, reason: 'event is fired'));
+          .listen(expectAsync1((_) {}, count: 1, reason: 'event is fired'));
       e.querySelector('a').click();
     });
     test('onDelete events (DOM)', () async {
-      sub = e.onDelete.listen(expectAsync((ExceptionDeleteEvent event) {
+      sub = e.onDelete.listen(expectAsync1((ExceptionDeleteEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.exception, equals(exception),
             reason: 'exception is the same');
@@ -52,7 +52,7 @@
       e.querySelector('button').click();
     });
     test('onDelete events (code)', () async {
-      sub = e.onDelete.listen(expectAsync((ExceptionDeleteEvent event) {
+      sub = e.onDelete.listen(expectAsync1((ExceptionDeleteEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.exception, equals(exception),
             reason: 'exception is the same');
diff --git a/runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.dart b/runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.dart
index 8d4b94e..d521aa2 100644
--- a/runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/notify_exception.dart';
 
 main() {
@@ -65,11 +65,11 @@
       });
       test('navigation after connect', () async {
         sub = window.onPopState
-            .listen(expectAsync((_) {}, count: 1, reason: 'event is fired'));
+            .listen(expectAsync1((_) {}, count: 1, reason: 'event is fired'));
         e.querySelector('a').click();
       });
       test('onDelete events (DOM)', () async {
-        sub = e.onDelete.listen(expectAsync((ExceptionDeleteEvent event) {
+        sub = e.onDelete.listen(expectAsync1((ExceptionDeleteEvent event) {
           expect(event, isNotNull, reason: 'event is passed');
           expect(event.exception, equals(ex), reason: 'exception is the same');
           expect(event.stacktrace, equals(st),
@@ -78,7 +78,7 @@
         e.querySelector('button').click();
       });
       test('onDelete events (code)', () async {
-        sub = e.onDelete.listen(expectAsync((ExceptionDeleteEvent event) {
+        sub = e.onDelete.listen(expectAsync1((ExceptionDeleteEvent event) {
           expect(event, isNotNull, reason: 'event is passed');
           expect(event.exception, equals(ex), reason: 'exception is the same');
           expect(event.stacktrace, equals(st),
diff --git a/runtime/observatory/tests/observatory_ui/nav/refresh/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/refresh/element_test.dart
index 6752929..6880244 100644
--- a/runtime/observatory/tests/observatory_ui/nav/refresh/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/refresh/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 
 main() {
@@ -95,7 +95,7 @@
       await e.onRendered.first;
     });
     test('fires', () async {
-      sub = e.onRefresh.listen(expectAsync((event) {
+      sub = e.onRefresh.listen(expectAsync1((event) {
         expect(event, isNotNull, reason: 'event passed');
         expect(event is RefreshEvent, isTrue, reason: 'is the right event');
         expect(event.element, equals(e), reason: 'is related to the element');
@@ -103,7 +103,7 @@
       e.refresh();
     });
     test('fires on click', () async {
-      sub = e.onRefresh.listen(expectAsync((event) {
+      sub = e.onRefresh.listen(expectAsync1((event) {
         expect(event, isNotNull, reason: 'event passed');
         expect(event is RefreshEvent, isTrue, reason: 'is the right event');
         expect(event.element, equals(e), reason: 'is related to the element');
@@ -112,12 +112,12 @@
     });
     test('does not fire if disabled', () async {
       e.disabled = true;
-      sub = e.onRefresh.listen(expectAsync((_) {}, count: 0));
+      sub = e.onRefresh.listen(expectAsync1((_) {}, count: 0));
       e.refresh();
     });
     test('does not fires on click if disabled', () async {
       e.disabled = true;
-      sub = e.onRefresh.listen(expectAsync((_) {}, count: 0));
+      sub = e.onRefresh.listen(expectAsync1((_) {}, count: 0));
       e.querySelector('button').click();
     });
   });
diff --git a/runtime/observatory/tests/observatory_ui/nav/top_menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/top_menu/element_test.dart
index 165bfe5..7ddd2ca 100644
--- a/runtime/observatory/tests/observatory_ui/nav/top_menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/top_menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/top_menu.dart';
 
 main() {
diff --git a/runtime/observatory/tests/observatory_ui/nav/vm_menu/element_test.dart b/runtime/observatory/tests/observatory_ui/nav/vm_menu/element_test.dart
index e29cb9a..be95c7a 100644
--- a/runtime/observatory/tests/observatory_ui/nav/vm_menu/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/nav/vm_menu/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/menu_item.dart';
 import 'package:observatory/src/elements/nav/vm_menu.dart';
 import '../../mocks.dart';
diff --git a/runtime/observatory/tests/observatory_ui/object_common/element_test.dart b/runtime/observatory/tests/observatory_ui/object_common/element_test.dart
index b0813be..c589cbf 100644
--- a/runtime/observatory/tests/observatory_ui/object_common/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/object_common/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/class_ref.dart';
 import 'package:observatory/src/elements/inbound_references.dart';
 import 'package:observatory/src/elements/object_common.dart';
@@ -50,7 +50,7 @@
           const InstanceMock(valueAsString: '10'));
       bool invoked = false;
       final reachableSizes = new ReachableSizeRepositoryMock(
-          getter: expectAsync((i, id) async {
+          getter: expectAsync2((i, id) async {
         expect(i, equals(isolate));
         expect(id, equals(object.id));
         invoked = true;
@@ -77,7 +77,7 @@
           const InstanceMock(valueAsString: '10'));
       bool invoked = false;
       final retainedSizes = new RetainedSizeRepositoryMock(
-          getter: expectAsync((i, id) async {
+          getter: expectAsync2((i, id) async {
         expect(i, equals(isolate));
         expect(id, equals(object.id));
         invoked = true;
diff --git a/runtime/observatory/tests/observatory_ui/objectpool_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/objectpool_ref/element_test.dart
index f38ab9f..5c5ec9d 100644
--- a/runtime/observatory/tests/observatory_ui/objectpool_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/objectpool_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/objectpool_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/objectpool_view/element_test.dart b/runtime/observatory/tests/observatory_ui/objectpool_view/element_test.dart
index 52680fb..a8c1d4a 100644
--- a/runtime/observatory/tests/observatory_ui/objectpool_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/objectpool_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/nav/refresh.dart';
 import 'package:observatory/src/elements/object_common.dart';
 import 'package:observatory/src/elements/objectpool_view.dart';
@@ -35,7 +35,7 @@
   });
   test('elements created after attachment', () async {
     final pools = new ObjectPoolRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(pool.id));
       return pool;
diff --git a/runtime/observatory/tests/observatory_ui/objectstore_view/element_test.dart b/runtime/observatory/tests/observatory_ui/objectstore_view/element_test.dart
index 924085d..1c8ca9b 100644
--- a/runtime/observatory/tests/observatory_ui/objectstore_view/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/objectstore_view/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/objectstore_view.dart';
 import '../mocks.dart';
 
@@ -30,7 +30,7 @@
     ];
     const store = const ObjectStoreMock(fields: fields);
     final stores = new ObjectStoreRepositoryMock(
-        getter: expectAsync((i) async {
+        getter: expectAsync1((i) async {
       expect(i, equals(isolate));
       return store;
     }, count: 1));
diff --git a/runtime/observatory/tests/observatory_ui/observatory_ui.status b/runtime/observatory/tests/observatory_ui/observatory_ui.status
index 002abb6..30c3e41 100644
--- a/runtime/observatory/tests/observatory_ui/observatory_ui.status
+++ b/runtime/observatory/tests/observatory_ui/observatory_ui.status
@@ -2,37 +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.
 
-[ $strong ]
-allocation_profile/element_test: CompileTimeError # observatory is not strong clean (Issue 32503)
-class_tree/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-context_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-cpu_profile/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-cpu_profile_table/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-curly_block/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-flag_list/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-icdata_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-inbound_references/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-isolate/counter_chart/element_test: CompileTimeError # observatory is not strong clean (Issue 32503)
-isolate/isolate-shared-summary/element_test: CompileTimeError # observatory is not strong clean (Issue 32503)
-isolate_reconnect/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-megamorphiccache_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-nav/notify_event/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-nav/notify_exception/connection_exception_test: Timeout, RuntimeError # observatory is not strong clean (Issue 32503)
-nav/notify_exception/exception_test: Timeout, RuntimeError # observatory is not strong clean (Issue 32503)
-nav/vm_menu/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-object_common/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-objectpool_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-objectstore_view/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-persistent_handles_page/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-ports/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-retaining_path/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-source_link/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-vm_connect/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-vm_connect_target/element_test: RuntimeError # observatory is not strong clean (Issue 32503)
-
-[ $runtime == chrome || $runtime == ff || $runtime == safari ]
-heap_snapshot/element_test: RuntimeError # Issue 27925
-
 [ $runtime == drt || !$browser || $fast_startup ]
 *: SkipByDesign
 
diff --git a/runtime/observatory/tests/observatory_ui/pc_descriptors_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/pc_descriptors_ref/element_test.dart
index 472df2b..4b5c081 100644
--- a/runtime/observatory/tests/observatory_ui/pc_descriptors_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/pc_descriptors_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/sentinel_value.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/persistent_handles_page/element_test.dart b/runtime/observatory/tests/observatory_ui/persistent_handles_page/element_test.dart
index 43d8c76..75cafc5 100644
--- a/runtime/observatory/tests/observatory_ui/persistent_handles_page/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/persistent_handles_page/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/persistent_handles.dart';
 import '../mocks.dart';
 
@@ -24,7 +24,7 @@
   });
   test('elements created after attachment', () async {
     final repository = new PersistentHandlesRepositoryMock(
-        getter: expectAsync((i) async {
+        getter: expectAsync1((i) async {
       expect(i, equals(isolate));
       return const PersistentHandlesMock();
     }, count: 1));
diff --git a/runtime/observatory/tests/observatory_ui/ports/element_test.dart b/runtime/observatory/tests/observatory_ui/ports/element_test.dart
index f614a53..876f0db 100644
--- a/runtime/observatory/tests/observatory_ui/ports/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/ports/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/ports.dart';
 import '../mocks.dart';
 
@@ -30,7 +30,7 @@
     ];
     const isolatePorts = const PortsAndHandlesMock(elements: elements);
     final ports = new PortsRepositoryMock(
-        getter: expectAsync((i) async {
+        getter: expectAsync1((i) async {
       expect(i, equals(isolate));
       return isolatePorts;
     }, count: 1));
diff --git a/runtime/observatory/tests/observatory_ui/retaining_path/element_test.dart b/runtime/observatory/tests/observatory_ui/retaining_path/element_test.dart
index 5770fa6..2f10ece 100644
--- a/runtime/observatory/tests/observatory_ui/retaining_path/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/retaining_path/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/curly_block.dart';
 import 'package:observatory/src/elements/instance_ref.dart';
 import 'package:observatory/src/elements/retaining_path.dart';
@@ -31,7 +31,7 @@
         elements: const [const RetainingPathItemMock(source: source)]);
     bool invoked = false;
     final paths = new RetainingPathRepositoryMock(
-        getter: expectAsync((i, id) async {
+        getter: expectAsync2((i, id) async {
       expect(i, equals(isolate));
       expect(id, equals(object.id));
       invoked = true;
diff --git a/runtime/observatory/tests/observatory_ui/sample_buffer_control/element_test.dart b/runtime/observatory/tests/observatory_ui/sample_buffer_control/element_test.dart
index 226ee35..9820989 100644
--- a/runtime/observatory/tests/observatory_ui/sample_buffer_control/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/sample_buffer_control/element_test.dart
@@ -4,7 +4,7 @@
 
 import 'dart:html';
 import 'dart:async';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/sample_buffer_control.dart';
 import '../mocks.dart';
@@ -150,7 +150,7 @@
               profile: new SampleProfileMock())));
       await e.onRendered.first;
       expect(e.selectedTag, equals(M.SampleProfileTag.none));
-      e.onTagChange.listen(expectAsync((_) {
+      e.onTagChange.listen(expectAsync1((_) {
         expect(e.selectedTag, equals(M.SampleProfileTag.userOnly));
       }, count: 1));
       final select = (e.querySelector('.tag-select') as SelectElement);
diff --git a/runtime/observatory/tests/observatory_ui/script_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/script_ref/element_test.dart
index fad7cf8..ae6d7f5 100644
--- a/runtime/observatory/tests/observatory_ui/script_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/script_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/script_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/sentinel_value/element_test.dart b/runtime/observatory/tests/observatory_ui/sentinel_value/element_test.dart
index 304adbc..69d3b11 100644
--- a/runtime/observatory/tests/observatory_ui/sentinel_value/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/sentinel_value/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/pc_descriptors_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/source_link/element_test.dart b/runtime/observatory/tests/observatory_ui/source_link/element_test.dart
index 8a8efe9..a6c10bb 100644
--- a/runtime/observatory/tests/observatory_ui/source_link/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/source_link/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/source_link.dart';
 import '../mocks.dart';
 
@@ -30,7 +30,7 @@
   test('elements created after attachment', () async {
     bool rendered = false;
     final repository = new ScriptRepositoryMock(
-        getter: expectAsync((isolate, id) async {
+        getter: expectAsync2((isolate, id) async {
       expect(rendered, isFalse);
       expect(id, equals(script_id));
       return script;
diff --git a/runtime/observatory/tests/observatory_ui/stack_trace_tree_config/element_test.dart b/runtime/observatory/tests/observatory_ui/stack_trace_tree_config/element_test.dart
index 1a8bef1..3649041 100644
--- a/runtime/observatory/tests/observatory_ui/stack_trace_tree_config/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/stack_trace_tree_config/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/stack_trace_tree_config.dart';
 
@@ -138,7 +138,7 @@
       document.body.append(e);
       await e.onRendered.first;
       expect(e.mode, equals(ProfileTreeMode.function));
-      e.onModeChange.listen(expectAsync((_) {
+      e.onModeChange.listen(expectAsync1((_) {
         expect(e.mode, equals(ProfileTreeMode.code));
       }, count: 1));
       final select = (e.querySelector('.mode-select') as SelectElement);
@@ -155,7 +155,7 @@
       document.body.append(e);
       await e.onRendered.first;
       expect(e.direction, equals(M.ProfileTreeDirection.exclusive));
-      e.onDirectionChange.listen(expectAsync((_) {
+      e.onDirectionChange.listen(expectAsync1((_) {
         expect(e.direction, equals(M.ProfileTreeDirection.inclusive));
       }, count: 1));
       final select = (e.querySelector('.direction-select') as SelectElement);
@@ -172,7 +172,7 @@
       document.body.append(e);
       await e.onRendered.first;
       expect(e.direction, equals(M.ProfileTreeDirection.exclusive));
-      e.onFilterChange.listen(expectAsync((_) {
+      e.onFilterChange.listen(expectAsync1((_) {
         expect(e.filter, equals('value'));
       }, count: 1));
       var input = (e.querySelector('input') as TextInputElement);
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
index 16c22fd..12f7351 100644
--- a/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/token_stream_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/unknown_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/unknown_ref/element_test.dart
index f966374..66f907d 100644
--- a/runtime/observatory/tests/observatory_ui/unknown_ref/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/unknown_ref/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/unknown_ref.dart';
 import '../mocks.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/view_footer/element_test.dart b/runtime/observatory/tests/observatory_ui/view_footer/element_test.dart
index 77cb4cc..cc0e635 100644
--- a/runtime/observatory/tests/observatory_ui/view_footer/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/view_footer/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/view_footer.dart';
 
 main() {
diff --git a/runtime/observatory/tests/observatory_ui/virtual_tree/element_test.dart b/runtime/observatory/tests/observatory_ui/virtual_tree/element_test.dart
index f2040cf..2520f74 100644
--- a/runtime/observatory/tests/observatory_ui/virtual_tree/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/virtual_tree/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/containers/virtual_collection.dart';
 import 'package:observatory/src/elements/containers/virtual_tree.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/vm_connect/element_test.dart b/runtime/observatory/tests/observatory_ui/vm_connect/element_test.dart
index f087af7..8727212 100644
--- a/runtime/observatory/tests/observatory_ui/vm_connect/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/vm_connect/element_test.dart
@@ -3,7 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
+import 'package:observatory/models.dart' as M;
 import 'package:observatory/src/elements/nav/notify.dart';
 import 'package:observatory/src/elements/vm_connect_target.dart';
 import 'package:observatory/src/elements/vm_connect.dart';
@@ -76,7 +77,7 @@
       final list = <TargetMock>[const TargetMock(name: 't-1')];
       final targets = new TargetRepositoryMock(
           list: list,
-          add: expectAsync((String val) {
+          add: expectAsync1((String val) {
             expect(val, equals(address));
           }, count: 1, reason: 'should be invoked'));
       final e = new VMConnectElement(
@@ -92,7 +93,7 @@
       final list = <TargetMock>[const TargetMock(name: 't-1')];
       final targets = new TargetRepositoryMock(
           list: list,
-          setCurrent: expectAsync((TargetMock t) {
+          setCurrent: expectAsync1((M.Target t) {
             expect(t, equals(list[0]));
           }, count: 1, reason: 'should be invoked'));
       final e =
@@ -107,7 +108,7 @@
       final list = <TargetMock>[const TargetMock(name: 't-1')];
       final targets = new TargetRepositoryMock(
           list: list,
-          delete: expectAsync((TargetMock t) {
+          delete: expectAsync1((M.Target t) {
             expect(t, equals(list[0]));
           }, count: 1, reason: 'should be invoked'));
       final e =
diff --git a/runtime/observatory/tests/observatory_ui/vm_connect_target/element_test.dart b/runtime/observatory/tests/observatory_ui/vm_connect_target/element_test.dart
index 082e588..79003c8 100644
--- a/runtime/observatory/tests/observatory_ui/vm_connect_target/element_test.dart
+++ b/runtime/observatory/tests/observatory_ui/vm_connect_target/element_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:html';
-import 'package:unittest/unittest.dart';
+import 'package:test/test.dart';
 import 'package:observatory/src/elements/vm_connect_target.dart';
 import '../mocks.dart';
 
@@ -55,28 +55,28 @@
       await e.onRendered.first;
     });
     test('onConnect events (DOM)', () async {
-      e.onConnect.listen(expectAsync((TargetEvent event) {
+      e.onConnect.listen(expectAsync1((TargetEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.target, t, reason: 'target is the same');
       }, count: 1, reason: 'event is fired'));
       e.querySelector('a').click();
     });
     test('onConnect events (code)', () async {
-      e.onConnect.listen(expectAsync((TargetEvent event) {
+      e.onConnect.listen(expectAsync1((TargetEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.target, t, reason: 'target is the same');
       }, count: 1, reason: 'event is fired'));
       e.connect();
     });
     test('onRemove events (DOM)', () async {
-      e.onDelete.listen(expectAsync((TargetEvent event) {
+      e.onDelete.listen(expectAsync1((TargetEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.target, t, reason: 'target is the same');
       }, count: 1, reason: 'event is fired'));
       e.querySelector('button').click();
     });
     test('onRemove events (code)', () async {
-      e.onDelete.listen(expectAsync((TargetEvent event) {
+      e.onDelete.listen(expectAsync1((TargetEvent event) {
         expect(event, isNotNull, reason: 'event is passed');
         expect(event.target, t, reason: 'target is the same');
       }, count: 1, reason: 'event is fired'));
diff --git a/runtime/observatory/tests/service/test_helper.dart b/runtime/observatory/tests/service/test_helper.dart
index c8a4111..3913854 100644
--- a/runtime/observatory/tests/service/test_helper.dart
+++ b/runtime/observatory/tests/service/test_helper.dart
@@ -334,7 +334,7 @@
 
         print('All service tests completed successfully.');
         testsDone = true;
-        await process.requestExit();
+        process.requestExit();
       });
     }, onError: (error, stackTrace) {
       if (testsDone) {
diff --git a/runtime/tests/vm/dart/byte_array_optimized_test.dart b/runtime/tests/vm/dart/byte_array_optimized_test.dart
index 763fa52..827b93c 100644
--- a/runtime/tests/vm/dart/byte_array_optimized_test.dart
+++ b/runtime/tests/vm/dart/byte_array_optimized_test.dart
@@ -24,7 +24,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -130,7 +130,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -227,7 +227,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -353,7 +353,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -460,7 +460,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -586,7 +586,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -698,7 +698,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -822,7 +822,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -928,7 +928,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1030,7 +1030,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1172,7 +1172,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1346,7 +1346,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1480,7 +1480,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1808,7 +1808,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -2054,7 +2054,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -2521,7 +2521,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -2862,7 +2862,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -3522,7 +3522,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -3956,7 +3956,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -4121,7 +4121,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
diff --git a/runtime/tests/vm/dart/byte_array_test.dart b/runtime/tests/vm/dart/byte_array_test.dart
index 903bf2b..d3dc4b2 100644
--- a/runtime/tests/vm/dart/byte_array_test.dart
+++ b/runtime/tests/vm/dart/byte_array_test.dart
@@ -22,7 +22,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -131,7 +131,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -231,7 +231,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -332,7 +332,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -461,7 +461,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -571,7 +571,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -700,7 +700,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -815,7 +815,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -942,7 +942,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1051,7 +1051,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1156,7 +1156,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return array[-1];
+      array[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1566,7 +1566,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1740,7 +1740,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -1874,7 +1874,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -2202,7 +2202,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -2448,7 +2448,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -2915,7 +2915,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -3256,7 +3256,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -3916,7 +3916,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -4350,7 +4350,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
@@ -4515,7 +4515,7 @@
       return e is RangeError;
     });
     Expect.throws(() {
-      return view[-1];
+      view[-1];
     }, (e) {
       return e is RangeError;
     });
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index baf1b79..ea834ac 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -3857,38 +3857,38 @@
 TEST_CASE(FunctionSourceFingerprint) {
   const char* kScriptChars =
       "class A {\n"
-      "  static void test1(int a) {\n"
+      "  static test1(int a) {\n"
       "    return a > 1 ? a + 1 : a;\n"
       "  }\n"
-      "  static void test2(a) {\n"
+      "  static test2(a) {\n"
       "    return a > 1 ? a + 1 : a;\n"
       "  }\n"
-      "  static void test3(b) {\n"
+      "  static test3(b) {\n"
       "    return b > 1 ? b + 1 : b;\n"
       "  }\n"
-      "  static void test4(b) {\n"
+      "  static test4(b) {\n"
       "    return b > 1 ? b - 1 : b;\n"
       "  }\n"
-      "  static void test5(b) {\n"
+      "  static test5(b) {\n"
       "    return b > 1 ? b - 2 : b;\n"
       "  }\n"
-      "  void test6(int a) {\n"
+      "  test6(int a) {\n"
       "    return a > 1 ? a + 1 : a;\n"
       "  }\n"
       "}\n"
       "class B {\n"
-      "  static void /* Different declaration style. */\n"
+      "  static /* Different declaration style. */\n"
       "  test1(int a) {\n"
       "    /* Returns a + 1 for a > 1, a otherwise. */\n"
       "    return a > 1 ?\n"
       "        a + 1 :\n"
       "        a;\n"
       "  }\n"
-      "  static void test5(b) {\n"
+      "  static test5(b) {\n"
       "    return b > 1 ?\n"
       "        b - 2 : b;\n"
       "  }\n"
-      "  void test6(int a) {\n"
+      "  test6(int a) {\n"
       "    return a > 1 ? a + 1 : a;\n"
       "  }\n"
       "}";
diff --git a/samples/sample_extension/test/sample_extension_test_helper.dart b/samples/sample_extension/test/sample_extension_test_helper.dart
index 72819b9..157942c 100644
--- a/samples/sample_extension/test/sample_extension_test_helper.dart
+++ b/samples/sample_extension/test/sample_extension_test_helper.dart
@@ -85,6 +85,6 @@
       await run(Platform.executable, args);
     }
   } finally {
-    await tempDirectory.deleteSync(recursive: true);
+    tempDirectory.deleteSync(recursive: true);
   }
 }
diff --git a/sdk/lib/_internal/js_runtime/lib/js_helper.dart b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
index 6e5d05d..1a194f5 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
@@ -3103,7 +3103,7 @@
 }
 
 /// Instantiation classes are subclasses of [Instantiation]. For now we have a
-/// few canned subclasses. Later we might generate the classes on demand.
+/// fixed number of subclasses. Later we might generate the classes on demand.
 class Instantiation1<T1> extends Instantiation {
   Instantiation1(Closure f) : super(f);
   List get _types => [T1];
@@ -3119,16 +3119,283 @@
   List get _types => [T1, T2, T3];
 }
 
-Instantiation instantiate1<U>(Closure f) {
-  return new Instantiation1<U>(f);
+class Instantiation4<T1, T2, T3, T4> extends Instantiation {
+  Instantiation4(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4];
 }
 
-Instantiation instantiate2<U, V>(Closure f) {
-  return new Instantiation2<U, V>(f);
+class Instantiation5<T1, T2, T3, T4, T5> extends Instantiation {
+  Instantiation5(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4, T5];
 }
 
-Instantiation instantiate3<U, V, W>(Closure f) {
-  return new Instantiation3<U, V, W>(f);
+class Instantiation6<T1, T2, T3, T4, T5, T6> extends Instantiation {
+  Instantiation6(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4, T5, T6];
+}
+
+class Instantiation7<T1, T2, T3, T4, T5, T6, T7> extends Instantiation {
+  Instantiation7(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4, T5, T6, T7];
+}
+
+class Instantiation8<T1, T2, T3, T4, T5, T6, T7, T8> extends Instantiation {
+  Instantiation8(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4, T5, T6, T7, T8];
+}
+
+class Instantiation9<T1, T2, T3, T4, T5, T6, T7, T8, T9> extends Instantiation {
+  Instantiation9(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4, T5, T6, T7, T8, T9];
+}
+
+class Instantiation10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
+    extends Instantiation {
+  Instantiation10(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10];
+}
+
+class Instantiation11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
+    extends Instantiation {
+  Instantiation11(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11];
+}
+
+class Instantiation12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
+    extends Instantiation {
+  Instantiation12(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12];
+}
+
+class Instantiation13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
+    extends Instantiation {
+  Instantiation13(Closure f) : super(f);
+  List get _types => [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13];
+}
+
+class Instantiation14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14> extends Instantiation {
+  Instantiation14(Closure f) : super(f);
+  List get _types =>
+      [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14];
+}
+
+class Instantiation15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15> extends Instantiation {
+  Instantiation15(Closure f) : super(f);
+  List get _types =>
+      [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15];
+}
+
+class Instantiation16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16> extends Instantiation {
+  Instantiation16(Closure f) : super(f);
+  List get _types =>
+      [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16];
+}
+
+class Instantiation17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17> extends Instantiation {
+  Instantiation17(Closure f) : super(f);
+  List get _types => [
+        T1,
+        T2,
+        T3,
+        T4,
+        T5,
+        T6,
+        T7,
+        T8,
+        T9,
+        T10,
+        T11,
+        T12,
+        T13,
+        T14,
+        T15,
+        T16,
+        T17
+      ];
+}
+
+class Instantiation18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18> extends Instantiation {
+  Instantiation18(Closure f) : super(f);
+  List get _types => [
+        T1,
+        T2,
+        T3,
+        T4,
+        T5,
+        T6,
+        T7,
+        T8,
+        T9,
+        T10,
+        T11,
+        T12,
+        T13,
+        T14,
+        T15,
+        T16,
+        T17,
+        T18
+      ];
+}
+
+class Instantiation19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19> extends Instantiation {
+  Instantiation19(Closure f) : super(f);
+  List get _types => [
+        T1,
+        T2,
+        T3,
+        T4,
+        T5,
+        T6,
+        T7,
+        T8,
+        T9,
+        T10,
+        T11,
+        T12,
+        T13,
+        T14,
+        T15,
+        T16,
+        T17,
+        T18,
+        T19
+      ];
+}
+
+class Instantiation20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+    T14, T15, T16, T17, T18, T19, T20> extends Instantiation {
+  Instantiation20(Closure f) : super(f);
+  List get _types => [
+        T1,
+        T2,
+        T3,
+        T4,
+        T5,
+        T6,
+        T7,
+        T8,
+        T9,
+        T10,
+        T11,
+        T12,
+        T13,
+        T14,
+        T15,
+        T16,
+        T17,
+        T18,
+        T19,
+        T20
+      ];
+}
+
+Instantiation instantiate1<T1>(Closure f) {
+  return new Instantiation1<T1>(f);
+}
+
+Instantiation instantiate2<T1, T2>(Closure f) {
+  return new Instantiation2<T1, T2>(f);
+}
+
+Instantiation instantiate3<T1, T2, T3>(Closure f) {
+  return new Instantiation3<T1, T2, T3>(f);
+}
+
+Instantiation instantiate4<T1, T2, T3, T4>(Closure f) {
+  return new Instantiation4<T1, T2, T3, T4>(f);
+}
+
+Instantiation instantiate5<T1, T2, T3, T4, T5>(Closure f) {
+  return new Instantiation5<T1, T2, T3, T4, T5>(f);
+}
+
+Instantiation instantiate6<T1, T2, T3, T4, T5, T6>(Closure f) {
+  return new Instantiation6<T1, T2, T3, T4, T5, T6>(f);
+}
+
+Instantiation instantiate7<T1, T2, T3, T4, T5, T6, T7>(Closure f) {
+  return new Instantiation7<T1, T2, T3, T4, T5, T6, T7>(f);
+}
+
+Instantiation instantiate8<T1, T2, T3, T4, T5, T6, T7, T8>(Closure f) {
+  return new Instantiation8<T1, T2, T3, T4, T5, T6, T7, T8>(f);
+}
+
+Instantiation instantiate9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(Closure f) {
+  return new Instantiation9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(f);
+}
+
+Instantiation instantiate10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
+    Closure f) {
+  return new Instantiation10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(f);
+}
+
+Instantiation instantiate11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(
+    Closure f) {
+  return new Instantiation11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(f);
+}
+
+Instantiation instantiate12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(
+    Closure f) {
+  return new Instantiation12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(
+      f);
+}
+
+Instantiation
+    instantiate13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(
+        Closure f) {
+  return new Instantiation13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13>(f);
+}
+
+Instantiation
+    instantiate14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(
+        Closure f) {
+  return new Instantiation14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14>(f);
+}
+
+Instantiation instantiate15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+    T13, T14, T15>(Closure f) {
+  return new Instantiation15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15>(f);
+}
+
+Instantiation instantiate16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+    T13, T14, T15, T16>(Closure f) {
+  return new Instantiation16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16>(f);
+}
+
+Instantiation instantiate17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+    T13, T14, T15, T16, T17>(Closure f) {
+  return new Instantiation17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17>(f);
+}
+
+Instantiation instantiate18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+    T13, T14, T15, T16, T17, T18>(Closure f) {
+  return new Instantiation18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18>(f);
+}
+
+Instantiation instantiate19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+    T13, T14, T15, T16, T17, T18, T19>(Closure f) {
+  return new Instantiation19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19>(f);
+}
+
+Instantiation instantiate20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+    T13, T14, T15, T16, T17, T18, T19, T20>(Closure f) {
+  return new Instantiation20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+      T13, T14, T15, T16, T17, T18, T19, T20>(f);
 }
 
 bool jsHasOwnProperty(var jsObject, String property) {
diff --git a/tests/co19/co19-kernel.status b/tests/co19/co19-kernel.status
index a716a8e..3cc75c9 100644
--- a/tests/co19/co19-kernel.status
+++ b/tests/co19/co19-kernel.status
@@ -11,7 +11,6 @@
 Language/Functions/Formal_Parameters/Optional_Formals/default_value_t02: MissingCompileTimeError
 Language/Mixins/Mixin_Application/syntax_t21: CompileTimeError
 Language/Types/Type_Void/syntax_t08: MissingCompileTimeError
-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.
@@ -582,6 +581,8 @@
 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
@@ -895,6 +896,7 @@
 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
@@ -915,6 +917,7 @@
 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_t01: 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
@@ -1024,6 +1027,7 @@
 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
@@ -1121,8 +1125,13 @@
 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_t08: MissingCompileTimeError
-Language/Types/Type_Void/syntax_t09: MissingCompileTimeError
+Language/Types/Type_Void/using_t01: CompileTimeError
+Language/Types/Type_Void/using_t02: CompileTimeError
+Language/Types/Type_Void/using_t03: CompileTimeError
 Language/Variables/constant_variable_t01: CompileTimeError
 Language/Variables/constant_variable_t02: CompileTimeError
 Language/Variables/constant_variable_t03: CompileTimeError
@@ -1201,6 +1210,9 @@
 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
diff --git a/tests/co19_2/co19_2-kernel.status b/tests/co19_2/co19_2-kernel.status
index ab8f393..ac635f5 100644
--- a/tests/co19_2/co19_2-kernel.status
+++ b/tests/co19_2/co19_2-kernel.status
@@ -197,11 +197,7 @@
 Language/Types/Static_Types/malformed_type_t01/04: MissingCompileTimeError
 Language/Types/Static_Types/malformed_type_t01/05: MissingCompileTimeError
 Language/Types/Static_Types/malformed_type_t01/06: MissingCompileTimeError
-Language/Types/Type_Void/returning_t03: MissingCompileTimeError
-Language/Types/Type_Void/returning_t04: MissingCompileTimeError
-Language/Types/Type_Void/returning_t05: MissingCompileTimeError
 Language/Types/Type_Void/syntax_t08: MissingCompileTimeError
-Language/Types/Type_Void/using_t01: MissingCompileTimeError
 Language/Variables/final_or_static_initialization_t02: MissingCompileTimeError
 Language/Variables/final_or_static_initialization_t03: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_l1_t01: MissingCompileTimeError
@@ -789,3 +785,14 @@
 LibTest/typed_data/Uint8List/first_A01_t02: RuntimeError
 LibTest/typed_data/Uint8List/last_A01_t02: RuntimeError
 Utils/tests/Expect/throws_A01_t04: RuntimeError
+
+[ $fasta && $strong ]
+Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/not_overriden_members_t01: CompileTimeError
+Language/Types/Type_Void/syntax_t09: CompileTimeError
+Language/Types/Type_Void/using_t02: CompileTimeError
+Language/Types/Type_Void/using_t03: CompileTimeError
+LibTest/io/Stdin/readLineSync_A03_t01: CompileTimeError
+LibTest/io/Stdin/readLineSync_A03_t02: CompileTimeError
+LibTest/io/Stdin/readLineSync_A03_t03: CompileTimeError
+LibTest/io/Stdin/readLineSync_A03_t04: CompileTimeError
+LibTest/io/Stdin/readLineSync_A04_t01: CompileTimeError
diff --git a/tests/compiler/dart2js/codegen/strength_eq_test.dart b/tests/compiler/dart2js/codegen/strength_eq_test.dart
index 327c9cc..b75b0c5 100644
--- a/tests/compiler/dart2js/codegen/strength_eq_test.dart
+++ b/tests/compiler/dart2js/codegen/strength_eq_test.dart
@@ -17,7 +17,7 @@
   a.link = a;
   return a;
 }
-void main() {
+main() {
   var x = foo(0);
   return x == x.link;
 }
diff --git a/tests/compiler/dart2js/generic_methods/instantiation_stub_test.dart b/tests/compiler/dart2js/generic_methods/instantiation_stub_test.dart
index 4933012..ff59958 100644
--- a/tests/compiler/dart2js/generic_methods/instantiation_stub_test.dart
+++ b/tests/compiler/dart2js/generic_methods/instantiation_stub_test.dart
@@ -87,11 +87,11 @@
           "Expected: $expectedStubs\n Actual: $actualStubs");
     }
 
-    checkStubs(closedWorld.commonElements.instantiation1Class,
+    checkStubs(closedWorld.commonElements.getInstantiationClass(1),
         [r'call$1', r'$signature']);
-    checkStubs(closedWorld.commonElements.instantiation2Class,
+    checkStubs(closedWorld.commonElements.getInstantiationClass(2),
         [r'call$2', r'$signature']);
-    checkStubs(closedWorld.commonElements.instantiation3Class,
+    checkStubs(closedWorld.commonElements.getInstantiationClass(3),
         [r'call$3', r'call$4', r'$signature']);
   });
 }
diff --git a/tests/compiler/dart2js/sourcemaps/name_test.dart b/tests/compiler/dart2js/sourcemaps/name_test.dart
index f540c8b..e1340d7 100644
--- a/tests/compiler/dart2js/sourcemaps/name_test.dart
+++ b/tests/compiler/dart2js/sourcemaps/name_test.dart
@@ -16,7 +16,7 @@
 const String SOURCE = '''
 
 var toplevelField;
-void toplevelMethod() {}
+toplevelMethod() {}
 void toplevelAnonymous() {
   var foo = () {};
 }
diff --git a/tests/compiler/dart2js_extra/dart2js_extra.status b/tests/compiler/dart2js_extra/dart2js_extra.status
index 69f5055..fc1fe8b 100644
--- a/tests/compiler/dart2js_extra/dart2js_extra.status
+++ b/tests/compiler/dart2js_extra/dart2js_extra.status
@@ -8,6 +8,7 @@
 class_test: Fail
 constant_javascript_semantics4_test: Fail, OK
 generic_class_is_test: Fail # Issue 32004
+many_instantiations_test/01: Crash # Issue 33819
 no_such_method_test: Fail # Wrong Invocation.memberName.
 statements_test: Fail
 typed_locals_test: Pass, Fail
diff --git a/tests/compiler/dart2js_extra/deferred/type_literal_lib.dart b/tests/compiler/dart2js_extra/deferred/type_literal_lib.dart
new file mode 100644
index 0000000..867c399
--- /dev/null
+++ b/tests/compiler/dart2js_extra/deferred/type_literal_lib.dart
@@ -0,0 +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.
+
+class A {}
+
+class B {}
diff --git a/tests/compiler/dart2js_extra/deferred/type_literal_test.dart b/tests/compiler/dart2js_extra/deferred/type_literal_test.dart
new file mode 100644
index 0000000..d578d8d
--- /dev/null
+++ b/tests/compiler/dart2js_extra/deferred/type_literal_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.
+
+// Regression test for Issue #33890.
+//
+// This fails if type literal constants are not deferred, but their RTI
+// representation is. This test however will not detect if we accidentally start
+// building the RTI representation in the main deferred unit (which is what was
+// happening before the bug was introduced).
+
+import 'type_literal_lib.dart' deferred as a;
+import 'package:expect/expect.dart';
+
+main() async {
+  await a.loadLibrary();
+  Expect.isFalse(confuse(a.A) == confuse(a.B));
+}
+
+@NoInline()
+confuse(x) => x;
diff --git a/tests/compiler/dart2js_extra/deferred/typedef_lib.dart b/tests/compiler/dart2js_extra/deferred/typedef_lib.dart
new file mode 100644
index 0000000..2bccab5
--- /dev/null
+++ b/tests/compiler/dart2js_extra/deferred/typedef_lib.dart
@@ -0,0 +1,10 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class A {}
+
+class B {}
+
+typedef C(A a);
+typedef D(B a);
diff --git a/tests/compiler/dart2js_extra/deferred/typedef_test.dart b/tests/compiler/dart2js_extra/deferred/typedef_test.dart
new file mode 100644
index 0000000..1ad34a3
--- /dev/null
+++ b/tests/compiler/dart2js_extra/deferred/typedef_test.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.
+
+// Regression test for Issue #33890.
+//
+// This fails if type literal constants are not deferred, but their RTI
+// representation is. This test however will not detect if we accidentally start
+// building the RTI representation in the main deferred unit (which is what was
+// happening before the bug was introduced).
+
+import 'typedef_lib.dart' deferred as a;
+import 'package:expect/expect.dart';
+
+main() async {
+  await a.loadLibrary();
+  print(a.A); // unclear why without this the definition of A and B gets pulled
+  print(a.B); // into the main output unit.
+  Expect.isFalse(confuse(a.C) == confuse(a.D));
+}
+
+@NoInline()
+confuse(x) => x;
diff --git a/tests/compiler/dart2js_extra/inference_super_set_call_test.dart b/tests/compiler/dart2js_extra/inference_super_set_call_test.dart
index 4258546..19e1a06 100644
--- a/tests/compiler/dart2js_extra/inference_super_set_call_test.dart
+++ b/tests/compiler/dart2js_extra/inference_super_set_call_test.dart
@@ -10,9 +10,7 @@
 abstract class A {
   set x(v) {}
   set z(v) {}
-  set y(v) {
-    return 'hi';
-  }
+  set y(v) => 'hi';
 }
 
 class S extends A {
diff --git a/tests/compiler/dart2js_extra/many_instantiations_test.dart b/tests/compiler/dart2js_extra/many_instantiations_test.dart
new file mode 100644
index 0000000..9ba578a
--- /dev/null
+++ b/tests/compiler/dart2js_extra/many_instantiations_test.dart
@@ -0,0 +1,296 @@
+// 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 generic instantiation with many type arguments.
+
+import 'package:expect/expect.dart';
+
+f1<T1>(T1 t1) => '$t1';
+f2<T1, T2>(T1 t1, T2 t2) => '$t1$t2';
+f3<T1, T2, T3>(T1 t1, T2 t2, T3 t3) => '$t1$t2$t3';
+f4<T1, T2, T3, T4>(T1 t1, T2 t2, T3 t3, T4 t4) => '$t1$t2$t3$t4';
+f5<T1, T2, T3, T4, T5>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) => '$t1$t2$t3$t4$t5';
+f6<T1, T2, T3, T4, T5, T6>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) =>
+    '$t1$t2$t3$t4$t5$t6';
+f7<T1, T2, T3, T4, T5, T6, T7>(
+        T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) =>
+    '$t1$t2$t3$t4$t5$t6$t7';
+f8<T1, T2, T3, T4, T5, T6, T7, T8>(
+        T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8';
+f9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
+        T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9';
+f10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5,
+        T6 t6, T7 t7, T8 t8, T9 t9, T10 t10) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10';
+f11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(T1 t1, T2 t2, T3 t3, T4 t4,
+        T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11';
+f12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(T1 t1, T2 t2, T3 t3,
+        T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12';
+f13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(
+        T1 t1,
+        T2 t2,
+        T3 t3,
+        T4 t4,
+        T5 t5,
+        T6 t6,
+        T7 t7,
+        T8 t8,
+        T9 t9,
+        T10 t10,
+        T11 t11,
+        T12 t12,
+        T13 t13) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13';
+f14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(
+        T1 t1,
+        T2 t2,
+        T3 t3,
+        T4 t4,
+        T5 t5,
+        T6 t6,
+        T7 t7,
+        T8 t8,
+        T9 t9,
+        T10 t10,
+        T11 t11,
+        T12 t12,
+        T13 t13,
+        T14 t14) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14';
+f15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(
+        T1 t1,
+        T2 t2,
+        T3 t3,
+        T4 t4,
+        T5 t5,
+        T6 t6,
+        T7 t7,
+        T8 t8,
+        T9 t9,
+        T10 t10,
+        T11 t11,
+        T12 t12,
+        T13 t13,
+        T14 t14,
+        T15 t15) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15';
+f16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(
+        T1 t1,
+        T2 t2,
+        T3 t3,
+        T4 t4,
+        T5 t5,
+        T6 t6,
+        T7 t7,
+        T8 t8,
+        T9 t9,
+        T10 t10,
+        T11 t11,
+        T12 t12,
+        T13 t13,
+        T14 t14,
+        T15 t15,
+        T16 t16) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16';
+f17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(
+        T1 t1,
+        T2 t2,
+        T3 t3,
+        T4 t4,
+        T5 t5,
+        T6 t6,
+        T7 t7,
+        T8 t8,
+        T9 t9,
+        T10 t10,
+        T11 t11,
+        T12 t12,
+        T13 t13,
+        T14 t14,
+        T15 t15,
+        T16 t16,
+        T17 t17) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17';
+f18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17,
+            T18>(
+        T1 t1,
+        T2 t2,
+        T3 t3,
+        T4 t4,
+        T5 t5,
+        T6 t6,
+        T7 t7,
+        T8 t8,
+        T9 t9,
+        T10 t10,
+        T11 t11,
+        T12 t12,
+        T13 t13,
+        T14 t14,
+        T15 t15,
+        T16 t16,
+        T17 t17,
+        T18 t18) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17$t18';
+f19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17,
+            T18, T19>(
+        T1 t1,
+        T2 t2,
+        T3 t3,
+        T4 t4,
+        T5 t5,
+        T6 t6,
+        T7 t7,
+        T8 t8,
+        T9 t9,
+        T10 t10,
+        T11 t11,
+        T12 t12,
+        T13 t13,
+        T14 t14,
+        T15 t15,
+        T16 t16,
+        T17 t17,
+        T18 t18,
+        T19 t19) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17$t18$t19';
+f20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17,
+            T18, T19, T20>(
+        T1 t1,
+        T2 t2,
+        T3 t3,
+        T4 t4,
+        T5 t5,
+        T6 t6,
+        T7 t7,
+        T8 t8,
+        T9 t9,
+        T10 t10,
+        T11 t11,
+        T12 t12,
+        T13 t13,
+        T14 t14,
+        T15 t15,
+        T16 t16,
+        T17 t17,
+        T18 t18,
+        T19 t19,
+        T20 t20) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17$t18$t19$t20';
+f21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17,
+            T18, T19, T20, T21>(
+        T1 t1,
+        T2 t2,
+        T3 t3,
+        T4 t4,
+        T5 t5,
+        T6 t6,
+        T7 t7,
+        T8 t8,
+        T9 t9,
+        T10 t10,
+        T11 t11,
+        T12 t12,
+        T13 t13,
+        T14 t14,
+        T15 t15,
+        T16 t16,
+        T17 t17,
+        T18 t18,
+        T19 t19,
+        T20 t20,
+        T21 t21) =>
+    '$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17$t18$t19$t20$t21';
+
+m1(Function(int) f) => f(1);
+m2(Function(int, int) f) => f(1, 2);
+m3(Function(int, int, int) f) => f(1, 2, 3);
+m4(Function(int, int, int, int) f) => f(1, 2, 3, 4);
+m5(Function(int, int, int, int, int) f) => f(1, 2, 3, 4, 5);
+m6(Function(int, int, int, int, int, int) f) => f(1, 2, 3, 4, 5, 6);
+m7(Function(int, int, int, int, int, int, int) f) => f(1, 2, 3, 4, 5, 6, 7);
+m8(Function(int, int, int, int, int, int, int, int) f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8);
+m9(Function(int, int, int, int, int, int, int, int, int) f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9);
+m10(Function(int, int, int, int, int, int, int, int, int, int) f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+m11(Function(int, int, int, int, int, int, int, int, int, int, int) f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
+m12(Function(int, int, int, int, int, int, int, int, int, int, int, int) f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
+m13(
+        Function(
+                int, int, int, int, int, int, int, int, int, int, int, int, int)
+            f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
+m14(
+        Function(int, int, int, int, int, int, int, int, int, int, int, int,
+                int, int)
+            f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
+m15(
+        Function(int, int, int, int, int, int, int, int, int, int, int, int,
+                int, int, int)
+            f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+m16(
+        Function(int, int, int, int, int, int, int, int, int, int, int, int,
+                int, int, int, int)
+            f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
+m17(
+        Function(int, int, int, int, int, int, int, int, int, int, int, int,
+                int, int, int, int, int)
+            f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17);
+m18(
+        Function(int, int, int, int, int, int, int, int, int, int, int, int,
+                int, int, int, int, int, int)
+            f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18);
+m19(
+        Function(int, int, int, int, int, int, int, int, int, int, int, int,
+                int, int, int, int, int, int, int)
+            f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19);
+m20(
+        Function(int, int, int, int, int, int, int, int, int, int, int, int,
+                int, int, int, int, int, int, int, int)
+            f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
+m21(
+        Function(int, int, int, int, int, int, int, int, int, int, int, int,
+                int, int, int, int, int, int, int, int, int)
+            f) =>
+    f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+        21);
+
+main() {
+  Expect.equals('1', m1(f1));
+  Expect.equals('12', m2(f2));
+  Expect.equals('123', m3(f3));
+  Expect.equals('1234', m4(f4));
+  Expect.equals('12345', m5(f5));
+  Expect.equals('123456', m6(f6));
+  Expect.equals('1234567', m7(f7));
+  Expect.equals('12345678', m8(f8));
+  Expect.equals('123456789', m9(f9));
+  Expect.equals('12345678910', m10(f10));
+  Expect.equals('1234567891011', m11(f11));
+  Expect.equals('123456789101112', m12(f12));
+  Expect.equals('12345678910111213', m13(f13));
+  Expect.equals('1234567891011121314', m14(f14));
+  Expect.equals('123456789101112131415', m15(f15));
+  Expect.equals('12345678910111213141516', m16(f16));
+  Expect.equals('1234567891011121314151617', m17(f17));
+  Expect.equals('123456789101112131415161718', m18(f18));
+  Expect.equals('12345678910111213141516171819', m19(f19));
+  Expect.equals('1234567891011121314151617181920', m20(f20));
+  Expect.equals('123456789101112131415161718192021', m21(f21)); //# 01: ok
+}
diff --git a/tests/compiler/dart2js_extra/no_such_method_strong12_test.dart b/tests/compiler/dart2js_extra/no_such_method_strong12_test.dart
new file mode 100644
index 0000000..b097966
--- /dev/null
+++ b/tests/compiler/dart2js_extra/no_such_method_strong12_test.dart
@@ -0,0 +1,27 @@
+// 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.
+
+// dart2jsOptions=--strong
+
+import 'package:expect/expect.dart';
+
+abstract class A {
+  m({a: 1, c: 3, b: 2});
+}
+
+class B implements A {
+  noSuchMethod(Invocation i) {
+    return '${i.namedArguments[#a]},${i.namedArguments[#b]},${i.namedArguments[#c]}';
+  }
+}
+
+void main() {
+  A x = new B();
+  Expect.equals('1,2,3', x.m());
+  Expect.equals('1,2,3', x.m(a: 1));
+  Expect.equals('1,2,3', x.m(c: 3));
+  Expect.equals('1,2,3', x.m(b: 2));
+  Expect.equals('1,2,3', x.m(a: 1, b: 2));
+  Expect.equals('1,2,3', x.m(a: 1, b: 2, c: 3));
+}
diff --git a/tests/compiler/dart2js_extra/string_interpolation_dynamic_test.dart b/tests/compiler/dart2js_extra/string_interpolation_dynamic_test.dart
index 91e9487..115f070 100644
--- a/tests/compiler/dart2js_extra/string_interpolation_dynamic_test.dart
+++ b/tests/compiler/dart2js_extra/string_interpolation_dynamic_test.dart
Binary files differ
diff --git a/tests/compiler/dart2js_extra/string_interpolation_test.dart b/tests/compiler/dart2js_extra/string_interpolation_test.dart
index beded4c..027128a 100644
--- a/tests/compiler/dart2js_extra/string_interpolation_test.dart
+++ b/tests/compiler/dart2js_extra/string_interpolation_test.dart
Binary files differ
diff --git a/tests/compiler/dart2js_native/native_closure_identity_frog_test.dart b/tests/compiler/dart2js_native/native_closure_identity_frog_test.dart
index 68c07fe..c5f5084 100644
--- a/tests/compiler/dart2js_native/native_closure_identity_frog_test.dart
+++ b/tests/compiler/dart2js_native/native_closure_identity_frog_test.dart
@@ -4,7 +4,7 @@
 
 import 'native_testing.dart';
 
-typedef void MyFunctionType();
+typedef MyFunctionType();
 
 @Native("A")
 class A {
diff --git a/tests/language_2/async_star_test.dart b/tests/language_2/async_star_test.dart
index abe7de8..fa18ff4 100644
--- a/tests/language_2/async_star_test.dart
+++ b/tests/language_2/async_star_test.dart
@@ -596,7 +596,8 @@
       f() async* {
         try {
           list.add(0);
-          yield list.add(1);
+          list.add(1);
+          yield null;
           list.add(2);
         } finally {
           exits.complete(3);
diff --git a/tests/language_2/inferrer_this_access_test.dart b/tests/language_2/inferrer_this_access_test.dart
index 2115bc3..4d1b5fc 100644
--- a/tests/language_2/inferrer_this_access_test.dart
+++ b/tests/language_2/inferrer_this_access_test.dart
@@ -25,7 +25,7 @@
 
 class C extends B {
   set hest(value) {
-    return a + 42;
+    a + 42;
   }
 }
 
diff --git a/tests/language_2/issue15606_test.dart b/tests/language_2/issue15606_test.dart
index dc3ad7a..a1ec9f9 100644
--- a/tests/language_2/issue15606_test.dart
+++ b/tests/language_2/issue15606_test.dart
@@ -6,7 +6,7 @@
 
 var a = [new Object(), 42];
 
-void bar(x, y) {}
+bar(x, y) {}
 
 main() {
   while (false) {
diff --git a/tests/language_2/language_2.status b/tests/language_2/language_2.status
index 0572c2e..0251095 100644
--- a/tests/language_2/language_2.status
+++ b/tests/language_2/language_2.status
@@ -30,45 +30,6 @@
 stacktrace_demangle_ctors_test: SkipByDesign # Names are not scrubbed.
 type_checks_in_factory_method_test: SkipByDesign # Requires checked mode.
 
-[ $fasta ]
-initializer_super_last_test/cc04: MissingCompileTimeError
-initializer_super_last_test/cc09: MissingCompileTimeError
-initializer_super_last_test/cc10: MissingCompileTimeError
-initializer_super_last_test/cc11: MissingCompileTimeError
-initializer_super_last_test/cc12: MissingCompileTimeError
-initializer_super_last_test/cc13: MissingCompileTimeError
-initializer_super_last_test/cc14: MissingCompileTimeError
-initializer_super_last_test/cc15: MissingCompileTimeError
-initializer_super_last_test/cc16: MissingCompileTimeError
-initializer_super_last_test/cc25: MissingCompileTimeError
-initializer_super_last_test/cc26: MissingCompileTimeError
-initializer_super_last_test/cc27: MissingCompileTimeError
-initializer_super_last_test/cc28: MissingCompileTimeError
-initializer_super_last_test/cc29: MissingCompileTimeError
-initializer_super_last_test/cc30: MissingCompileTimeError
-initializer_super_last_test/cc31: MissingCompileTimeError
-initializer_super_last_test/cc32: MissingCompileTimeError
-void/return_future_future_or_void_async_error0_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_future_or_void_sync_error0_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_or_future_or_void_sync_error0_test: MissingCompileTimeError
-void/return_future_or_future_or_void_sync_error1_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_or_void_async_error0_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_or_void_sync_error0_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_or_void_sync_error1_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_or_void_sync_error2_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_or_void_sync_error3_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_void_async_error0_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_void_async_error1_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_future_void_async_error2_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_void_async_error0_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_void_async_error1_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_void_async_error2_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_void_async_error3_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_void_async_error4_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_void_sync_error0_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_void_sync_error1_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-void/return_void_sync_error2_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/33218
-
 [ $compiler != app_jitk && $compiler != dartk && $compiler != dartkp && $mode == debug && $runtime == vm ]
 built_in_identifier_type_annotation_test/set: Crash # Not supported by legacy VM front-end.
 
diff --git a/tests/language_2/language_2_analyzer.status b/tests/language_2/language_2_analyzer.status
index 42452d8..c6dcd86 100644
--- a/tests/language_2/language_2_analyzer.status
+++ b/tests/language_2/language_2_analyzer.status
@@ -221,78 +221,51 @@
 vm/regress_33469_test/03: MissingCompileTimeError # http://dartbug.com/33481
 void_type_override_test/02: MissingCompileTimeError
 void_type_override_test/03: MissingCompileTimeError
-void_type_usage_test/call_conditional: MissingCompileTimeError
 void_type_usage_test/call_literal_list_init: MissingCompileTimeError
 void_type_usage_test/call_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/call_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/call_void_init: MissingCompileTimeError
-void_type_usage_test/conditional2_conditional: MissingCompileTimeError
-void_type_usage_test/conditional2_for: MissingCompileTimeError
 void_type_usage_test/conditional2_literal_list_init: MissingCompileTimeError
 void_type_usage_test/conditional2_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/conditional2_null_equals2: MissingCompileTimeError
-void_type_usage_test/conditional2_parens: MissingCompileTimeError
-void_type_usage_test/conditional2_return: MissingCompileTimeError
-void_type_usage_test/conditional2_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional2_stmt: MissingCompileTimeError
 void_type_usage_test/conditional2_void_init: MissingCompileTimeError
-void_type_usage_test/conditional3_conditional: MissingCompileTimeError
-void_type_usage_test/conditional3_for: MissingCompileTimeError
 void_type_usage_test/conditional3_literal_list_init: MissingCompileTimeError
 void_type_usage_test/conditional3_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/conditional3_null_equals2: MissingCompileTimeError
-void_type_usage_test/conditional3_parens: MissingCompileTimeError
-void_type_usage_test/conditional3_return: MissingCompileTimeError
-void_type_usage_test/conditional3_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional3_stmt: MissingCompileTimeError
 void_type_usage_test/conditional3_void_init: MissingCompileTimeError
-void_type_usage_test/conditional_conditional: MissingCompileTimeError
-void_type_usage_test/conditional_for: MissingCompileTimeError
 void_type_usage_test/conditional_literal_list_init: MissingCompileTimeError
 void_type_usage_test/conditional_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/conditional_null_equals2: MissingCompileTimeError
-void_type_usage_test/conditional_parens: MissingCompileTimeError
-void_type_usage_test/conditional_return: MissingCompileTimeError
-void_type_usage_test/conditional_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional_stmt: MissingCompileTimeError
 void_type_usage_test/conditional_void_init: MissingCompileTimeError
-void_type_usage_test/final_local_conditional: MissingCompileTimeError
 void_type_usage_test/final_local_for_in2: MissingCompileTimeError
 void_type_usage_test/final_local_literal_list_init: MissingCompileTimeError
 void_type_usage_test/final_local_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/final_local_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/final_local_void_init: MissingCompileTimeError
-void_type_usage_test/global_conditional: MissingCompileTimeError
 void_type_usage_test/global_literal_list_init: MissingCompileTimeError
 void_type_usage_test/global_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/global_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/global_void_init: MissingCompileTimeError
-void_type_usage_test/instance2_conditional: MissingCompileTimeError
 void_type_usage_test/instance2_literal_list_init: MissingCompileTimeError
 void_type_usage_test/instance2_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/instance2_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/instance2_void_init: MissingCompileTimeError
-void_type_usage_test/instance3_conditional: MissingCompileTimeError
 void_type_usage_test/instance3_literal_list_init: MissingCompileTimeError
 void_type_usage_test/instance3_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/instance3_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/instance3_void_init: MissingCompileTimeError
-void_type_usage_test/instance_conditional: MissingCompileTimeError
 void_type_usage_test/instance_literal_list_init: MissingCompileTimeError
 void_type_usage_test/instance_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/instance_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/instance_void_init: MissingCompileTimeError
-void_type_usage_test/local_conditional: MissingCompileTimeError
 void_type_usage_test/local_literal_list_init: MissingCompileTimeError
 void_type_usage_test/local_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/local_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/local_void_init: MissingCompileTimeError
-void_type_usage_test/param_conditional: MissingCompileTimeError
 void_type_usage_test/param_literal_list_init: MissingCompileTimeError
 void_type_usage_test/param_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/param_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/param_void_init: MissingCompileTimeError
-void_type_usage_test/paren_conditional: MissingCompileTimeError
 void_type_usage_test/paren_literal_list_init: MissingCompileTimeError
 void_type_usage_test/paren_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/paren_literal_map_value_init: MissingCompileTimeError
@@ -369,7 +342,6 @@
 generic_tearoff_test: CompileTimeError
 interceptor6_test: CompileTimeError
 issue13673_test: StaticWarning # Issue 31925
-issue15606_test/none: CompileTimeError # invalid use of void for dart 2
 issue31596_implement_covariant_test: CompileTimeError
 issue31596_override_test/01: CompileTimeError
 issue31596_override_test/02: CompileTimeError
diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status
index 329ec9c..bbd6c3e 100644
--- a/tests/language_2/language_2_dart2js.status
+++ b/tests/language_2/language_2_dart2js.status
@@ -702,46 +702,6 @@
 vm/uint32_shift_test: RuntimeError
 vm/unaligned_integer_access_literal_index_test: RuntimeError
 vm/unaligned_integer_access_register_index_test: RuntimeError
-void_block_return_test/00: MissingCompileTimeError
-void_type_usage_test/conditional2_argument: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_conditional: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_dynamic_init: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_for: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_literal_list_init: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_literal_map_value_init: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_literal_map_value_init2: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_null_equals2: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_parens: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_return: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional2_stmt: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_throw: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2_void_init: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2do_while: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2for_in: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional2while: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_argument: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_conditional: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_dynamic_init: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_for: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_literal_list_init: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_literal_map_value_init: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_literal_map_value_init2: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_null_equals2: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_parens: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_return: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional3_stmt: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_throw: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional3_void_init: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional_do_while: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional_for_in: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/conditional_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional_while: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/global_null_equals2: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/local_null_equals2: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/param_null_equals2: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
-void_type_usage_test/paren_null_equals2: Crash # 'package:front_end/src/fasta/type_inference/type_schema_environment.dart': Failed assertion: line 214 pos 12: 'false': is not true.
 wrong_number_type_arguments_test/01: MissingCompileTimeError
 wrong_number_type_arguments_test/none: Pass
 
@@ -897,10 +857,6 @@
 vm/uint32_shift_test: RuntimeError
 vm/unaligned_integer_access_literal_index_test: RuntimeError
 vm/unaligned_integer_access_register_index_test: RuntimeError
-void_block_return_test/00: MissingCompileTimeError
-void_type_usage_test/conditional2_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional3_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional_return_to_void: MissingCompileTimeError
 wrong_number_type_arguments_test/01: MissingCompileTimeError
 wrong_number_type_arguments_test/none: Pass
 
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index 1285c54..10eeba5 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -84,7 +84,6 @@
 invalid_type_argument_count_test/02: MissingCompileTimeError
 invalid_type_argument_count_test/03: MissingCompileTimeError
 invalid_type_argument_count_test/04: MissingCompileTimeError
-issue15606_test/none: CompileTimeError
 issue31596_implement_covariant_test: CompileTimeError
 issue31596_override_test/01: CompileTimeError
 issue31596_override_test/02: CompileTimeError
@@ -203,78 +202,51 @@
 void_type_function_types_test/none: CompileTimeError # Issue 30514
 void_type_override_test/02: MissingCompileTimeError
 void_type_override_test/03: MissingCompileTimeError
-void_type_usage_test/call_conditional: MissingCompileTimeError
 void_type_usage_test/call_literal_list_init: MissingCompileTimeError
 void_type_usage_test/call_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/call_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/call_void_init: MissingCompileTimeError
-void_type_usage_test/conditional2_conditional: MissingCompileTimeError
-void_type_usage_test/conditional2_for: MissingCompileTimeError
 void_type_usage_test/conditional2_literal_list_init: MissingCompileTimeError
 void_type_usage_test/conditional2_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/conditional2_null_equals2: MissingCompileTimeError
-void_type_usage_test/conditional2_parens: MissingCompileTimeError
-void_type_usage_test/conditional2_return: MissingCompileTimeError
-void_type_usage_test/conditional2_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional2_stmt: MissingCompileTimeError
 void_type_usage_test/conditional2_void_init: MissingCompileTimeError
-void_type_usage_test/conditional3_conditional: MissingCompileTimeError
-void_type_usage_test/conditional3_for: MissingCompileTimeError
 void_type_usage_test/conditional3_literal_list_init: MissingCompileTimeError
 void_type_usage_test/conditional3_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/conditional3_null_equals2: MissingCompileTimeError
-void_type_usage_test/conditional3_parens: MissingCompileTimeError
-void_type_usage_test/conditional3_return: MissingCompileTimeError
-void_type_usage_test/conditional3_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional3_stmt: MissingCompileTimeError
 void_type_usage_test/conditional3_void_init: MissingCompileTimeError
-void_type_usage_test/conditional_conditional: MissingCompileTimeError
-void_type_usage_test/conditional_for: MissingCompileTimeError
 void_type_usage_test/conditional_literal_list_init: MissingCompileTimeError
 void_type_usage_test/conditional_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/conditional_null_equals2: MissingCompileTimeError
-void_type_usage_test/conditional_parens: MissingCompileTimeError
-void_type_usage_test/conditional_return: MissingCompileTimeError
-void_type_usage_test/conditional_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional_stmt: MissingCompileTimeError
 void_type_usage_test/conditional_void_init: MissingCompileTimeError
-void_type_usage_test/final_local_conditional: MissingCompileTimeError
 void_type_usage_test/final_local_for_in2: MissingCompileTimeError
 void_type_usage_test/final_local_literal_list_init: MissingCompileTimeError
 void_type_usage_test/final_local_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/final_local_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/final_local_void_init: MissingCompileTimeError
-void_type_usage_test/global_conditional: MissingCompileTimeError
 void_type_usage_test/global_literal_list_init: MissingCompileTimeError
 void_type_usage_test/global_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/global_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/global_void_init: MissingCompileTimeError
-void_type_usage_test/instance2_conditional: MissingCompileTimeError
 void_type_usage_test/instance2_literal_list_init: MissingCompileTimeError
 void_type_usage_test/instance2_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/instance2_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/instance2_void_init: MissingCompileTimeError
-void_type_usage_test/instance3_conditional: MissingCompileTimeError
 void_type_usage_test/instance3_literal_list_init: MissingCompileTimeError
 void_type_usage_test/instance3_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/instance3_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/instance3_void_init: MissingCompileTimeError
-void_type_usage_test/instance_conditional: MissingCompileTimeError
 void_type_usage_test/instance_literal_list_init: MissingCompileTimeError
 void_type_usage_test/instance_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/instance_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/instance_void_init: MissingCompileTimeError
-void_type_usage_test/local_conditional: MissingCompileTimeError
 void_type_usage_test/local_literal_list_init: MissingCompileTimeError
 void_type_usage_test/local_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/local_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/local_void_init: MissingCompileTimeError
-void_type_usage_test/param_conditional: MissingCompileTimeError
 void_type_usage_test/param_literal_list_init: MissingCompileTimeError
 void_type_usage_test/param_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/param_literal_map_value_init: MissingCompileTimeError
 void_type_usage_test/param_void_init: MissingCompileTimeError
-void_type_usage_test/paren_conditional: MissingCompileTimeError
 void_type_usage_test/paren_literal_list_init: MissingCompileTimeError
 void_type_usage_test/paren_literal_map_key_init: MissingCompileTimeError
 void_type_usage_test/paren_literal_map_value_init: MissingCompileTimeError
@@ -545,10 +517,6 @@
 type_variable_bounds_test/06: MissingCompileTimeError
 type_variable_bounds_test/08: MissingCompileTimeError
 type_variable_bounds_test/11: MissingCompileTimeError
-void_block_return_test/00: MissingCompileTimeError
-void_type_usage_test/conditional2_return_to_void: MissingCompileTimeError, Crash
-void_type_usage_test/conditional3_return_to_void: MissingCompileTimeError, Crash
-void_type_usage_test/conditional_return_to_void: MissingCompileTimeError, Crash
 wrong_number_type_arguments_test/01: MissingCompileTimeError
 
 [ $compiler == dartdevk && $checked ]
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index cdaf95b..997c008 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -255,6 +255,23 @@
 field3_test/02: MissingCompileTimeError # Issue 33022
 generic_methods_bounds_test/01: MissingCompileTimeError # Issue 33018
 generic_methods_recursive_bound_test/02: MissingCompileTimeError # Issue 33018
+initializer_super_last_test/cc04: MissingCompileTimeError
+initializer_super_last_test/cc09: MissingCompileTimeError
+initializer_super_last_test/cc10: MissingCompileTimeError
+initializer_super_last_test/cc11: MissingCompileTimeError
+initializer_super_last_test/cc12: MissingCompileTimeError
+initializer_super_last_test/cc13: MissingCompileTimeError
+initializer_super_last_test/cc14: MissingCompileTimeError
+initializer_super_last_test/cc15: MissingCompileTimeError
+initializer_super_last_test/cc16: MissingCompileTimeError
+initializer_super_last_test/cc25: MissingCompileTimeError
+initializer_super_last_test/cc26: MissingCompileTimeError
+initializer_super_last_test/cc27: MissingCompileTimeError
+initializer_super_last_test/cc28: MissingCompileTimeError
+initializer_super_last_test/cc29: MissingCompileTimeError
+initializer_super_last_test/cc30: MissingCompileTimeError
+initializer_super_last_test/cc31: MissingCompileTimeError
+initializer_super_last_test/cc32: MissingCompileTimeError
 issue31596_super_test/02: MissingCompileTimeError
 issue31596_super_test/04: MissingCompileTimeError
 malbounded_instantiation_test/01: MissingCompileTimeError # Issue 33018
@@ -346,228 +363,6 @@
 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.
-void_type_callbacks_test/00: MissingCompileTimeError
-void_type_callbacks_test/01: MissingCompileTimeError
-void_type_function_types_test/04: MissingCompileTimeError # Issue 32804
-void_type_function_types_test/06: MissingCompileTimeError # Issue 32804
-void_type_function_types_test/08: MissingCompileTimeError # Issue 32804
-void_type_override_test/03: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_cascade: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_is: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_literal_map_key_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_null_dot: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_toString: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/call_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_for: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_parens: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_stmt: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional2while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_for: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_parens: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_stmt: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional3_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_for: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_parens: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_stmt: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/conditional_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_cascade: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_is: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_literal_map_key_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_null_dot: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_toString: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/final_local_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_cascade: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_is: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_literal_map_key_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_null_dot: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_toString: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/global_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_cascade: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_is: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_literal_map_key_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_null_dot: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_toString: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance2_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_cascade: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_is: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_literal_map_key_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_null_dot: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_toString: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance3_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_cascade: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_is: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_literal_map_key_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_null_dot: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_toString: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/instance_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_cascade: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_is: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_literal_map_key_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_null_dot: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_toString: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/local_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_cascade: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_is: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_literal_map_key_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_null_dot: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_toString: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/param_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_argument: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_cascade: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_conditional: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_do_while: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_dynamic_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_for_in: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_is: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_literal_list_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_literal_map_key_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_literal_map_key_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_literal_map_value_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_literal_map_value_init2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_null_dot: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_null_equals2: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_return: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_throw: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_toString: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_void_init: MissingCompileTimeError # Issue 32804
-void_type_usage_test/paren_while: MissingCompileTimeError # Issue 32804
 
 [ $arch != simarm && $arch != simarm64 && $arch != simdbc64 && $compiler == dartk && $runtime == vm && $strong ]
 export_ambiguous_main_test: Crash # Issue 32618
@@ -816,10 +611,6 @@
 vm/closure_memory_retention_test: Skip # KernelVM bug: Hits OOM
 vm/regress_29145_test: Skip # Issue 29145
 vm/type_cast_vm_test: RuntimeError
-void_block_return_test/00: MissingCompileTimeError
-void_type_usage_test/conditional2_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional3_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional_return_to_void: MissingCompileTimeError
 web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets
 wrong_number_type_arguments_test/01: MissingCompileTimeError
 wrong_number_type_arguments_test/none: Pass
@@ -1187,10 +978,6 @@
 vm/type_vm_test/30: MissingRuntimeError
 vm/type_vm_test/31: MissingRuntimeError
 vm/type_vm_test/32: MissingRuntimeError
-void_block_return_test/00: MissingCompileTimeError
-void_type_usage_test/conditional2_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional3_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional_return_to_void: MissingCompileTimeError
 wrong_number_type_arguments_test/01: MissingCompileTimeError
 
 [ $compiler == dartkp && $minified ]
@@ -1424,10 +1211,6 @@
 redirecting_factory_infinite_steps_test/01: MissingCompileTimeError
 redirecting_factory_malbounded_test/01: MissingCompileTimeError
 type_promotion_logical_and_test/01: MissingCompileTimeError
-void_block_return_test/00: MissingCompileTimeError
-void_type_usage_test/conditional2_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional3_return_to_void: MissingCompileTimeError
-void_type_usage_test/conditional_return_to_void: MissingCompileTimeError
 wrong_number_type_arguments_test/01: MissingCompileTimeError
 
 [ $fasta && !$strong ]
diff --git a/tests/language_2/void_type_usage_test.dart b/tests/language_2/void_type_usage_test.dart
index 5ba0547..8d25350 100644
--- a/tests/language_2/void_type_usage_test.dart
+++ b/tests/language_2/void_type_usage_test.dart
@@ -8,7 +8,7 @@
 
 Object testVoidParam(void x) {
   x;  //# param_stmt: ok
-  true ? x : x;  //# param_conditional: compile-time error
+  true ? x : x;  //# param_conditional: ok
   for (x; false; x) {}   //# param_for: ok
   use(x);   //# param_argument: compile-time error
   use(x as Object);  //# param_as: ok
@@ -40,7 +40,7 @@
 
 Object testVoidCall(void f()) {
   f();  //# call_stmt: ok
-  true ? f() : f();  //# call_conditional: compile-time error
+  true ? f() : f();  //# call_conditional: ok
   for (f(); false; f()) {}   //# call_for: ok
   use(f());   //# call_argument: compile-time error
   use(f() as Object);  //# call_as: ok
@@ -72,7 +72,7 @@
   void x;
   x = 42;   //# local_assign: ok
   x;  //# local_stmt: ok
-  true ? x : x;  //# local_conditional: compile-time error
+  true ? x : x;  //# local_conditional: ok
   for (x; false; x) {}   //# local_for: ok
   use(x);   //# local_argument: compile-time error
   use(x as Object);  //# local_as: ok
@@ -107,7 +107,7 @@
   final void x = null;
   x = 42;   //# final_local_assign: compile-time error
   x;  //# final_local_stmt: ok
-  true ? x : x;  //# final_local_conditional: compile-time error
+  true ? x : x;  //# final_local_conditional: ok
   for (x; false; x) {}   //# final_local_for: ok
   use(x);   //# final_local_argument: compile-time error
   use(x as Object);  //# final_local_as: ok
@@ -141,7 +141,7 @@
 void global;
 Object testVoidGlobal() {
   global;  //# global_stmt: ok
-  true ? global : global;  //# global_conditional: compile-time error
+  true ? global : global;  //# global_conditional: ok
   for (global; false; global) {}   //# global_for: ok
   use(global);   //# global_argument: compile-time error
   use(global as Object);  //# global_as: ok
@@ -171,12 +171,12 @@
   return global;   //# global_return_dynamic: ok
 }
 
-testVoidConditional() {
+Object testVoidConditional() {
   void x;
-  (true ? x : x);   //# conditional_parens: compile-time error
-  true ? x : x;  //# conditional_stmt: compile-time error
-  true ? true ? x : x : true ? x : x;  //# conditional_conditional: compile-time error
-  for (true ? x : x; false; true ? x : x) {}   //# conditional_for: compile-time error
+  (true ? x : x);   //# conditional_parens: ok
+  true ? x : x;  //# conditional_stmt: ok
+  true ? true ? x : x : true ? x : x;  //# conditional_conditional: ok
+  for (true ? x : x; false; true ? x : x) {}   //# conditional_for: ok
   use(true ? x : x);   //# conditional_argument: compile-time error
   void y = true ? x : x;   //# conditional_void_init: compile-time error
   dynamic z = true ? x : x;  //# conditional_dynamic_init: compile-time error
@@ -184,16 +184,16 @@
   [true ? x : x];   //# conditional_literal_list_init: compile-time error
   var m1 = {4: true ? x : x};   //# conditional_literal_map_value_init: compile-time error
   Map<dynamic, dynamic> m3 = {4: true ? x : x};  //# conditional_literal_map_value_init2: compile-time error
-  null ?? true ? x : x;  //# conditional_null_equals2: compile-time error
+  null ?? (true ? x : x);  //# conditional_null_equals2: compile-time error
   return true ? x : x;   //# conditional_return: compile-time error
   while (true ? x : x) {};  //# conditional_while: compile-time error
   do {} while (true ? x : x);  //# conditional_do_while: compile-time error
   for (var v in true ? x : x) {}   //# conditional_for_in: compile-time error
 
-  (true ? 499 : x);   //# conditional2_parens: compile-time error
-  true ? 499 : x;  //# conditional2_stmt: compile-time error
-  true ? true ? 499 : x : true ? 499 : x;  //# conditional2_conditional: compile-time error
-  for (true ? 499 : x; false; true ? 499 : x) {}   //# conditional2_for: compile-time error
+  (true ? 499 : x);   //# conditional2_parens: ok
+  true ? 499 : x;  //# conditional2_stmt: ok
+  true ? true ? 499 : x : true ? 499 : x;  //# conditional2_conditional: ok
+  for (true ? 499 : x; false; true ? 499 : x) {}   //# conditional2_for: ok
   use(true ? 499 : x);   //# conditional2_argument: compile-time error
   void y2 = true ? 499 : x;   //# conditional2_void_init: compile-time error
   dynamic z2 = true ? 499 : x;  //# conditional2_dynamic_init: compile-time error
@@ -201,16 +201,16 @@
   [true ? 499 : x];   //# conditional2_literal_list_init: compile-time error
   var m12 = {4: true ? 499 : x};   //# conditional2_literal_map_value_init: compile-time error
   Map<dynamic, dynamic> m32 = {4: true ? 499 : x};  //# conditional2_literal_map_value_init2: compile-time error
-  null ?? true ? 499 : x;  //# conditional2_null_equals2: compile-time error
+  null ?? (true ? 499 : x);  //# conditional2_null_equals2: compile-time error
   return true ? 499 : x;   //# conditional2_return: compile-time error
   while (true ? 499 : x) {};  //# conditional2while: compile-time error
   do {} while (true ? 499 : x);  //# conditional2do_while: compile-time error
   for (var v in true ? 499 : x) {}   //# conditional2for_in: compile-time error
 
-  (true ? x : 499);   //# conditional3_parens: compile-time error
-  true ? x : 499;  //# conditional3_stmt: compile-time error
-  true ? true ? x : 499 : true ? x : 499;  //# conditional3_conditional: compile-time error
-  for (true ? x : 499; false; true ? x : 499) {}   //# conditional3_for: compile-time error
+  (true ? x : 499);   //# conditional3_parens: ok
+  true ? x : 499;  //# conditional3_stmt: ok
+  true ? true ? x : 499 : true ? x : 499;  //# conditional3_conditional: ok
+  for (true ? x : 499; false; true ? x : 499) {}   //# conditional3_for: ok
   use(true ? x : 499);   //# conditional3_argument: compile-time error
   void y3 = true ? x : 499;   //# conditional3_void_init: compile-time error
   dynamic z3 = true ? x : 499;  //# conditional3_dynamic_init: compile-time error
@@ -218,13 +218,20 @@
   [true ? x : 499];   //# conditional3_literal_list_init: compile-time error
   var m13 = {4: true ? x : 499 };   //# conditional3_literal_map_value_init: compile-time error
   Map<dynamic, dynamic> m33 = {4: true ? x : 499 };  //# conditional3_literal_map_value_init2: compile-time error
-  null ?? true ? x : 499;  //# conditional3_null_equals2: compile-time error
+  null ?? (true ? x : 499);  //# conditional3_null_equals2: compile-time error
   return true ? x : 499;   //# conditional3_return: compile-time error
   while (true ? x : 499) {};  //# conditional_while: compile-time error
   do {} while (true ? x : 499);  //# conditional_do_while: compile-time error
   for (var v in true ? x : 499) {}   //# conditional_for_in: compile-time error
 }
 
+dynamic testVoidConditionalDynamic() {
+  void x;
+  return true ? x : x;   //# conditional_return_dynamic: ok
+  return true ? 499 : x;   //# conditional2_return_dynamic: ok
+  return true ? x : 499;   //# conditional3_return_dynamic: ok
+}
+
 class A<T> {
   T x;
 
@@ -258,7 +265,7 @@
   A<void> a = new A<void>();
   a.x = 499;  //# field_assign: ok
   a.x;  //# instance_stmt: ok
-  true ? a.x : a.x;  //# instance_conditional: compile-time error
+  true ? a.x : a.x;  //# instance_conditional: ok
   for (a.x; false; a.x) {}   //# instance_for: ok
   use(a.x);   //# instance_argument: compile-time error
   use(a.x as Object);  //# instance_as: ok
@@ -285,7 +292,7 @@
   B b = new B();
   b.x = 42;   //# field_assign2: ok
   b.x;  //# instance2_stmt: ok
-  true ? b.x : b.x;  //# instance2_conditional: compile-time error
+  true ? b.x : b.x;  //# instance2_conditional: ok
   for (b.x; false; b.x) {}   //# instance2_for: ok
   use(b.x);   //# instance2_argument: compile-time error
   use(b.x as Object);  //# instance2_as: ok
@@ -313,7 +320,7 @@
   C c = new C();
   c.x = 32;   //# setter_assign: ok
   c.x;  //# instance3_stmt: ok
-  true ? c.x : c.x;  //# instance3_conditional: compile-time error
+  true ? c.x : c.x;  //# instance3_conditional: ok
   for (c.x; false; c.x) {}   //# instance3_for: ok
   use(c.x);   //# instance3_argument: compile-time error
   use(c.x as Object);  //# instance3_as: ok
@@ -353,7 +360,7 @@
 Object testParenthesized() {
   void x;
   (x);  //# paren_stmt: ok
-  true ? (x) : (x);  //# paren_conditional: compile-time error
+  true ? (x) : (x);  //# paren_conditional: ok
   for ((x); false; (x)) {}   //# paren_for: ok
   use((x));   //# paren_argument: compile-time error
   use((x) as Object);  //# paren_as: ok
@@ -393,9 +400,9 @@
   return y;   //# local_return_to_void: ok
   return z;   //# final_local_return_to_void: ok
   return global;   //# global_return_to_void: ok
-  return true ? x : x;   //# conditional_return_to_void: compile-time error
-  return true ? 499 : x;   //# conditional2_return_to_void: compile-time error
-  return true ? x : 499;   //# conditional3_return_to_void: compile-time error
+  return true ? x : x;   //# conditional_return_to_void: ok
+  return true ? 499 : x;   //# conditional2_return_to_void: ok
+  return true ? x : 499;   //# conditional3_return_to_void: ok
   return a.x;   //# instance_return_to_void: ok
   return b.x;   //# instance2_return_to_void: ok
   return c.x;   //# instance3_return_to_void: ok
diff --git a/tests/lib_2/lib_2_kernel.status b/tests/lib_2/lib_2_kernel.status
index 29fd51d..462fd22 100644
--- a/tests/lib_2/lib_2_kernel.status
+++ b/tests/lib_2/lib_2_kernel.status
@@ -224,7 +224,6 @@
 mirrors/redirecting_factory_different_type_test/02: MissingCompileTimeError
 mirrors/redirecting_factory_different_type_test/none: RuntimeError
 mirrors/redirecting_factory_reflection_test: RuntimeError
-mirrors/top_level_accessors_test/01: MissingCompileTimeError
 
 # Enabling of dartk for sim{arm,arm64,dbc64} revealed these test failures, which
 # are to be triaged.  Isolate tests are skipped on purpose due to the usage of
@@ -334,9 +333,6 @@
 mirrors/redirecting_factory_different_type_test/01: MissingCompileTimeError
 mirrors/redirecting_factory_different_type_test/02: MissingCompileTimeError
 
-[ $fasta && $strong ]
-mirrors/top_level_accessors_test/01: MissingCompileTimeError
-
 [ $fasta && !$strong ]
 isolate/isolate_import_test/01: MissingCompileTimeError
 isolate/isolate_stress_test: CompileTimeError
diff --git a/tools/VERSION b/tools/VERSION
index aa8aef1..b33ce00 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 0
 PATCH 0
 PRERELEASE 69
-PRERELEASE_PATCH 0
+PRERELEASE_PATCH 1