diff --git a/BUILD.gn b/BUILD.gn
index 2ea12ba..dc70380 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -29,7 +29,6 @@
     ":dartanalyzer",
     ":dartdevc",
     ":runtime",
-    ":samples",
   ]
 }
 
@@ -42,13 +41,11 @@
   }
   deps = [
     "runtime/bin:dart",
-    "runtime/bin:entrypoints_verification_test_extension",
+    "runtime/bin:entrypoints_verification_test",
     "runtime/bin:ffi_test_dynamic_library",
     "runtime/bin:ffi_test_functions",
     "runtime/bin:process_test",
     "runtime/bin:run_vm_tests",
-    "runtime/bin:sample_extension",
-    "runtime/bin:test_extension",
     "runtime/vm:kernel_platform_files($host_toolchain)",
     "utils/kernel-service:kernel-service",
   ]
@@ -118,10 +115,6 @@
   deps = [ ":create_sdk" ]
 }
 
-group("samples") {
-  deps = [ "runtime/bin:sample_extension" ]
-}
-
 # This rule and the compressed_observatory_archive rule are for the Fuchsia
 # bots that pre-build the Observatory. They copy the observatory tar files to
 # the root build output directory for convenient access by the Fuchsia buildbot
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 13c9e52..8d80768 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -80,6 +80,12 @@
   `dart compile exe` and `dart compile aot-snapshot` commands, which offer the
   same functionality.
 
+#### Dart VM
+
+- **Breaking Change** [#45451][]: Support for `dart-ext:`-style native
+  extensions has been removed as previously announced. Use `dart:ffi` to bind
+  to native libraries instead.
+
 ## 2.14.0
 
 ### Language
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 5bc202c..0db0a7a 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -695,7 +695,7 @@
       push(arguments);
       _buildConstructorReferenceInvocation(
           beginToken.next!, beginToken.offset, Constness.explicitConst,
-          inMetadata: true);
+          inMetadata: true, inImplicitCreationContext: false);
       push(popForValue());
     } else {
       pop(); // Name last identifier
@@ -4792,12 +4792,12 @@
     debugEvent("NewExpression");
     _buildConstructorReferenceInvocation(
         token.next!, token.offset, Constness.explicitNew,
-        inMetadata: false);
+        inMetadata: false, inImplicitCreationContext: false);
   }
 
   void _buildConstructorReferenceInvocation(
       Token nameToken, int offset, Constness constness,
-      {required bool inMetadata}) {
+      {required bool inMetadata, required bool inImplicitCreationContext}) {
     assert(checkState(nameToken, [
       /*arguments*/ ValueKinds.Arguments,
       /*constructor name identifier*/ ValueKinds.IdentifierOrNull,
@@ -4828,7 +4828,8 @@
     ConstantContext savedConstantContext = pop() as ConstantContext;
     if (type is Generator) {
       push(type.invokeConstructor(
-          typeArguments, name, arguments, nameToken, nameLastToken, constness));
+          typeArguments, name, arguments, nameToken, nameLastToken, constness,
+          inImplicitCreationContext: inImplicitCreationContext));
     } else if (type is ParserRecovery) {
       push(new ParserErrorGenerator(
           this, nameToken, fasta.messageSyntheticToken));
@@ -4836,7 +4837,8 @@
       push(createInstantiationAndInvocation(
           () => type, typeArguments, name, name, arguments,
           instantiationOffset: offset,
-          invocationOffset: nameLastToken.charOffset));
+          invocationOffset: nameLastToken.charOffset,
+          inImplicitCreationContext: inImplicitCreationContext));
     } else {
       String? typeName;
       if (type is ProblemBuilder) {
@@ -4863,8 +4865,9 @@
       String constructorName,
       Arguments arguments,
       {required int instantiationOffset,
-      required int invocationOffset}) {
-    if (enableConstructorTearOffsInLibrary) {
+      required int invocationOffset,
+      required bool inImplicitCreationContext}) {
+    if (enableConstructorTearOffsInLibrary && inImplicitCreationContext) {
       Expression receiver = receiverFunction();
       if (typeArguments != null) {
         receiver = forest.createInstantiation(instantiationOffset, receiver,
@@ -4892,7 +4895,7 @@
     debugEvent("ImplicitCreationExpression");
     _buildConstructorReferenceInvocation(
         token.next!, token.offset, Constness.implicit,
-        inMetadata: false);
+        inMetadata: false, inImplicitCreationContext: true);
   }
 
   @override
@@ -5159,7 +5162,7 @@
     debugEvent("endConstExpression");
     _buildConstructorReferenceInvocation(
         token.next!, token.offset, Constness.explicitConst,
-        inMetadata: false);
+        inMetadata: false, inImplicitCreationContext: false);
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
index de4d7ba..dd26634 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -295,11 +295,13 @@
       Arguments arguments,
       Token nameToken,
       Token nameLastToken,
-      Constness constness) {
+      Constness constness,
+      {required bool inImplicitCreationContext}) {
     return _helper.createInstantiationAndInvocation(() => buildSimpleRead(),
         typeArguments, _plainNameForRead, name, arguments,
         instantiationOffset: fileOffset,
-        invocationOffset: nameLastToken.charOffset);
+        invocationOffset: nameLastToken.charOffset,
+        inImplicitCreationContext: inImplicitCreationContext);
   }
 
   void printOn(StringSink sink);
@@ -2939,10 +2941,12 @@
       Arguments arguments,
       Token nameToken,
       Token nameLastToken,
-      Constness constness) {
+      Constness constness,
+      {required bool inImplicitCreationContext}) {
     return _helper.wrapInDeferredCheck(
-        suffixGenerator.invokeConstructor(typeArguments, name, arguments,
-            nameToken, nameLastToken, constness),
+        suffixGenerator.invokeConstructor(
+            typeArguments, name, arguments, nameToken, nameLastToken, constness,
+            inImplicitCreationContext: inImplicitCreationContext),
         prefixGenerator.prefix,
         offsetForToken(suffixGenerator.token));
   }
@@ -3055,7 +3059,8 @@
       Arguments arguments,
       Token nameToken,
       Token nameLastToken,
-      Constness constness) {
+      Constness constness,
+      {required bool inImplicitCreationContext}) {
     return _helper.buildConstructorInvocation(
         declaration,
         nameToken,
@@ -3651,7 +3656,8 @@
       Arguments arguments,
       Token nameToken,
       Token nameLastToken,
-      Constness constness) {
+      Constness constness,
+      {required bool inImplicitCreationContext}) {
     if (typeArguments != null) {
       assert(_forest.argumentsTypeArguments(arguments).isEmpty);
       _forest.argumentsSetTypeArguments(
@@ -4280,7 +4286,8 @@
       Arguments arguments,
       Token nameToken,
       Token nameLastToken,
-      Constness constness) {
+      Constness constness,
+      {required bool inImplicitCreationContext}) {
     return buildProblem();
   }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
index 34a7c19..ecc97bb 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator_helper.dart
@@ -194,7 +194,7 @@
 
   TypeEnvironment get typeEnvironment;
 
-  /// If explicit instantiations are support in this library, create an
+  /// If explicit instantiations are supported in this library, create an
   /// instantiation of the result of [receiverFunction] using
   /// [typeArguments] followed by an invocation of [name] with [arguments].
   /// Otherwise create the errors for the corresponding invalid implicit
@@ -209,6 +209,10 @@
   /// class `b` with prefix `a` with type arguments `<c>`, but with explicit
   /// instantiation it could instead be the explicit instantiation of expression
   /// `a.b` with type arguments `<c>` followed by and invocation of `d()`.
+  ///
+  /// If [inImplicitCreationContext] is `false`, then the expression is
+  /// preceded by `new` or `const`, and an error should be reported instead of
+  /// creating the instantiation and invocation.
   Expression createInstantiationAndInvocation(
       Expression Function() receiverFunction,
       List<UnresolvedType>? typeArguments,
@@ -216,7 +220,8 @@
       String constructorName,
       Arguments arguments,
       {required int instantiationOffset,
-      required int invocationOffset});
+      required int invocationOffset,
+      required bool inImplicitCreationContext});
 }
 
 /// Checks that a generic [typedef] for a generic class.
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart
new file mode 100644
index 0000000..881008a
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart
@@ -0,0 +1,12 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+func() {}
+
+@func()
+test() {
+  const func();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.strong.expect
new file mode 100644
index 0000000..9f3e10b
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.strong.expect
@@ -0,0 +1,24 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+// @func()
+//  ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:9:9: Error: Couldn't find constructor 'func'.
+//   const func();
+//         ^^^^
+//
+import self as self;
+
+static method func() → dynamic {}
+@invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+@func()
+ ^^^^"
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:9:9: Error: Couldn't find constructor 'func'.
+  const func();
+        ^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.strong.transformed.expect
new file mode 100644
index 0000000..9f3e10b
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.strong.transformed.expect
@@ -0,0 +1,24 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+// @func()
+//  ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:9:9: Error: Couldn't find constructor 'func'.
+//   const func();
+//         ^^^^
+//
+import self as self;
+
+static method func() → dynamic {}
+@invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+@func()
+ ^^^^"
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:9:9: Error: Couldn't find constructor 'func'.
+  const func();
+        ^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.textual_outline.expect
new file mode 100644
index 0000000..c834951
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.textual_outline.expect
@@ -0,0 +1,4 @@
+func() {}
+@func()
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..1490572
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.textual_outline_modelled.expect
@@ -0,0 +1,4 @@
+func() {}
+main() {}
+@func()
+test() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.weak.expect
new file mode 100644
index 0000000..9f3e10b
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.weak.expect
@@ -0,0 +1,24 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+// @func()
+//  ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:9:9: Error: Couldn't find constructor 'func'.
+//   const func();
+//         ^^^^
+//
+import self as self;
+
+static method func() → dynamic {}
+@invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+@func()
+ ^^^^"
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:9:9: Error: Couldn't find constructor 'func'.
+  const func();
+        ^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.weak.outline.expect
new file mode 100644
index 0000000..7e82e3f
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.weak.outline.expect
@@ -0,0 +1,19 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+// @func()
+//  ^^^^
+//
+import self as self;
+
+static method func() → dynamic
+  ;
+@invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+@func()
+ ^^^^"
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.weak.transformed.expect
new file mode 100644
index 0000000..9f3e10b
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47069.dart.weak.transformed.expect
@@ -0,0 +1,24 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+// @func()
+//  ^^^^
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:9:9: Error: Couldn't find constructor 'func'.
+//   const func();
+//         ^^^^
+//
+import self as self;
+
+static method func() → dynamic {}
+@invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:7:2: Error: Couldn't find constructor 'func'.
+@func()
+ ^^^^"
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47069.dart:9:9: Error: Couldn't find constructor 'func'.
+  const func();
+        ^^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart
new file mode 100644
index 0000000..254f9e5
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+dynamic a;
+
+test() {
+  new a();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.strong.expect
new file mode 100644
index 0000000..a4ce712
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.strong.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47071.dart:8:7: Error: Couldn't find constructor 'a'.
+//   new a();
+//       ^
+//
+import self as self;
+
+static field dynamic a;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47071.dart:8:7: Error: Couldn't find constructor 'a'.
+  new a();
+      ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.strong.transformed.expect
new file mode 100644
index 0000000..a4ce712
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.strong.transformed.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47071.dart:8:7: Error: Couldn't find constructor 'a'.
+//   new a();
+//       ^
+//
+import self as self;
+
+static field dynamic a;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47071.dart:8:7: Error: Couldn't find constructor 'a'.
+  new a();
+      ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.textual_outline.expect
new file mode 100644
index 0000000..fd7d469
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.textual_outline.expect
@@ -0,0 +1,3 @@
+dynamic a;
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..fa0c4f9
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.textual_outline_modelled.expect
@@ -0,0 +1,3 @@
+dynamic a;
+main() {}
+test() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.weak.expect
new file mode 100644
index 0000000..a4ce712
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.weak.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47071.dart:8:7: Error: Couldn't find constructor 'a'.
+//   new a();
+//       ^
+//
+import self as self;
+
+static field dynamic a;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47071.dart:8:7: Error: Couldn't find constructor 'a'.
+  new a();
+      ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.weak.outline.expect
new file mode 100644
index 0000000..5e8c51e
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.weak.outline.expect
@@ -0,0 +1,8 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+
+static field dynamic a;
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.weak.transformed.expect
new file mode 100644
index 0000000..a4ce712
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47071.dart.weak.transformed.expect
@@ -0,0 +1,17 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47071.dart:8:7: Error: Couldn't find constructor 'a'.
+//   new a();
+//       ^
+//
+import self as self;
+
+static field dynamic a;
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47071.dart:8:7: Error: Couldn't find constructor 'a'.
+  new a();
+      ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart
new file mode 100644
index 0000000..379a8de
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart
@@ -0,0 +1,16 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class C {
+  int new = 42;
+}
+
+test() {
+  new C().new is int;
+  dynamic foo;
+  foo.new;
+  foo.new();
+}
+
+main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.strong.expect
new file mode 100644
index 0000000..fe92bd1
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.strong.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47075.dart:6:7: Error: 'new' can't be used as an identifier because it's a keyword.
+// Try renaming this to be an identifier that isn't a keyword.
+//   int new = 42;
+//       ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  field core::int new = 42;
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  new self::C::•().{self::C::new}{core::int} is{ForNonNullableByDefault} core::int;
+  dynamic foo;
+  foo{dynamic}.new;
+  foo{dynamic}.new();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.strong.transformed.expect
new file mode 100644
index 0000000..fe92bd1
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.strong.transformed.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47075.dart:6:7: Error: 'new' can't be used as an identifier because it's a keyword.
+// Try renaming this to be an identifier that isn't a keyword.
+//   int new = 42;
+//       ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  field core::int new = 42;
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  new self::C::•().{self::C::new}{core::int} is{ForNonNullableByDefault} core::int;
+  dynamic foo;
+  foo{dynamic}.new;
+  foo{dynamic}.new();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.textual_outline.expect
new file mode 100644
index 0000000..cd96c673
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.textual_outline.expect
@@ -0,0 +1,5 @@
+class C {
+  int new = 42;
+}
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.weak.expect
new file mode 100644
index 0000000..fe92bd1
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.weak.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47075.dart:6:7: Error: 'new' can't be used as an identifier because it's a keyword.
+// Try renaming this to be an identifier that isn't a keyword.
+//   int new = 42;
+//       ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  field core::int new = 42;
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  new self::C::•().{self::C::new}{core::int} is{ForNonNullableByDefault} core::int;
+  dynamic foo;
+  foo{dynamic}.new;
+  foo{dynamic}.new();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.weak.outline.expect
new file mode 100644
index 0000000..807085d
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.weak.outline.expect
@@ -0,0 +1,21 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47075.dart:6:7: Error: 'new' can't be used as an identifier because it's a keyword.
+// Try renaming this to be an identifier that isn't a keyword.
+//   int new = 42;
+//       ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  field core::int new;
+  synthetic constructor •() → self::C
+    ;
+}
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.weak.transformed.expect
new file mode 100644
index 0000000..fe92bd1
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47075.dart.weak.transformed.expect
@@ -0,0 +1,25 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47075.dart:6:7: Error: 'new' can't be used as an identifier because it's a keyword.
+// Try renaming this to be an identifier that isn't a keyword.
+//   int new = 42;
+//       ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  field core::int new = 42;
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  new self::C::•().{self::C::new}{core::int} is{ForNonNullableByDefault} core::int;
+  dynamic foo;
+  foo{dynamic}.new;
+  foo{dynamic}.new();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart
new file mode 100644
index 0000000..a93920b
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart
@@ -0,0 +1,9 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+test() {
+  new A();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.strong.expect
new file mode 100644
index 0000000..17917a9
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.strong.expect
@@ -0,0 +1,16 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47079.dart:6:7: Error: Couldn't find constructor 'A'.
+//   new A();
+//       ^
+//
+import self as self;
+
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47079.dart:6:7: Error: Couldn't find constructor 'A'.
+  new A();
+      ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.strong.transformed.expect
new file mode 100644
index 0000000..17917a9
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.strong.transformed.expect
@@ -0,0 +1,16 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47079.dart:6:7: Error: Couldn't find constructor 'A'.
+//   new A();
+//       ^
+//
+import self as self;
+
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47079.dart:6:7: Error: Couldn't find constructor 'A'.
+  new A();
+      ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.textual_outline.expect
new file mode 100644
index 0000000..ec6b9e0
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.textual_outline.expect
@@ -0,0 +1,2 @@
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f67dbb0
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.textual_outline_modelled.expect
@@ -0,0 +1,2 @@
+main() {}
+test() {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.weak.expect
new file mode 100644
index 0000000..17917a9
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.weak.expect
@@ -0,0 +1,16 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47079.dart:6:7: Error: Couldn't find constructor 'A'.
+//   new A();
+//       ^
+//
+import self as self;
+
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47079.dart:6:7: Error: Couldn't find constructor 'A'.
+  new A();
+      ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.weak.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.weak.outline.expect
new file mode 100644
index 0000000..64923de
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.weak.outline.expect
@@ -0,0 +1,7 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.weak.transformed.expect
new file mode 100644
index 0000000..17917a9
--- /dev/null
+++ b/pkg/front_end/testcases/constructor_tearoffs/issue47079.dart.weak.transformed.expect
@@ -0,0 +1,16 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/constructor_tearoffs/issue47079.dart:6:7: Error: Couldn't find constructor 'A'.
+//   new A();
+//       ^
+//
+import self as self;
+
+static method test() → dynamic {
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/issue47079.dart:6:7: Error: Couldn't find constructor 'A'.
+  new A();
+      ^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect
index c148623..920c962 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.expect
@@ -34,73 +34,73 @@
 //   UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass.unresolvedConstructor();
-//                       ^^^^^^^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
 //   UnresolvedClass /**/ .unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass. /**/ unresolvedConstructor();
-//                             ^^^^^^^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass /**/ .unresolvedConstructor();
-//                               ^^^^^^^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix. /**/ UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix /**/ .UnresolvedClass();
-//                               ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix. /**/ UnresolvedClass();
-//                                 ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                           ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                               ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-//                                 ^^^^^^^^^^^^^^^
+//                                                       ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass<int>();
@@ -154,49 +154,49 @@
 //   unresolved_prefix.UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass<int>();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int>();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int> /**/ ();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                              ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                                ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                                    ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                                      ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass();
@@ -524,57 +524,57 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass.unresolvedConstructor();
-                      ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass /**/ .unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass. /**/ unresolvedConstructor();
-                            ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass /**/ .unresolvedConstructor();
-                              ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass();
-                        ^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass();
-                          ^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix. /**/ UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix /**/ .UnresolvedClass();
-                              ^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix. /**/ UnresolvedClass();
-                                ^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                              ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-                                ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+                                                      ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^";
@@ -614,39 +614,39 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass<int>();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int>();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass /**/ <int>();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int> /**/ ();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                             ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+                                               ^^^^^^^^^^^^^^^^^^^^^";
   (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                                   ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+                                                     ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass();
   ^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect
index c148623..920c962 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.strong.transformed.expect
@@ -34,73 +34,73 @@
 //   UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass.unresolvedConstructor();
-//                       ^^^^^^^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
 //   UnresolvedClass /**/ .unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass. /**/ unresolvedConstructor();
-//                             ^^^^^^^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass /**/ .unresolvedConstructor();
-//                               ^^^^^^^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix. /**/ UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix /**/ .UnresolvedClass();
-//                               ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix. /**/ UnresolvedClass();
-//                                 ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                           ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                               ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-//                                 ^^^^^^^^^^^^^^^
+//                                                       ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass<int>();
@@ -154,49 +154,49 @@
 //   unresolved_prefix.UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass<int>();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int>();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int> /**/ ();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                              ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                                ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                                    ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                                      ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass();
@@ -524,57 +524,57 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass.unresolvedConstructor();
-                      ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass /**/ .unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass. /**/ unresolvedConstructor();
-                            ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass /**/ .unresolvedConstructor();
-                              ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass();
-                        ^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass();
-                          ^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix. /**/ UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix /**/ .UnresolvedClass();
-                              ^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix. /**/ UnresolvedClass();
-                                ^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                              ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-                                ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+                                                      ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^";
@@ -614,39 +614,39 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass<int>();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int>();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass /**/ <int>();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int> /**/ ();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                             ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+                                               ^^^^^^^^^^^^^^^^^^^^^";
   (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                                   ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+                                                     ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass();
   ^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect
index c148623..920c962 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.expect
@@ -34,73 +34,73 @@
 //   UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass.unresolvedConstructor();
-//                       ^^^^^^^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
 //   UnresolvedClass /**/ .unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass. /**/ unresolvedConstructor();
-//                             ^^^^^^^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass /**/ .unresolvedConstructor();
-//                               ^^^^^^^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix. /**/ UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix /**/ .UnresolvedClass();
-//                               ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix. /**/ UnresolvedClass();
-//                                 ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                           ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                               ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-//                                 ^^^^^^^^^^^^^^^
+//                                                       ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass<int>();
@@ -154,49 +154,49 @@
 //   unresolved_prefix.UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass<int>();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int>();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int> /**/ ();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                              ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                                ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                                    ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                                      ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass();
@@ -524,57 +524,57 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass.unresolvedConstructor();
-                      ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass /**/ .unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass. /**/ unresolvedConstructor();
-                            ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass /**/ .unresolvedConstructor();
-                              ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass();
-                        ^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass();
-                          ^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix. /**/ UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix /**/ .UnresolvedClass();
-                              ^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix. /**/ UnresolvedClass();
-                                ^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                              ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-                                ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+                                                      ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^";
@@ -614,39 +614,39 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass<int>();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int>();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass /**/ <int>();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int> /**/ ();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                             ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+                                               ^^^^^^^^^^^^^^^^^^^^^";
   (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                                   ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+                                                     ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass();
   ^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect
index c148623..920c962 100644
--- a/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart.weak.transformed.expect
@@ -34,73 +34,73 @@
 //   UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass.unresolvedConstructor();
-//                       ^^^^^^^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
 //   UnresolvedClass /**/ .unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass. /**/ unresolvedConstructor();
-//                             ^^^^^^^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass /**/ .unresolvedConstructor();
-//                               ^^^^^^^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix. /**/ UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix /**/ .UnresolvedClass();
-//                               ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix. /**/ UnresolvedClass();
-//                                 ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                           ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                               ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-//                                 ^^^^^^^^^^^^^^^
+//                                                       ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass<int>();
@@ -154,49 +154,49 @@
 //   unresolved_prefix.UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass<int>();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int>();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>();
-//                         ^^^^^^^^^^^^^^^
+//       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int> /**/ ();
-//                           ^^^^^^^^^^^^^^^
+//         ^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                              ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                                ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-//                         ^^^^^^^^^^^^^^^
+//                                                    ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-//                           ^^^^^^^^^^^^^^^
+//                                                      ^^^^^^^^^^^^^^^^^^^^^
 //
 // pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass();
@@ -524,57 +524,57 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:23: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass.unresolvedConstructor();
-                      ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:25: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass /**/ .unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:29: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass. /**/ unresolvedConstructor();
-                            ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:31: Error: Member not found: 'UnresolvedClass.unresolvedConstructor'.
+      ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass /**/ .unresolvedConstructor();
-                              ^^^^^^^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass();
-                        ^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass();
-                          ^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix. /**/ UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:31: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix /**/ .UnresolvedClass();
-                              ^^^^^^^^^^^^^^^"{dynamic}.•();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix. /**/ UnresolvedClass();
-                                ^^^^^^^^^^^^^^^"{dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                        ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+                                          ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:33: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                              ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
-                                ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
+                                                      ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^";
@@ -614,39 +614,39 @@
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass<int>();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int>();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass /**/ <int>();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+      ^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int> /**/ ();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.•();
+        ^^^^^^^^^^^^^^^";
   (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                             ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+                                               ^^^^^^^^^^^^^^^^^^^^^";
   (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:25: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
-                        ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
-  (invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:27: Error: Member not found: 'unresolved_prefix.UnresolvedClass'.
+                                                   ^^^^^^^^^^^^^^^^^^^^^";
+  invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
-                          ^^^^^^^^^^^^^^^"<core::int>){dynamic}.unresolvedConstructor();
+                                                     ^^^^^^^^^^^^^^^^^^^^^";
   invalid-expression "pkg/front_end/testcases/constructor_tearoffs/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass();
   ^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/general/constants/issue46925.dart b/pkg/front_end/testcases/general/constants/issue46925.dart
index 016df79..af8e940 100644
--- a/pkg/front_end/testcases/general/constants/issue46925.dart
+++ b/pkg/front_end/testcases/general/constants/issue46925.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+// @dart=2.14
 
 class MyClass<T> {
   final a;
diff --git a/pkg/front_end/testcases/general/constants/issue46925.dart.textual_outline.expect b/pkg/front_end/testcases/general/constants/issue46925.dart.textual_outline.expect
index 62af4b8..97c1b4b 100644
--- a/pkg/front_end/testcases/general/constants/issue46925.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/constants/issue46925.dart.textual_outline.expect
@@ -1,3 +1,4 @@
+// @dart = 2.14
 class MyClass<T> {
   final a;
   const MyClass(int i, int j) : a = (i + j);
diff --git a/pkg/front_end/testcases/general/constants/issue46925.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/constants/issue46925.dart.textual_outline_modelled.expect
index 831b458..3ca9c50 100644
--- a/pkg/front_end/testcases/general/constants/issue46925.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/constants/issue46925.dart.textual_outline_modelled.expect
@@ -1,3 +1,4 @@
+// @dart = 2.14
 class MyClass<T> {
   const MyClass(int i, int j) : a = (i + j);
   const MyClass.constr() : a = 0;
diff --git a/pkg/front_end/testcases/general/constants/issue46925.dart.weak.expect b/pkg/front_end/testcases/general/constants/issue46925.dart.weak.expect
index 5e64344..86587cd 100644
--- a/pkg/front_end/testcases/general/constants/issue46925.dart.weak.expect
+++ b/pkg/front_end/testcases/general/constants/issue46925.dart.weak.expect
@@ -2,49 +2,49 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:13:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
-// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   const v1 = MyClass<String>.new;
-//                     ^
-//
-// pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
-// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   const v1 = MyClass<String>.new;
-//                              ^^^
-//
-// pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
-//   const v1 = MyClass<String>.new;
-//                              ^^^
-//
 // pkg/front_end/testcases/general/constants/issue46925.dart:14:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   const v2 = MyClass<int>.constr;
+//   const v1 = MyClass<String>.new;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
-//   const v2 = MyClass<int>.constr;
-//                           ^^^^^^
+// pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
+//   const v1 = MyClass<String>.new;
+//                              ^^^
+//
+// pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: Member not found: 'new'.
+//   const v1 = MyClass<String>.new;
+//                              ^^^
 //
 // pkg/front_end/testcases/general/constants/issue46925.dart:15:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
+//   const v2 = MyClass<int>.constr;
+//                     ^
+//
+// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'constr'.
+//   const v2 = MyClass<int>.constr;
+//                           ^^^^^^
+//
+// pkg/front_end/testcases/general/constants/issue46925.dart:16:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   const v3 = MyClass<int>.new;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/constants/issue46925.dart:16:27: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   const v3 = MyClass<int>.new;
 //                           ^^^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:16:27: Error: Member not found: 'new'.
 //   const v3 = MyClass<int>.new;
 //                           ^^^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:16:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/constants/issue46925.dart:17:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   const v4 = MyClass<String>.constr;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:17:30: Error: Member not found: 'constr'.
 //   const v4 = MyClass<String>.constr;
 //                              ^^^^^^
 //
@@ -61,34 +61,34 @@
     ;
 }
 static method test() → dynamic {
-  const invalid-type v1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
+  const invalid-type v1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const invalid-type v2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
+  const invalid-type v2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const invalid-type v3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
+  const invalid-type v3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:27: Error: Member not found: 'new'.
   const v3 = MyClass<int>.new;
                           ^^^";
-  const invalid-type v4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
+  const invalid-type v4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:17:30: Error: Member not found: 'constr'.
   const v4 = MyClass<String>.constr;
                              ^^^^^^";
-  const dynamic c1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
+  const dynamic c1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const dynamic c2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
+  const dynamic c2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const dynamic c3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
+  const dynamic c3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const dynamic c4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
+  const dynamic c4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const dynamic c5 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
+  const dynamic c5 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:27: Error: Member not found: 'new'.
   const v3 = MyClass<int>.new;
                           ^^^";
-  const dynamic c6 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
+  const dynamic c6 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:17:30: Error: Member not found: 'constr'.
   const v4 = MyClass<String>.constr;
                              ^^^^^^";
 }
diff --git a/pkg/front_end/testcases/general/constants/issue46925.dart.weak.transformed.expect b/pkg/front_end/testcases/general/constants/issue46925.dart.weak.transformed.expect
index 5e64344..86587cd 100644
--- a/pkg/front_end/testcases/general/constants/issue46925.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/constants/issue46925.dart.weak.transformed.expect
@@ -2,49 +2,49 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:13:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
-// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   const v1 = MyClass<String>.new;
-//                     ^
-//
-// pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
-// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   const v1 = MyClass<String>.new;
-//                              ^^^
-//
-// pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
-//   const v1 = MyClass<String>.new;
-//                              ^^^
-//
 // pkg/front_end/testcases/general/constants/issue46925.dart:14:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   const v2 = MyClass<int>.constr;
+//   const v1 = MyClass<String>.new;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
-//   const v2 = MyClass<int>.constr;
-//                           ^^^^^^
+// pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
+//   const v1 = MyClass<String>.new;
+//                              ^^^
+//
+// pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: Member not found: 'new'.
+//   const v1 = MyClass<String>.new;
+//                              ^^^
 //
 // pkg/front_end/testcases/general/constants/issue46925.dart:15:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
+//   const v2 = MyClass<int>.constr;
+//                     ^
+//
+// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'constr'.
+//   const v2 = MyClass<int>.constr;
+//                           ^^^^^^
+//
+// pkg/front_end/testcases/general/constants/issue46925.dart:16:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   const v3 = MyClass<int>.new;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/constants/issue46925.dart:16:27: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   const v3 = MyClass<int>.new;
 //                           ^^^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:16:27: Error: Member not found: 'new'.
 //   const v3 = MyClass<int>.new;
 //                           ^^^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:16:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/constants/issue46925.dart:17:21: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   const v4 = MyClass<String>.constr;
 //                     ^
 //
-// pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
+// pkg/front_end/testcases/general/constants/issue46925.dart:17:30: Error: Member not found: 'constr'.
 //   const v4 = MyClass<String>.constr;
 //                              ^^^^^^
 //
@@ -61,34 +61,34 @@
     ;
 }
 static method test() → dynamic {
-  const invalid-type v1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
+  const invalid-type v1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const invalid-type v2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
+  const invalid-type v2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const invalid-type v3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
+  const invalid-type v3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:27: Error: Member not found: 'new'.
   const v3 = MyClass<int>.new;
                           ^^^";
-  const invalid-type v4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
+  const invalid-type v4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:17:30: Error: Member not found: 'constr'.
   const v4 = MyClass<String>.constr;
                              ^^^^^^";
-  const dynamic c1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
+  const dynamic c1 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const dynamic c2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:13:30: Error: Member not found: 'new'.
+  const dynamic c2 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:30: Error: Member not found: 'new'.
   const v1 = MyClass<String>.new;
                              ^^^";
-  const dynamic c3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
+  const dynamic c3 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const dynamic c4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:14:27: Error: Member not found: 'constr'.
+  const dynamic c4 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'constr'.
   const v2 = MyClass<int>.constr;
                           ^^^^^^";
-  const dynamic c5 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:15:27: Error: Member not found: 'new'.
+  const dynamic c5 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:27: Error: Member not found: 'new'.
   const v3 = MyClass<int>.new;
                           ^^^";
-  const dynamic c6 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:16:30: Error: Member not found: 'constr'.
+  const dynamic c6 = invalid-expression "pkg/front_end/testcases/general/constants/issue46925.dart:17:30: Error: Member not found: 'constr'.
   const v4 = MyClass<String>.constr;
                              ^^^^^^";
 }
diff --git a/pkg/front_end/testcases/general/duplicate_instantiation.dart b/pkg/front_end/testcases/general/duplicate_instantiation.dart
index 620e4da..1885509 100644
--- a/pkg/front_end/testcases/general/duplicate_instantiation.dart
+++ b/pkg/front_end/testcases/general/duplicate_instantiation.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.
 
+// @dart=2.14
+
 class Class<T> {
   Class();
   Class.named();
diff --git a/pkg/front_end/testcases/general/duplicate_instantiation.dart.textual_outline.expect b/pkg/front_end/testcases/general/duplicate_instantiation.dart.textual_outline.expect
index 8a30727..ba7ddd4 100644
--- a/pkg/front_end/testcases/general/duplicate_instantiation.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/duplicate_instantiation.dart.textual_outline.expect
@@ -1,3 +1,4 @@
+// @dart = 2.14
 class Class<T> {
   Class();
   Class.named();
diff --git a/pkg/front_end/testcases/general/duplicate_instantiation.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/duplicate_instantiation.dart.textual_outline_modelled.expect
index 6f75818..e241e25 100644
--- a/pkg/front_end/testcases/general/duplicate_instantiation.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/duplicate_instantiation.dart.textual_outline_modelled.expect
@@ -1,3 +1,4 @@
+// @dart = 2.14
 class Class<T> {
   Class();
   Class.named();
diff --git a/pkg/front_end/testcases/general/duplicate_instantiation.dart.weak.expect b/pkg/front_end/testcases/general/duplicate_instantiation.dart.weak.expect
index d1b8067..c27f245 100644
--- a/pkg/front_end/testcases/general/duplicate_instantiation.dart.weak.expect
+++ b/pkg/front_end/testcases/general/duplicate_instantiation.dart.weak.expect
@@ -2,246 +2,246 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:11:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:13:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>;
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:13:12: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>;
 //            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:13:18: Error: Expected '[' before this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:18: Error: Expected '[' before this.
 //   Class<int><int>;
 //                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:12: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>();
 //            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:20: Error: Unexpected token ';'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:20: Error: Unexpected token ';'.
 //   Class<int><int>();
 //                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:20: Error: Expected a function body or '=>'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:20: Error: Expected a function body or '=>'.
 // Try adding {}.
 //   Class<int><int>();
 //                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:20: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:20: Error: Expected ';' after this.
 //   Class<int><int>();
 //                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>.named;
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:14: Error: Member not found: 'named'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:14: Error: Member not found: 'named'.
 //   Class<int>.named;
 //              ^^^^^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>.named<int>;
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:19: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:19: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>.named<int>;
 //                   ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:14: Error: Member not found: 'named'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:14: Error: Member not found: 'named'.
 //   Class<int>.named<int>;
 //              ^^^^^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:18:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>.named<int>();
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:18:14: Error: A constructor invocation can't have type arguments after the constructor name.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:14: Error: A constructor invocation can't have type arguments after the constructor name.
 // Try removing the type arguments or placing them after the class name.
 //   Class<int>.named<int>();
 //              ^^^^^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:12: Error: A comparison expression can't be an operand of another comparison expression.
-// Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named;
-//            ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:18: Error: Expected '[' before this.
-//   Class<int><int>.named;
-//                  ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:12: Error: A comparison expression can't be an operand of another comparison expression.
-// Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named();
-//            ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:18: Error: Expected '[' before this.
-//   Class<int><int>.named();
-//                  ^
-//
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:21:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named<int>;
+//   Class<int><int>.named;
 //            ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:21:18: Error: Expected '[' before this.
-//   Class<int><int>.named<int>;
+//   Class<int><int>.named;
 //                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:21:24: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
-// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   Class<int><int>.named<int>;
-//                        ^
-//
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:22:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named<int>();
+//   Class<int><int>.named();
 //            ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:22:18: Error: Expected '[' before this.
-//   Class<int><int>.named<int>();
+//   Class<int><int>.named();
 //                  ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:23:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named<int><int>;
+//   Class<int><int>.named<int>;
 //            ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:23:18: Error: Expected '[' before this.
+//   Class<int><int>.named<int>;
+//                  ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:23:24: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
+//   Class<int><int>.named<int>;
+//                        ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:12: Error: A comparison expression can't be an operand of another comparison expression.
+// Try putting parentheses around one of the comparisons.
+//   Class<int><int>.named<int>();
+//            ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:18: Error: Expected '[' before this.
+//   Class<int><int>.named<int>();
+//                  ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:12: Error: A comparison expression can't be an operand of another comparison expression.
+// Try putting parentheses around one of the comparisons.
+//   Class<int><int>.named<int><int>;
+//            ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:18: Error: Expected '[' before this.
 //   Class<int><int>.named<int><int>;
 //                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:23:24: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:24: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>;
 //                        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:23:28: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:28: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>;
 //                            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:23:34: Error: Expected '[' before this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:34: Error: Expected '[' before this.
 //   Class<int><int>.named<int><int>;
 //                                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:12: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>();
 //            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:18: Error: Expected '[' before this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:18: Error: Expected '[' before this.
 //   Class<int><int>.named<int><int>();
 //                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:24: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:24: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>();
 //                        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:28: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:28: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>();
 //                            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:36: Error: Unexpected token ';'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:36: Error: Unexpected token ';'.
 //   Class<int><int>.named<int><int>();
 //                                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:36: Error: Expected a function body or '=>'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:36: Error: Expected a function body or '=>'.
 // Try adding {}.
 //   Class<int><int>.named<int><int>();
 //                                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:36: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:36: Error: Expected ';' after this.
 //   Class<int><int>.named<int><int>();
 //                                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:13:8: Error: The operator '<' isn't defined for the class 'Type'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
 //   Class<int><int>;
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:8: Error: The operator '<' isn't defined for the class 'Type'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
 //   Class<int><int>();
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:8: Error: The operator '<' isn't defined for the class 'Type'.
-//  - 'Type' is from 'dart:core'.
-// Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named;
-//        ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
-//  - 'List' is from 'dart:core'.
-// Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-//   Class<int><int>.named;
-//                   ^^^^^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:8: Error: The operator '<' isn't defined for the class 'Type'.
-//  - 'Type' is from 'dart:core'.
-// Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named();
-//        ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:19: Error: The method 'named' isn't defined for the class 'List<int>'.
-//  - 'List' is from 'dart:core'.
-// Try correcting the name to the name of an existing method, or defining a method named 'named'.
-//   Class<int><int>.named();
-//                   ^^^^^
-//
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:21:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named<int>;
+//   Class<int><int>.named;
 //        ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:21:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
 //  - 'List' is from 'dart:core'.
 // Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-//   Class<int><int>.named<int>;
+//   Class<int><int>.named;
 //                   ^^^^^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:22:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named<int>();
+//   Class<int><int>.named();
 //        ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:22:19: Error: The method 'named' isn't defined for the class 'List<int>'.
 //  - 'List' is from 'dart:core'.
 // Try correcting the name to the name of an existing method, or defining a method named 'named'.
-//   Class<int><int>.named<int>();
+//   Class<int><int>.named();
 //                   ^^^^^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:23:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named<int><int>;
+//   Class<int><int>.named<int>;
 //        ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:23:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
 //  - 'List' is from 'dart:core'.
 // Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-//   Class<int><int>.named<int><int>;
+//   Class<int><int>.named<int>;
 //                   ^^^^^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:24:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
+//   Class<int><int>.named<int>();
+//        ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:19: Error: The method 'named' isn't defined for the class 'List<int>'.
+//  - 'List' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'named'.
+//   Class<int><int>.named<int>();
+//                   ^^^^^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:8: Error: The operator '<' isn't defined for the class 'Type'.
+//  - 'Type' is from 'dart:core'.
+// Try correcting the operator to an existing operator, or defining a '<' operator.
+//   Class<int><int>.named<int><int>;
+//        ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+//  - 'List' is from 'dart:core'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
+//   Class<int><int>.named<int><int>;
+//                   ^^^^^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:8: Error: The operator '<' isn't defined for the class 'Type'.
+//  - 'Type' is from 'dart:core'.
+// Try correcting the operator to an existing operator, or defining a '<' operator.
 //   Class<int><int>.named<int><int>();
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
 //  - 'List' is from 'dart:core'.
 // Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
 //   Class<int><int>.named<int><int>();
@@ -261,76 +261,76 @@
 static method test() → dynamic {
   #C1;
   new self::Class::•<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:13:8: Error: The operator '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:15:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
   Class<int><int>;
        ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(<core::int>[]);
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:14:8: Error: The operator '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:16:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
   Class<int><int>();
        ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(<int extends core::Object? = dynamic>() → Null
     ;
 );
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:15:14: Error: Member not found: 'named'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:17:14: Error: Member not found: 'named'.
   Class<int>.named;
              ^^^^^";
   new self::Class::named<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:17:14: Error: Member not found: 'named'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:19:14: Error: Member not found: 'named'.
   Class<int>.named<int>;
              ^^^^^";
   new self::Class::named<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:19:8: Error: The operator '<' isn't defined for the class 'Type'.
- - 'Type' is from 'dart:core'.
-Try correcting the operator to an existing operator, or defining a '<' operator.
-  Class<int><int>.named;
-       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:19:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
- - 'List' is from 'dart:core'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-  Class<int><int>.named;
-                  ^^^^^" in <core::int>[]{<unresolved>}.named);
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:20:8: Error: The operator '<' isn't defined for the class 'Type'.
- - 'Type' is from 'dart:core'.
-Try correcting the operator to an existing operator, or defining a '<' operator.
-  Class<int><int>.named();
-       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:20:19: Error: The method 'named' isn't defined for the class 'List<int>'.
- - 'List' is from 'dart:core'.
-Try correcting the name to the name of an existing method, or defining a method named 'named'.
-  Class<int><int>.named();
-                  ^^^^^" in <core::int>[]{<unresolved>}.named());
   invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:21:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
-  Class<int><int>.named<int>;
+  Class<int><int>.named;
        ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:21:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-  Class<int><int>.named<int>;
+  Class<int><int>.named;
                   ^^^^^" in <core::int>[]{<unresolved>}.named);
   invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:22:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
-  Class<int><int>.named<int>();
+  Class<int><int>.named();
        ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:22:19: Error: The method 'named' isn't defined for the class 'List<int>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'named'.
+  Class<int><int>.named();
+                  ^^^^^" in <core::int>[]{<unresolved>}.named());
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:23:8: Error: The operator '<' isn't defined for the class 'Type'.
+ - 'Type' is from 'dart:core'.
+Try correcting the operator to an existing operator, or defining a '<' operator.
+  Class<int><int>.named<int>;
+       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:23:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+ - 'List' is from 'dart:core'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
+  Class<int><int>.named<int>;
+                  ^^^^^" in <core::int>[]{<unresolved>}.named);
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:24:8: Error: The operator '<' isn't defined for the class 'Type'.
+ - 'Type' is from 'dart:core'.
+Try correcting the operator to an existing operator, or defining a '<' operator.
+  Class<int><int>.named<int>();
+       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:24:19: Error: The method 'named' isn't defined for the class 'List<int>'.
+ - 'List' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'named'.
   Class<int><int>.named<int>();
                   ^^^^^" in <core::int>[]{<unresolved>}.named<core::int>());
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:23:8: Error: The operator '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:25:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
   Class<int><int>.named<int><int>;
-       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:23:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:25:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
   Class<int><int>.named<int><int>;
                   ^^^^^" in <core::int>[]{<unresolved>}.named){dynamic}.<(#C2){dynamic}.>(<core::int>[]);
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:24:8: Error: The operator '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:26:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
   Class<int><int>.named<int><int>();
-       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:24:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:26:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
   Class<int><int>.named<int><int>();
diff --git a/pkg/front_end/testcases/general/duplicate_instantiation.dart.weak.transformed.expect b/pkg/front_end/testcases/general/duplicate_instantiation.dart.weak.transformed.expect
index 9058897..04b2fa3 100644
--- a/pkg/front_end/testcases/general/duplicate_instantiation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/duplicate_instantiation.dart.weak.transformed.expect
@@ -2,246 +2,246 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:11:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:13:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>;
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:13:12: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>;
 //            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:13:18: Error: Expected '[' before this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:18: Error: Expected '[' before this.
 //   Class<int><int>;
 //                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:12: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>();
 //            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:20: Error: Unexpected token ';'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:20: Error: Unexpected token ';'.
 //   Class<int><int>();
 //                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:20: Error: Expected a function body or '=>'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:20: Error: Expected a function body or '=>'.
 // Try adding {}.
 //   Class<int><int>();
 //                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:20: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:20: Error: Expected ';' after this.
 //   Class<int><int>();
 //                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>.named;
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:14: Error: Member not found: 'named'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:14: Error: Member not found: 'named'.
 //   Class<int>.named;
 //              ^^^^^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>.named<int>;
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:19: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:19: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>.named<int>;
 //                   ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:17:14: Error: Member not found: 'named'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:14: Error: Member not found: 'named'.
 //   Class<int>.named<int>;
 //              ^^^^^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:18:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:8: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   Class<int>.named<int>();
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:18:14: Error: A constructor invocation can't have type arguments after the constructor name.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:14: Error: A constructor invocation can't have type arguments after the constructor name.
 // Try removing the type arguments or placing them after the class name.
 //   Class<int>.named<int>();
 //              ^^^^^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:12: Error: A comparison expression can't be an operand of another comparison expression.
-// Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named;
-//            ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:18: Error: Expected '[' before this.
-//   Class<int><int>.named;
-//                  ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:12: Error: A comparison expression can't be an operand of another comparison expression.
-// Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named();
-//            ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:18: Error: Expected '[' before this.
-//   Class<int><int>.named();
-//                  ^
-//
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:21:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named<int>;
+//   Class<int><int>.named;
 //            ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:21:18: Error: Expected '[' before this.
-//   Class<int><int>.named<int>;
+//   Class<int><int>.named;
 //                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:21:24: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
-// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   Class<int><int>.named<int>;
-//                        ^
-//
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:22:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named<int>();
+//   Class<int><int>.named();
 //            ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:22:18: Error: Expected '[' before this.
-//   Class<int><int>.named<int>();
+//   Class<int><int>.named();
 //                  ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:23:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
-//   Class<int><int>.named<int><int>;
+//   Class<int><int>.named<int>;
 //            ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:23:18: Error: Expected '[' before this.
+//   Class<int><int>.named<int>;
+//                  ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:23:24: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
+//   Class<int><int>.named<int>;
+//                        ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:12: Error: A comparison expression can't be an operand of another comparison expression.
+// Try putting parentheses around one of the comparisons.
+//   Class<int><int>.named<int>();
+//            ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:18: Error: Expected '[' before this.
+//   Class<int><int>.named<int>();
+//                  ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:12: Error: A comparison expression can't be an operand of another comparison expression.
+// Try putting parentheses around one of the comparisons.
+//   Class<int><int>.named<int><int>;
+//            ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:18: Error: Expected '[' before this.
 //   Class<int><int>.named<int><int>;
 //                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:23:24: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:24: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>;
 //                        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:23:28: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:28: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>;
 //                            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:23:34: Error: Expected '[' before this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:34: Error: Expected '[' before this.
 //   Class<int><int>.named<int><int>;
 //                                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:12: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:12: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>();
 //            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:18: Error: Expected '[' before this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:18: Error: Expected '[' before this.
 //   Class<int><int>.named<int><int>();
 //                  ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:24: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:24: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>();
 //                        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:28: Error: A comparison expression can't be an operand of another comparison expression.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:28: Error: A comparison expression can't be an operand of another comparison expression.
 // Try putting parentheses around one of the comparisons.
 //   Class<int><int>.named<int><int>();
 //                            ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:36: Error: Unexpected token ';'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:36: Error: Unexpected token ';'.
 //   Class<int><int>.named<int><int>();
 //                                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:36: Error: Expected a function body or '=>'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:36: Error: Expected a function body or '=>'.
 // Try adding {}.
 //   Class<int><int>.named<int><int>();
 //                                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:36: Error: Expected ';' after this.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:36: Error: Expected ';' after this.
 //   Class<int><int>.named<int><int>();
 //                                    ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:13:8: Error: The operator '<' isn't defined for the class 'Type'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:15:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
 //   Class<int><int>;
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:14:8: Error: The operator '<' isn't defined for the class 'Type'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:16:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
 //   Class<int><int>();
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:8: Error: The operator '<' isn't defined for the class 'Type'.
-//  - 'Type' is from 'dart:core'.
-// Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named;
-//        ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:19:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
-//  - 'List' is from 'dart:core'.
-// Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-//   Class<int><int>.named;
-//                   ^^^^^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:8: Error: The operator '<' isn't defined for the class 'Type'.
-//  - 'Type' is from 'dart:core'.
-// Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named();
-//        ^
-//
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:20:19: Error: The method 'named' isn't defined for the class 'List<int>'.
-//  - 'List' is from 'dart:core'.
-// Try correcting the name to the name of an existing method, or defining a method named 'named'.
-//   Class<int><int>.named();
-//                   ^^^^^
-//
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:21:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named<int>;
+//   Class<int><int>.named;
 //        ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:21:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
 //  - 'List' is from 'dart:core'.
 // Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-//   Class<int><int>.named<int>;
+//   Class<int><int>.named;
 //                   ^^^^^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:22:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named<int>();
+//   Class<int><int>.named();
 //        ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:22:19: Error: The method 'named' isn't defined for the class 'List<int>'.
 //  - 'List' is from 'dart:core'.
 // Try correcting the name to the name of an existing method, or defining a method named 'named'.
-//   Class<int><int>.named<int>();
+//   Class<int><int>.named();
 //                   ^^^^^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:23:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
-//   Class<int><int>.named<int><int>;
+//   Class<int><int>.named<int>;
 //        ^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:23:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
 //  - 'List' is from 'dart:core'.
 // Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-//   Class<int><int>.named<int><int>;
+//   Class<int><int>.named<int>;
 //                   ^^^^^
 //
 // pkg/front_end/testcases/general/duplicate_instantiation.dart:24:8: Error: The operator '<' isn't defined for the class 'Type'.
 //  - 'Type' is from 'dart:core'.
 // Try correcting the operator to an existing operator, or defining a '<' operator.
+//   Class<int><int>.named<int>();
+//        ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:19: Error: The method 'named' isn't defined for the class 'List<int>'.
+//  - 'List' is from 'dart:core'.
+// Try correcting the name to the name of an existing method, or defining a method named 'named'.
+//   Class<int><int>.named<int>();
+//                   ^^^^^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:8: Error: The operator '<' isn't defined for the class 'Type'.
+//  - 'Type' is from 'dart:core'.
+// Try correcting the operator to an existing operator, or defining a '<' operator.
+//   Class<int><int>.named<int><int>;
+//        ^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:25:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+//  - 'List' is from 'dart:core'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
+//   Class<int><int>.named<int><int>;
+//                   ^^^^^
+//
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:8: Error: The operator '<' isn't defined for the class 'Type'.
+//  - 'Type' is from 'dart:core'.
+// Try correcting the operator to an existing operator, or defining a '<' operator.
 //   Class<int><int>.named<int><int>();
 //        ^
 //
-// pkg/front_end/testcases/general/duplicate_instantiation.dart:24:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+// pkg/front_end/testcases/general/duplicate_instantiation.dart:26:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
 //  - 'List' is from 'dart:core'.
 // Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
 //   Class<int><int>.named<int><int>();
@@ -261,76 +261,76 @@
 static method test() → dynamic {
   #C1;
   new self::Class::•<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:13:8: Error: The operator '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:15:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
   Class<int><int>;
        ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(core::_GrowableList::•<core::int>(0));
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:14:8: Error: The operator '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:16:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
   Class<int><int>();
        ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(<int extends core::Object? = dynamic>() → Null
     ;
 );
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:15:14: Error: Member not found: 'named'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:17:14: Error: Member not found: 'named'.
   Class<int>.named;
              ^^^^^";
   new self::Class::named<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:17:14: Error: Member not found: 'named'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:19:14: Error: Member not found: 'named'.
   Class<int>.named<int>;
              ^^^^^";
   new self::Class::named<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:19:8: Error: The operator '<' isn't defined for the class 'Type'.
- - 'Type' is from 'dart:core'.
-Try correcting the operator to an existing operator, or defining a '<' operator.
-  Class<int><int>.named;
-       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:19:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
- - 'List' is from 'dart:core'.
-Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-  Class<int><int>.named;
-                  ^^^^^" in core::_GrowableList::•<core::int>(0){<unresolved>}.named);
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:20:8: Error: The operator '<' isn't defined for the class 'Type'.
- - 'Type' is from 'dart:core'.
-Try correcting the operator to an existing operator, or defining a '<' operator.
-  Class<int><int>.named();
-       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:20:19: Error: The method 'named' isn't defined for the class 'List<int>'.
- - 'List' is from 'dart:core'.
-Try correcting the name to the name of an existing method, or defining a method named 'named'.
-  Class<int><int>.named();
-                  ^^^^^" in core::_GrowableList::•<core::int>(0){<unresolved>}.named());
   invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:21:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
-  Class<int><int>.named<int>;
+  Class<int><int>.named;
        ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:21:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
-  Class<int><int>.named<int>;
+  Class<int><int>.named;
                   ^^^^^" in core::_GrowableList::•<core::int>(0){<unresolved>}.named);
   invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:22:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
-  Class<int><int>.named<int>();
+  Class<int><int>.named();
        ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:22:19: Error: The method 'named' isn't defined for the class 'List<int>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing method, or defining a method named 'named'.
+  Class<int><int>.named();
+                  ^^^^^" in core::_GrowableList::•<core::int>(0){<unresolved>}.named());
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:23:8: Error: The operator '<' isn't defined for the class 'Type'.
+ - 'Type' is from 'dart:core'.
+Try correcting the operator to an existing operator, or defining a '<' operator.
+  Class<int><int>.named<int>;
+       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:23:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+ - 'List' is from 'dart:core'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
+  Class<int><int>.named<int>;
+                  ^^^^^" in core::_GrowableList::•<core::int>(0){<unresolved>}.named);
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:24:8: Error: The operator '<' isn't defined for the class 'Type'.
+ - 'Type' is from 'dart:core'.
+Try correcting the operator to an existing operator, or defining a '<' operator.
+  Class<int><int>.named<int>();
+       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:24:19: Error: The method 'named' isn't defined for the class 'List<int>'.
+ - 'List' is from 'dart:core'.
+Try correcting the name to the name of an existing method, or defining a method named 'named'.
   Class<int><int>.named<int>();
                   ^^^^^" in core::_GrowableList::•<core::int>(0){<unresolved>}.named<core::int>());
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:23:8: Error: The operator '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:25:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
   Class<int><int>.named<int><int>;
-       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:23:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:25:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
   Class<int><int>.named<int><int>;
                   ^^^^^" in core::_GrowableList::•<core::int>(0){<unresolved>}.named){dynamic}.<(#C2){dynamic}.>(core::_GrowableList::•<core::int>(0));
-  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:24:8: Error: The operator '<' isn't defined for the class 'Type'.
+  invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:26:8: Error: The operator '<' isn't defined for the class 'Type'.
  - 'Type' is from 'dart:core'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
   Class<int><int>.named<int><int>();
-       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:24:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
+       ^" in (#C1){<unresolved>}.<(#C2){dynamic}.>(invalid-expression "pkg/front_end/testcases/general/duplicate_instantiation.dart:26:19: Error: The getter 'named' isn't defined for the class 'List<int>'.
  - 'List' is from 'dart:core'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'named'.
   Class<int><int>.named<int><int>();
diff --git a/pkg/front_end/testcases/general/issue46719.dart b/pkg/front_end/testcases/general/issue46719.dart
index 8d0a6b9..46191fa 100644
--- a/pkg/front_end/testcases/general/issue46719.dart
+++ b/pkg/front_end/testcases/general/issue46719.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.
 
+// @dart=2.14
+
 import 'issue46719.dart' as self;
 
 class A<T> {
diff --git a/pkg/front_end/testcases/general/issue46719.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue46719.dart.textual_outline.expect
index 9bf5384..8a49170 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.textual_outline.expect
@@ -1,3 +1,4 @@
+// @dart = 2.14
 import 'issue46719.dart' as self;
 
 class A<T> {
diff --git a/pkg/front_end/testcases/general/issue46719.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue46719.dart.textual_outline_modelled.expect
index 7d3a93d..6054b5e 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.textual_outline_modelled.expect
@@ -1,3 +1,4 @@
+// @dart = 2.14
 import 'issue46719.dart' as self;
 
 List<X> m<X>(X x) => [x];
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
index 6c43742..17813ed 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.expect
@@ -2,54 +2,54 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   a.m<int>.applyAndPrint([2]);
 //            ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   a.m<String>.applyAndPrint(['three']);
 //               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:29:12: Error: Couldn't find constructor 'n.applyAndPrint'.
 //   A.n<int>.applyAndPrint([2]);
 //            ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:30:15: Error: Couldn't find constructor 'n.applyAndPrint'.
 //   A.n<String>.applyAndPrint(['three']);
 //               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:31:15: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   self.m<int>.applyAndPrint([2]);
 //               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:32:18: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   self.m<String>.applyAndPrint(['three']);
 //                  ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:31:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/issue46719.dart:33:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   self.A.n<int>.applyAndPrint([2]);
 //           ^
 //
-// pkg/front_end/testcases/general/issue46719.dart:32:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/issue46719.dart:34:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   self.A.n<String>.applyAndPrint(['three']);
 //           ^
 //
-// pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
+// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Member not found: 'named'.
 //   A.named.toString();
 //     ^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:34:4: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/issue46719.dart:36:4: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   A<int>.named.toString();
 //    ^
 //
-// pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
+// pkg/front_end/testcases/general/issue46719.dart:36:10: Error: Member not found: 'named'.
 //   A<int>.named.toString();
 //          ^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
+// pkg/front_end/testcases/general/issue46719.dart:37:5: Error: Couldn't find constructor 'named'.
 //   A.named<int>.toString();
 //     ^^^^^
 //
@@ -82,33 +82,33 @@
   return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
 static method test() → dynamic {
   self::A<dynamic> a = new self::A::•<dynamic>();
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'm.applyAndPrint'.
   a.m<int>.applyAndPrint([2]);
            ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'm.applyAndPrint'.
   a.m<String>.applyAndPrint(['three']);
               ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:12: Error: Couldn't find constructor 'n.applyAndPrint'.
   A.n<int>.applyAndPrint([2]);
            ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:15: Error: Couldn't find constructor 'n.applyAndPrint'.
   A.n<String>.applyAndPrint(['three']);
               ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:31:15: Error: Couldn't find constructor 'm.applyAndPrint'.
   self.m<int>.applyAndPrint([2]);
               ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:32:18: Error: Couldn't find constructor 'm.applyAndPrint'.
   self.m<String>.applyAndPrint(['three']);
                  ^^^^^^^^^^^^^";
   self::FunctionApplier|applyAndPrint(#C3, <core::Object?>[2]);
   self::FunctionApplier|applyAndPrint(#C3, <core::Object?>["three"]);
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Member not found: 'named'.
   A.named.toString();
     ^^^^^".{core::Object::toString}(){() → core::String};
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:36:10: Error: Member not found: 'named'.
   A<int>.named.toString();
          ^^^^^".{core::Object::toString}(){() → core::String};
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:37:5: Error: Couldn't find constructor 'named'.
   A.named<int>.toString();
     ^^^^^";
 }
diff --git a/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
index ca845a7..c09f829 100644
--- a/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue46719.dart.weak.transformed.expect
@@ -2,54 +2,54 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   a.m<int>.applyAndPrint([2]);
 //            ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   a.m<String>.applyAndPrint(['three']);
 //               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:29:12: Error: Couldn't find constructor 'n.applyAndPrint'.
 //   A.n<int>.applyAndPrint([2]);
 //            ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:30:15: Error: Couldn't find constructor 'n.applyAndPrint'.
 //   A.n<String>.applyAndPrint(['three']);
 //               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:31:15: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   self.m<int>.applyAndPrint([2]);
 //               ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
+// pkg/front_end/testcases/general/issue46719.dart:32:18: Error: Couldn't find constructor 'm.applyAndPrint'.
 //   self.m<String>.applyAndPrint(['three']);
 //                  ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:31:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/issue46719.dart:33:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   self.A.n<int>.applyAndPrint([2]);
 //           ^
 //
-// pkg/front_end/testcases/general/issue46719.dart:32:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/issue46719.dart:34:11: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   self.A.n<String>.applyAndPrint(['three']);
 //           ^
 //
-// pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
+// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Member not found: 'named'.
 //   A.named.toString();
 //     ^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:34:4: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
+// pkg/front_end/testcases/general/issue46719.dart:36:4: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
 // Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
 //   A<int>.named.toString();
 //    ^
 //
-// pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
+// pkg/front_end/testcases/general/issue46719.dart:36:10: Error: Member not found: 'named'.
 //   A<int>.named.toString();
 //          ^^^^^
 //
-// pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
+// pkg/front_end/testcases/general/issue46719.dart:37:5: Error: Couldn't find constructor 'named'.
 //   A.named<int>.toString();
 //     ^^^^^
 //
@@ -82,33 +82,33 @@
   return (core::List<core::Object?> positionalArguments) → void => self::FunctionApplier|applyAndPrint(#this, positionalArguments);
 static method test() → dynamic {
   self::A<dynamic> a = new self::A::•<dynamic>();
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:25:12: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'm.applyAndPrint'.
   a.m<int>.applyAndPrint([2]);
            ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:26:15: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'm.applyAndPrint'.
   a.m<String>.applyAndPrint(['three']);
               ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:27:12: Error: Couldn't find constructor 'n.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:12: Error: Couldn't find constructor 'n.applyAndPrint'.
   A.n<int>.applyAndPrint([2]);
            ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:28:15: Error: Couldn't find constructor 'n.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:15: Error: Couldn't find constructor 'n.applyAndPrint'.
   A.n<String>.applyAndPrint(['three']);
               ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:29:15: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:31:15: Error: Couldn't find constructor 'm.applyAndPrint'.
   self.m<int>.applyAndPrint([2]);
               ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:30:18: Error: Couldn't find constructor 'm.applyAndPrint'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:32:18: Error: Couldn't find constructor 'm.applyAndPrint'.
   self.m<String>.applyAndPrint(['three']);
                  ^^^^^^^^^^^^^";
   self::FunctionApplier|applyAndPrint(#C3, core::_GrowableList::_literal1<core::Object?>(2));
   self::FunctionApplier|applyAndPrint(#C3, core::_GrowableList::_literal1<core::Object?>("three"));
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:33:5: Error: Member not found: 'named'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Member not found: 'named'.
   A.named.toString();
     ^^^^^".{core::Object::toString}(){() → core::String};
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:34:10: Error: Member not found: 'named'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:36:10: Error: Member not found: 'named'.
   A<int>.named.toString();
          ^^^^^".{core::Object::toString}(){() → core::String};
-  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:35:5: Error: Couldn't find constructor 'named'.
+  invalid-expression "pkg/front_end/testcases/general/issue46719.dart:37:5: Error: Couldn't find constructor 'named'.
   A.named<int>.toString();
     ^^^^^";
 }
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart
index 96a42a8..462ecf1 100644
--- a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.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.
 
+// @dart=2.14
+
 import 'unresolved_constructor_invocation.dart' as resolved_prefix;
 
 class Super {
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline.expect
index 1981b9a..a9af555 100644
--- a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline.expect
@@ -1,3 +1,4 @@
+// @dart = 2.14
 import 'unresolved_constructor_invocation.dart' as resolved_prefix;
 
 class Super {
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline_modelled.expect
index a8ffa5d..1eea9fc 100644
--- a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.textual_outline_modelled.expect
@@ -1,3 +1,4 @@
+// @dart = 2.14
 import 'unresolved_constructor_invocation.dart' as resolved_prefix;
 
 class Class extends Super {
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
index 6b88eff..63b12b9 100644
--- a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.expect
@@ -2,483 +2,483 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Superclass has no constructor named 'Super'.
 //   Class.constructor1() : super();
 //                          ^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Superclass has no constructor named 'Super.unresolved'.
 //   Class.constructor2() : super.unresolved();
 //                          ^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:16:26: Error: Couldn't find constructor 'Class'.
 //   Class.constructor3() : this();
 //                          ^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:17:26: Error: Couldn't find constructor 'Class.unresolved'.
 //   Class.constructor4() : this.unresolved();
 //                          ^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:26:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:3: Error: Undefined name 'UnresolvedClass'.
 //   UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass.unresolvedConstructor();
 //       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass.unresolvedConstructor();
 //         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:3: Error: Undefined name 'UnresolvedClass'.
 //   UnresolvedClass /**/ .unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:33:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass. /**/ unresolvedConstructor();
 //       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass /**/ .unresolvedConstructor();
 //         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix. /**/ UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:40:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix /**/ .UnresolvedClass();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix. /**/ UnresolvedClass();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                                         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                                           ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:47:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
 //                                               ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
 //                                                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass<int>();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass<int>();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass /**/ <int>();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:54:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass<int> /**/ ();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass /**/ <int>();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:3: Error: Couldn't find constructor 'UnresolvedClass'.
 //   UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass<int>.unresolvedConstructor();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass<int>.unresolvedConstructor();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:3: Error: Couldn't find constructor 'UnresolvedClass'.
 //   UnresolvedClass /**/ <int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:61:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass<int> /**/ .unresolvedConstructor();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass<int>. /**/ unresolvedConstructor();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass<int>();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int>();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:68:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int> /**/ ();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                                          ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                                              ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //                                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:75:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
 //                                                    ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
 //                                                      ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass();
 //   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:79:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new ResolvedClass();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const ResolvedClass();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
 //   ResolvedClass.unresolvedConstructor();
 //                 ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new ResolvedClass.unresolvedConstructor();
 //                     ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const ResolvedClass.unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
 //   ResolvedClass /**/ .unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:86:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new ResolvedClass. /**/ unresolvedConstructor();
 //                           ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const ResolvedClass /**/ .unresolvedConstructor();
 //                             ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:19: Error: Method not found: 'UnresolvedClass'.
 //   resolved_prefix.UnresolvedClass();
 //                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:25: Error: Method not found: 'UnresolvedClass'.
 //   resolved_prefix. /**/ UnresolvedClass();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:93:29: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix /**/ .UnresolvedClass();
 //                             ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:31: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix. /**/ UnresolvedClass();
 //                               ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:19: Error: Couldn't find constructor 'ResolvedClass'.
 //   resolved_prefix.ResolvedClass();
 //                   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new resolved_prefix.ResolvedClass();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const resolved_prefix.ResolvedClass();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:25: Error: Couldn't find constructor 'ResolvedClass'.
 //   resolved_prefix. /**/ ResolvedClass();
 //                         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:100:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new resolved_prefix /**/ .ResolvedClass();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const resolved_prefix. /**/ ResolvedClass();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:19: Error: Undefined name 'UnresolvedClass'.
 //   resolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:25: Error: Undefined name 'UnresolvedClass'.
 //   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:107:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:31: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
 //                               ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
 //   resolved_prefix.ResolvedClass.unresolvedConstructor();
 //                                 ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new resolved_prefix.ResolvedClass.unresolvedConstructor();
 //                                     ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const resolved_prefix.ResolvedClass.unresolvedConstructor();
 //                                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
 //   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
 //                                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:114:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
 //                                           ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
 //                                                   ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass<int>();
 //   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new ResolvedClass<int>();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const ResolvedClass<int>();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass /**/ <int>();
 //   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:121:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new ResolvedClass /**/ <int>();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const ResolvedClass /**/ <int>();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   ResolvedClass<int>.unresolvedConstructor();
 //                      ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new ResolvedClass<int>.unresolvedConstructor();
 //                          ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const ResolvedClass<int>.unresolvedConstructor();
 //                            ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   ResolvedClass<int> /**/ .unresolvedConstructor();
 //                            ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:128:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new ResolvedClass<int>. /**/ unresolvedConstructor();
 //                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const ResolvedClass /**/ <int>.unresolvedConstructor();
 //                                  ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:19: Error: Method not found: 'UnresolvedClass'.
 //   resolved_prefix.UnresolvedClass<int>();
 //                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass<int>();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass<int>();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Method not found: 'UnresolvedClass'.
 //   resolved_prefix. /**/ UnresolvedClass<int>();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:135:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass /**/ <int>();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass<int> /**/ ();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:19: Error: Couldn't find constructor 'ResolvedClass'.
 //   resolved_prefix.ResolvedClass<int>();
 //                   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new resolved_prefix.ResolvedClass<int>();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const resolved_prefix.ResolvedClass<int>();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:25: Error: Couldn't find constructor 'ResolvedClass'.
 //   resolved_prefix. /**/ ResolvedClass<int>();
 //                         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:142:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new resolved_prefix.ResolvedClass /**/ <int>();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const resolved_prefix.ResolvedClass<int> /**/ ();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:19: Error: Couldn't find constructor 'UnresolvedClass'.
 //   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:148:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:14: Error: Couldn't find constructor 'UnresolvedClass'.
 //       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
 //              ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
 //                                      ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
 //                                          ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
 //                                            ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:156:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
 //                                            ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:157:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
 //                                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:158:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
 //                                                        ^^^^^^^^^^^^^^^^^^^^^
 //
@@ -494,22 +494,22 @@
 }
 class Class extends self::Super {
   constructor constructor1() → self::Class
-    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Superclass has no constructor named 'Super'.
   Class.constructor1() : super();
                          ^^^^^"
     ;
   constructor constructor2() → self::Class
-    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Superclass has no constructor named 'Super.unresolved'.
   Class.constructor2() : super.unresolved();
                          ^^^^^"
     ;
   constructor constructor3() → self::Class
-    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:16:26: Error: Couldn't find constructor 'Class'.
   Class.constructor3() : this();
                          ^^^^"
     ;
   constructor constructor4() → self::Class
-    : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+    : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:17:26: Error: Couldn't find constructor 'Class.unresolved'.
   Class.constructor4() : this.unresolved();
                          ^^^^"
     ;
@@ -520,346 +520,346 @@
     ;
 }
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:26:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass.unresolvedConstructor();
       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass.unresolvedConstructor();
         ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass /**/ .unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:33:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass. /**/ unresolvedConstructor();
       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass /**/ .unresolvedConstructor();
         ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix. /**/ UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:40:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix /**/ .UnresolvedClass();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix. /**/ UnresolvedClass();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
                                         ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
                                           ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:47:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
                                               ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
                                                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass<int>();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass<int>();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass /**/ <int>();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:54:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass<int> /**/ ();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass /**/ <int>();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:3: Error: Couldn't find constructor 'UnresolvedClass'.
   UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass<int>.unresolvedConstructor();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass<int>.unresolvedConstructor();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:3: Error: Couldn't find constructor 'UnresolvedClass'.
   UnresolvedClass /**/ <int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:61:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass<int> /**/ .unresolvedConstructor();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass<int>. /**/ unresolvedConstructor();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass<int>();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int>();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:68:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass /**/ <int>();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int> /**/ ();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                                          ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                                              ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                                                ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
                                                ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:75:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
                                                    ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
                                                      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass();
   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:79:7: Error: Couldn't find constructor 'ResolvedClass'.
   new ResolvedClass();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:9: Error: Couldn't find constructor 'ResolvedClass'.
   const ResolvedClass();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
   ResolvedClass.unresolvedConstructor();
                 ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new ResolvedClass.unresolvedConstructor();
                     ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const ResolvedClass.unresolvedConstructor();
                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
   ResolvedClass /**/ .unresolvedConstructor();
                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:86:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new ResolvedClass. /**/ unresolvedConstructor();
                           ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const ResolvedClass /**/ .unresolvedConstructor();
                             ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:19: Error: Method not found: 'UnresolvedClass'.
   resolved_prefix.UnresolvedClass();
                   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:25: Error: Method not found: 'UnresolvedClass'.
   resolved_prefix. /**/ UnresolvedClass();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:93:29: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix /**/ .UnresolvedClass();
                             ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:31: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix. /**/ UnresolvedClass();
                               ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:19: Error: Couldn't find constructor 'ResolvedClass'.
   resolved_prefix.ResolvedClass();
                   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:7: Error: Couldn't find constructor 'ResolvedClass'.
   new resolved_prefix.ResolvedClass();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:9: Error: Couldn't find constructor 'ResolvedClass'.
   const resolved_prefix.ResolvedClass();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:25: Error: Couldn't find constructor 'ResolvedClass'.
   resolved_prefix. /**/ ResolvedClass();
                         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:100:7: Error: Couldn't find constructor 'ResolvedClass'.
   new resolved_prefix /**/ .ResolvedClass();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:9: Error: Couldn't find constructor 'ResolvedClass'.
   const resolved_prefix. /**/ ResolvedClass();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:19: Error: Undefined name 'UnresolvedClass'.
   resolved_prefix.UnresolvedClass.unresolvedConstructor();
                   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:25: Error: Undefined name 'UnresolvedClass'.
   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
                         ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:107:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:31: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
                               ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
   resolved_prefix.ResolvedClass.unresolvedConstructor();
                                 ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new resolved_prefix.ResolvedClass.unresolvedConstructor();
                                     ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const resolved_prefix.ResolvedClass.unresolvedConstructor();
                                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
                                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:114:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
                                           ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
                                                   ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass<int>();
   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:7: Error: Couldn't find constructor 'ResolvedClass'.
   new ResolvedClass<int>();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:9: Error: Couldn't find constructor 'ResolvedClass'.
   const ResolvedClass<int>();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass /**/ <int>();
   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:121:7: Error: Couldn't find constructor 'ResolvedClass'.
   new ResolvedClass /**/ <int>();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:9: Error: Couldn't find constructor 'ResolvedClass'.
   const ResolvedClass /**/ <int>();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   ResolvedClass<int>.unresolvedConstructor();
                      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new ResolvedClass<int>.unresolvedConstructor();
                          ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const ResolvedClass<int>.unresolvedConstructor();
                            ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   ResolvedClass<int> /**/ .unresolvedConstructor();
                            ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:128:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new ResolvedClass<int>. /**/ unresolvedConstructor();
                                ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const ResolvedClass /**/ <int>.unresolvedConstructor();
                                  ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:19: Error: Method not found: 'UnresolvedClass'.
   resolved_prefix.UnresolvedClass<int>();
                   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass<int>();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass<int>();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Method not found: 'UnresolvedClass'.
   resolved_prefix. /**/ UnresolvedClass<int>();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:135:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass /**/ <int>();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass<int> /**/ ();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:19: Error: Couldn't find constructor 'ResolvedClass'.
   resolved_prefix.ResolvedClass<int>();
                   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:7: Error: Couldn't find constructor 'ResolvedClass'.
   new resolved_prefix.ResolvedClass<int>();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:9: Error: Couldn't find constructor 'ResolvedClass'.
   const resolved_prefix.ResolvedClass<int>();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:25: Error: Couldn't find constructor 'ResolvedClass'.
   resolved_prefix. /**/ ResolvedClass<int>();
                         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:142:7: Error: Couldn't find constructor 'ResolvedClass'.
   new resolved_prefix.ResolvedClass /**/ <int>();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:9: Error: Couldn't find constructor 'ResolvedClass'.
   const resolved_prefix.ResolvedClass<int> /**/ ();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:19: Error: Couldn't find constructor 'UnresolvedClass'.
   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:148:25: Error: Couldn't find constructor 'UnresolvedClass'.
   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:14: Error: Couldn't find constructor 'UnresolvedClass'.
       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
              ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
                                      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
                                          ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
                                            ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:156:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
                                            ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:157:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
                                                ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:158:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
                                                        ^^^^^^^^^^^^^^^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
index 6b88eff..63b12b9 100644
--- a/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/unresolved_constructor_invocation.dart.weak.transformed.expect
@@ -2,483 +2,483 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Superclass has no constructor named 'Super'.
 //   Class.constructor1() : super();
 //                          ^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Superclass has no constructor named 'Super.unresolved'.
 //   Class.constructor2() : super.unresolved();
 //                          ^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:16:26: Error: Couldn't find constructor 'Class'.
 //   Class.constructor3() : this();
 //                          ^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:17:26: Error: Couldn't find constructor 'Class.unresolved'.
 //   Class.constructor4() : this.unresolved();
 //                          ^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:26:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:3: Error: Undefined name 'UnresolvedClass'.
 //   UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass.unresolvedConstructor();
 //       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass.unresolvedConstructor();
 //         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:3: Error: Undefined name 'UnresolvedClass'.
 //   UnresolvedClass /**/ .unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:33:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   new UnresolvedClass. /**/ unresolvedConstructor();
 //       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   const UnresolvedClass /**/ .unresolvedConstructor();
 //         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix. /**/ UnresolvedClass();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:40:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix /**/ .UnresolvedClass();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix. /**/ UnresolvedClass();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                                         ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                                           ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:47:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
 //                                               ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
 //                                                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass<int>();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass<int>();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:3: Error: Method not found: 'UnresolvedClass'.
 //   UnresolvedClass /**/ <int>();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:54:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass<int> /**/ ();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass /**/ <int>();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:3: Error: Couldn't find constructor 'UnresolvedClass'.
 //   UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass<int>.unresolvedConstructor();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass<int>.unresolvedConstructor();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:3: Error: Couldn't find constructor 'UnresolvedClass'.
 //   UnresolvedClass /**/ <int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:61:7: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new UnresolvedClass<int> /**/ .unresolvedConstructor();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:9: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const UnresolvedClass<int>. /**/ unresolvedConstructor();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass<int>();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int>();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:68:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>();
 //       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
 //   const unresolved_prefix.UnresolvedClass<int> /**/ ();
 //         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                                          ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                                              ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:3: Error: Undefined name 'unresolved_prefix'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:3: Error: Undefined name 'unresolved_prefix'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //   ^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
 //   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //                                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:75:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
 //                                                    ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
 //   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
 //                                                      ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass();
 //   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:79:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new ResolvedClass();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const ResolvedClass();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
 //   ResolvedClass.unresolvedConstructor();
 //                 ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new ResolvedClass.unresolvedConstructor();
 //                     ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const ResolvedClass.unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
 //   ResolvedClass /**/ .unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:86:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new ResolvedClass. /**/ unresolvedConstructor();
 //                           ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const ResolvedClass /**/ .unresolvedConstructor();
 //                             ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:19: Error: Method not found: 'UnresolvedClass'.
 //   resolved_prefix.UnresolvedClass();
 //                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:25: Error: Method not found: 'UnresolvedClass'.
 //   resolved_prefix. /**/ UnresolvedClass();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:93:29: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix /**/ .UnresolvedClass();
 //                             ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:31: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix. /**/ UnresolvedClass();
 //                               ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:19: Error: Couldn't find constructor 'ResolvedClass'.
 //   resolved_prefix.ResolvedClass();
 //                   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new resolved_prefix.ResolvedClass();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const resolved_prefix.ResolvedClass();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:25: Error: Couldn't find constructor 'ResolvedClass'.
 //   resolved_prefix. /**/ ResolvedClass();
 //                         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:100:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new resolved_prefix /**/ .ResolvedClass();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const resolved_prefix. /**/ ResolvedClass();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:19: Error: Undefined name 'UnresolvedClass'.
 //   resolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:25: Error: Undefined name 'UnresolvedClass'.
 //   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:107:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:31: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
 //                               ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
 //   resolved_prefix.ResolvedClass.unresolvedConstructor();
 //                                 ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new resolved_prefix.ResolvedClass.unresolvedConstructor();
 //                                     ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const resolved_prefix.ResolvedClass.unresolvedConstructor();
 //                                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
 //   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
 //                                       ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:114:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
 //                                           ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
 //                                                   ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass<int>();
 //   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new ResolvedClass<int>();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const ResolvedClass<int>();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:3: Error: Couldn't find constructor 'ResolvedClass'.
 //   ResolvedClass /**/ <int>();
 //   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:121:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new ResolvedClass /**/ <int>();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const ResolvedClass /**/ <int>();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   ResolvedClass<int>.unresolvedConstructor();
 //                      ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new ResolvedClass<int>.unresolvedConstructor();
 //                          ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const ResolvedClass<int>.unresolvedConstructor();
 //                            ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   ResolvedClass<int> /**/ .unresolvedConstructor();
 //                            ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:128:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new ResolvedClass<int>. /**/ unresolvedConstructor();
 //                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const ResolvedClass /**/ <int>.unresolvedConstructor();
 //                                  ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:19: Error: Method not found: 'UnresolvedClass'.
 //   resolved_prefix.UnresolvedClass<int>();
 //                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass<int>();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass<int>();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Method not found: 'UnresolvedClass'.
 //   resolved_prefix. /**/ UnresolvedClass<int>();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:135:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass /**/ <int>();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass<int> /**/ ();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:19: Error: Couldn't find constructor 'ResolvedClass'.
 //   resolved_prefix.ResolvedClass<int>();
 //                   ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new resolved_prefix.ResolvedClass<int>();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const resolved_prefix.ResolvedClass<int>();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:25: Error: Couldn't find constructor 'ResolvedClass'.
 //   resolved_prefix. /**/ ResolvedClass<int>();
 //                         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:142:7: Error: Couldn't find constructor 'ResolvedClass'.
 //   new resolved_prefix.ResolvedClass /**/ <int>();
 //       ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:9: Error: Couldn't find constructor 'ResolvedClass'.
 //   const resolved_prefix.ResolvedClass<int> /**/ ();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:19: Error: Couldn't find constructor 'UnresolvedClass'.
 //   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                   ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:148:25: Error: Couldn't find constructor 'UnresolvedClass'.
 //   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
 //                         ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:23: Error: Couldn't find constructor 'UnresolvedClass'.
 //   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
 //                       ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:14: Error: Couldn't find constructor 'UnresolvedClass'.
 //       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
 //              ^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
 //                                      ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
 //                                          ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
 //                                            ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:156:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
 //                                            ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:157:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
 //                                                ^^^^^^^^^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+// pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:158:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
 //   const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
 //                                                        ^^^^^^^^^^^^^^^^^^^^^
 //
@@ -494,22 +494,22 @@
 }
 class Class extends self::Super {
   constructor constructor1() → self::Class
-    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:12:26: Error: Superclass has no constructor named 'Super'.
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Superclass has no constructor named 'Super'.
   Class.constructor1() : super();
                          ^^^^^"
     ;
   constructor constructor2() → self::Class
-    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:13:26: Error: Superclass has no constructor named 'Super.unresolved'.
+    : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Superclass has no constructor named 'Super.unresolved'.
   Class.constructor2() : super.unresolved();
                          ^^^^^"
     ;
   constructor constructor3() → self::Class
-    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:14:26: Error: Couldn't find constructor 'Class'.
+    : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:16:26: Error: Couldn't find constructor 'Class'.
   Class.constructor3() : this();
                          ^^^^"
     ;
   constructor constructor4() → self::Class
-    : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:15:26: Error: Couldn't find constructor 'Class.unresolved'.
+    : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:17:26: Error: Couldn't find constructor 'Class.unresolved'.
   Class.constructor4() : this.unresolved();
                          ^^^^"
     ;
@@ -520,346 +520,346 @@
     ;
 }
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:23:3: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:24:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:26:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:25:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:27:3: Error: Undefined name 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:28:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass.unresolvedConstructor();
       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:29:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass.unresolvedConstructor();
         ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:30:3: Error: Undefined name 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:3: Error: Undefined name 'UnresolvedClass'.
   UnresolvedClass /**/ .unresolvedConstructor();
   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:31:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:33:7: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   new UnresolvedClass. /**/ unresolvedConstructor();
       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:32:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:9: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   const UnresolvedClass /**/ .unresolvedConstructor();
         ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:34:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:35:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:36:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:37:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix. /**/ UnresolvedClass();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:38:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:40:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix /**/ .UnresolvedClass();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:39:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix. /**/ UnresolvedClass();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:41:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:42:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:41: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass.unresolvedConstructor();
                                         ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:43:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:43: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass.unresolvedConstructor();
                                           ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:44:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
   ^^^^^^^^^^^^^^^^^"{<invalid>}.UnresolvedClass{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:45:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:47:47: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
                                               ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:46:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:55: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
                                                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:48:3: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:49:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass<int>();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:50:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass<int>();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:51:3: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:3: Error: Method not found: 'UnresolvedClass'.
   UnresolvedClass /**/ <int>();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:52:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:54:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass<int> /**/ ();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:53:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass /**/ <int>();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:55:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:3: Error: Couldn't find constructor 'UnresolvedClass'.
   UnresolvedClass<int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:56:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass<int>.unresolvedConstructor();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:57:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass<int>.unresolvedConstructor();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:58:3: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:3: Error: Couldn't find constructor 'UnresolvedClass'.
   UnresolvedClass /**/ <int>.unresolvedConstructor();
   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:59:7: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:61:7: Error: Couldn't find constructor 'UnresolvedClass'.
   new UnresolvedClass<int> /**/ .unresolvedConstructor();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:60:9: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:9: Error: Couldn't find constructor 'UnresolvedClass'.
   const UnresolvedClass<int>. /**/ unresolvedConstructor();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:62:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix.UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:63:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass<int>();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:64:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int>();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:65:3: Error: Undefined name 'unresolved_prefix'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:3: Error: Undefined name 'unresolved_prefix'.
   unresolved_prefix /**/ .UnresolvedClass<int>();
   ^^^^^^^^^^^^^^^^^"{dynamic}.UnresolvedClass<core::int>();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:66:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:68:7: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   new unresolved_prefix.UnresolvedClass /**/ <int>();
       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:67:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:9: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass'.
   const unresolved_prefix.UnresolvedClass<int> /**/ ();
         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:69:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:42: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                                          ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:70:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:46: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                                              ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:71:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:48: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                                                ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:72:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:48: Error: Couldn't find constructor 'UnresolvedClass.unresolvedConstructor'.
   unresolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
                                                ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:73:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:75:52: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   new unresolved_prefix.UnresolvedClass /**/ <int>.unresolvedConstructor();
                                                    ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:74:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:54: Error: Couldn't find constructor 'unresolved_prefix.UnresolvedClass.unresolvedConstructor'.
   const unresolved_prefix.UnresolvedClass<int>. /**/ unresolvedConstructor();
                                                      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:76:3: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass();
   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:77:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:79:7: Error: Couldn't find constructor 'ResolvedClass'.
   new ResolvedClass();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:78:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:9: Error: Couldn't find constructor 'ResolvedClass'.
   const ResolvedClass();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:80:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:17: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
   ResolvedClass.unresolvedConstructor();
                 ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:81:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:21: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new ResolvedClass.unresolvedConstructor();
                     ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:82:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:23: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const ResolvedClass.unresolvedConstructor();
                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:83:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:23: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
   ResolvedClass /**/ .unresolvedConstructor();
                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:84:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:86:27: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new ResolvedClass. /**/ unresolvedConstructor();
                           ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:85:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:29: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const ResolvedClass /**/ .unresolvedConstructor();
                             ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:87:19: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:19: Error: Method not found: 'UnresolvedClass'.
   resolved_prefix.UnresolvedClass();
                   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:88:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:89:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:90:25: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:25: Error: Method not found: 'UnresolvedClass'.
   resolved_prefix. /**/ UnresolvedClass();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:91:29: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:93:29: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix /**/ .UnresolvedClass();
                             ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:92:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:31: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix. /**/ UnresolvedClass();
                               ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:94:19: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:19: Error: Couldn't find constructor 'ResolvedClass'.
   resolved_prefix.ResolvedClass();
                   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:95:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:7: Error: Couldn't find constructor 'ResolvedClass'.
   new resolved_prefix.ResolvedClass();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:96:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:9: Error: Couldn't find constructor 'ResolvedClass'.
   const resolved_prefix.ResolvedClass();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:97:25: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:25: Error: Couldn't find constructor 'ResolvedClass'.
   resolved_prefix. /**/ ResolvedClass();
                         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:98:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:100:7: Error: Couldn't find constructor 'ResolvedClass'.
   new resolved_prefix /**/ .ResolvedClass();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:99:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:9: Error: Couldn't find constructor 'ResolvedClass'.
   const resolved_prefix. /**/ ResolvedClass();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:101:19: Error: Undefined name 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:19: Error: Undefined name 'UnresolvedClass'.
   resolved_prefix.UnresolvedClass.unresolvedConstructor();
                   ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:102:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass.unresolvedConstructor();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:103:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass.unresolvedConstructor();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:104:25: Error: Undefined name 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:25: Error: Undefined name 'UnresolvedClass'.
   resolved_prefix /**/ .UnresolvedClass.unresolvedConstructor();
                         ^^^^^^^^^^^^^^^"{dynamic}.unresolvedConstructor();
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:105:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:107:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass /**/ .unresolvedConstructor();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:106:31: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:31: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix. /**/ UnresolvedClass. /**/ unresolvedConstructor();
                               ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:108:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:33: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
   resolved_prefix.ResolvedClass.unresolvedConstructor();
                                 ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:109:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:37: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new resolved_prefix.ResolvedClass.unresolvedConstructor();
                                     ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:110:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:39: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const resolved_prefix.ResolvedClass.unresolvedConstructor();
                                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:111:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:39: Error: Member not found: 'ResolvedClass.unresolvedConstructor'.
   resolved_prefix /**/ .ResolvedClass.unresolvedConstructor();
                                       ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:112:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:114:43: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new resolved_prefix.ResolvedClass /**/ .unresolvedConstructor();
                                           ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:113:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:51: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const resolved_prefix. /**/ ResolvedClass. /**/ unresolvedConstructor();
                                                   ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:115:3: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass<int>();
   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:116:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:7: Error: Couldn't find constructor 'ResolvedClass'.
   new ResolvedClass<int>();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:117:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:9: Error: Couldn't find constructor 'ResolvedClass'.
   const ResolvedClass<int>();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:118:3: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:3: Error: Couldn't find constructor 'ResolvedClass'.
   ResolvedClass /**/ <int>();
   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:119:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:121:7: Error: Couldn't find constructor 'ResolvedClass'.
   new ResolvedClass /**/ <int>();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:120:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:9: Error: Couldn't find constructor 'ResolvedClass'.
   const ResolvedClass /**/ <int>();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:122:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:22: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   ResolvedClass<int>.unresolvedConstructor();
                      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:123:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:26: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new ResolvedClass<int>.unresolvedConstructor();
                          ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:124:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const ResolvedClass<int>.unresolvedConstructor();
                            ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:125:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:28: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   ResolvedClass<int> /**/ .unresolvedConstructor();
                            ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:126:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:128:32: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new ResolvedClass<int>. /**/ unresolvedConstructor();
                                ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:127:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:34: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const ResolvedClass /**/ <int>.unresolvedConstructor();
                                  ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:129:19: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:19: Error: Method not found: 'UnresolvedClass'.
   resolved_prefix.UnresolvedClass<int>();
                   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:130:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass<int>();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:131:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass<int>();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:132:25: Error: Method not found: 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Method not found: 'UnresolvedClass'.
   resolved_prefix. /**/ UnresolvedClass<int>();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:133:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:135:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass /**/ <int>();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:134:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass<int> /**/ ();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:136:19: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:19: Error: Couldn't find constructor 'ResolvedClass'.
   resolved_prefix.ResolvedClass<int>();
                   ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:137:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:7: Error: Couldn't find constructor 'ResolvedClass'.
   new resolved_prefix.ResolvedClass<int>();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:138:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:9: Error: Couldn't find constructor 'ResolvedClass'.
   const resolved_prefix.ResolvedClass<int>();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:139:25: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:25: Error: Couldn't find constructor 'ResolvedClass'.
   resolved_prefix. /**/ ResolvedClass<int>();
                         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:140:7: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:142:7: Error: Couldn't find constructor 'ResolvedClass'.
   new resolved_prefix.ResolvedClass /**/ <int>();
       ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:141:9: Error: Couldn't find constructor 'ResolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:9: Error: Couldn't find constructor 'ResolvedClass'.
   const resolved_prefix.ResolvedClass<int> /**/ ();
         ^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:143:19: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:19: Error: Couldn't find constructor 'UnresolvedClass'.
   resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                   ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:144:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:145:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:25: Error: Couldn't find constructor 'UnresolvedClass'.
   const resolved_prefix.UnresolvedClass<int>.unresolvedConstructor();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:146:25: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:148:25: Error: Couldn't find constructor 'UnresolvedClass'.
   resolved_prefix /**/ .UnresolvedClass<int>.unresolvedConstructor();
                         ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:147:23: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:23: Error: Couldn't find constructor 'UnresolvedClass'.
   new resolved_prefix.UnresolvedClass<int> /**/ .unresolvedConstructor();
                       ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:149:14: Error: Couldn't find constructor 'UnresolvedClass'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:14: Error: Couldn't find constructor 'UnresolvedClass'.
       . /**/ UnresolvedClass<int>. /**/ unresolvedConstructor();
              ^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:151:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:38: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
                                      ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:152:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:42: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
                                          ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:153:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const resolved_prefix.ResolvedClass<int>.unresolvedConstructor();
                                            ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:154:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:156:44: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   resolved_prefix /**/ .ResolvedClass<int>.unresolvedConstructor();
                                            ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:155:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:157:48: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   new resolved_prefix.ResolvedClass<int> /**/ .unresolvedConstructor();
                                                ^^^^^^^^^^^^^^^^^^^^^";
-  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:156:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
+  invalid-expression "pkg/front_end/testcases/general/unresolved_constructor_invocation.dart:158:56: Error: Couldn't find constructor 'ResolvedClass.unresolvedConstructor'.
   const resolved_prefix. /**/ ResolvedClass<int>. /**/ unresolvedConstructor();
                                                        ^^^^^^^^^^^^^^^^^^^^^";
 }
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index 8675902..c24938e 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -23,6 +23,7 @@
 const_functions/const_functions_const_ctor: FormatterCrash
 const_functions/const_functions_const_ctor_error: FormatterCrash
 const_functions/const_functions_const_factory: FormatterCrash
+constructor_tearoffs/issue47075: FormatterCrash
 dart2js/late_fields: FormatterCrash
 dart2js/late_statics: FormatterCrash
 extension_types/simple_getter_resolution: FormatterCrash
diff --git a/pkg/kernel/doc/semantics/kernel-semantics.tex b/pkg/kernel/doc/semantics/kernel-semantics.tex
deleted file mode 100644
index 44e23c3..0000000
--- a/pkg/kernel/doc/semantics/kernel-semantics.tex
+++ /dev/null
@@ -1,3406 +0,0 @@
-% Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
-% for details. All rights reserved. Use of this source code is governed by a
-% BSD-style license that can be found in the LICENSE file.
-
-
-\documentclass[a4paper,oneside,fleqn]{article}
-
-
-\usepackage[utf8]{inputenc}
-\usepackage[fleqn]{amsmath}
-\usepackage{a4wide}
-\usepackage{url}
-\usepackage{cite}
-\usepackage{amssymb}
-\usepackage{stmaryrd}
-\usepackage{alltt}
-\usepackage{xypic}
-\usepackage{appendix}
-\usepackage{color}
-\usepackage{hyperref}
-\usepackage{chngcntr}
-\usepackage{ifthen}
-\usepackage[fleqn]{mathtools}
-\usepackage{geometry}
-\usepackage{mdframed}
-\usepackage[textsize=tiny]{todonotes}
-\usepackage{mathrsfs}
-
-\definecolor{shade}{gray}{0.75}
-\newcommand{\shadethis}[1]{\colorbox{shade}%
-    {\protect\rule[-0.95mm]{0mm}{3.95mm}\hspace{0.3mm}#1\hspace{0.3mm}}}
-
-
-% Shorthard for ``Dart Kernel'' in small caps.
-\newcommand{\kernel}{\textsc{Dart Kernel}}
-
-% Shorthand for ``Dart'' in small caps.
-\newcommand{\dart}{\textsc{Dart}}
-
-% A bit nicer symbol: ∅
-\renewcommand{\emptyset}{\varnothing}
-
-% Some known sets.
-\newcommand{\NN}{\mathbb{N}}    % Natural numbers.
-
-
-% Some auxiliary operators.
-\DeclareMathOperator{\dom}{Dom} % Domain of a function.
-
-
-% Meta-functions to be used in math mode.
-\DeclareMathOperator{\extend}{extend}
-\DeclareMathOperator{\update}{update}
-\DeclareMathOperator{\extendMain}{extendMain}
-\DeclareMathOperator{\concat}{concat}
-\DeclareMathOperator{\getter}{implicitGetter}
-\DeclareMathOperator{\setter}{implicitSetter}
-\DeclareMathOperator{\lookup}{lookup}
-\DeclareMathOperator{\methodLookup}{methodLookup}
-\DeclareMathOperator{\contains}{contains}
-
-% Meta-functions for operations on list
-\DeclareMathOperator{\head}{head}
-\DeclareMathOperator{\tail}{tail}
-\DeclareMathOperator{\append}{append}
-
-% Keywords and syntactic constructs of Dart Kernel to be used in math mode.
-\newcommand{\synt}[1]{\ensuremath{\text{\textbf{\texttt{#1}}}}}
-\DeclareMathOperator{\dowhile}{\synt{do~while}}
-\DeclareMathOperator{\while}{\synt{while}}
-\DeclareMathOperator{\forin}{\synt{for~in}}
-\DeclareMathOperator{\for}{\synt{for}}
-\DeclareMathOperator{\throw}{\synt{throw}}
-\DeclareMathOperator{\rethrow}{\synt{rethrow}}
-\DeclareMathOperator{\new}{\synt{new}}
-\DeclareMathOperator{\nnull}{\synt{null}}
-\DeclareMathOperator{\bbreak}{\synt{break}}
-\DeclareMathOperator{\switch}{\synt{switch}}
-\DeclareMathOperator{\continue}{\synt{continue}}
-\DeclareMathOperator{\return}{\synt{return}}
-\DeclareMathOperator{\case}{\synt{case}}
-\DeclareMathOperator{\default}{\synt{default}}
-\DeclareMathOperator{\try}{\synt{try}}
-\DeclareMathOperator{\catch}{\synt{catch}}
-\DeclareMathOperator{\finally}{\synt{finally}}
-
-% Functions for projection on components of class.
-\DeclareMathOperator{\superclass}{\synt{superclass}}
-\DeclareMathOperator{\members}{\synt{members}}
-\DeclareMathOperator{\lookupMember}{\synt{lookupMember}}
-\DeclareMathOperator{\class}{\synt{class}}
-\DeclareMathOperator{\getfield}{\synt{field}}
-
-
-% Oftenly used syntactic meta-literals.
-\newcommand{\true}{\synt{true}}
-\newcommand{\false}{\synt{false}}
-\newcommand{\this}{\synt{this}}
-\newcommand{\Rethrow}{\synt{rethrow}}
-\newcommand{\Throw}[1]{\synt{throw}\,#1}
-
-% Syntactic Domains
-\newcommand{\dexpr}{\mathbf{Expr}}
-\newcommand{\dstmt}{\mathbf{Stmt}}
-\newcommand{\dhandler}{\mathbf{Handler}}
-
-\newcommand{\decont}{\mathbf{ExprCont}}
-\newcommand{\dscont}{\mathbf{StmtCont}}
-\newcommand{\dacont}{\mathbf{ApplCont}}
-\newcommand{\dbcont}{\mathbf{BreakCont}}
-\newcommand{\dswitchcont}{\mathbf{SwitchCont}}
-\newcommand{\dncont}{\mathbf{EventCont}}
-
-\newcommand{\dlbl}{\mathbf{Label}}
-\newcommand{\dclbl}{\mathbf{SwitchLabel}}
-
-\newcommand{\denv}{\mathbf{Env}}
-\newcommand{\dmenv}{\mathbf{MainEnv}}
-\newcommand{\dfield}{\mathbf{Field}}
-
-\newcommand{\dval}{\mathbf{Value}}
-\newcommand{\dlit}{\mathbf{Literal}}
-\newcommand{\dvar}{\mathbf{Variable}}
-\newcommand{\dvardecl}{\mathbf{VariableDeclaration}}
-\newcommand{\dstring}{\mathbf{StringValue}}
-\newcommand{\dfunval}{\mathbf{FunctionValue}}
-\newcommand{\dlitval}{\mathbf{LiteralValue}}
-\newcommand{\dobjval}{\mathbf{ObjectValue}}
-\newcommand{\dvector}{\mathbf{Vector}}
-\newcommand{\dmember}{\mathbf{Member}}
-\newcommand{\dident}{\mathbf{Identifier}}
-\newcommand{\idmeta}{\ensuremath{\mathit{X}}}
-\newcommand{\dtype}{\mathbf{Type}}
-
-\newcommand{\typemeta}{\ensuremath{\mathit{t}}}
-\newcommand{\dclass}{\mathbf{Class}}
-\newcommand{\dformals}{\mathbf{Formals}}
-
-\newcommand{\ddom}{\mathbf{Dom}}    % Unspecified domain to use in examples.
-
-% Known domains for Dart types.
-\newcommand{\dsemint}{\mathbf{int}}
-\newcommand{\dsembool}{\mathbf{bool}}
-\newcommand{\dsemdouble}{\mathbf{double}}
-\newcommand{\dsemlist}{\mathbf{List}}
-\newcommand{\dsemmap}{\mathbf{Map}}
-\newcommand{\dsemstring}{\mathbf{String}}
-\newcommand{\dsemsymbol}{\mathbf{Symbol}}
-
-
-%%
-% Commands to typeset transitions of CESK machine.
-%
-% \cesktrans{FROM}{TO}
-% \cesktransalign{FROM}{TO}
-% \cesktranssplit{FROM}{TO}
-%
-% Typesets a transition from configuration FROM to configuration TO. Like this:
-%
-%     FROM => TO
-%
-% "Align" variant has an embedded "&" inside, immediately before the transition
-% sign "=>".  It means that the command should be put into an environment that
-% aligns its multi-line content using "&" signs, for example "align".
-%
-% "Split" variant has an embedded "\\" inside, immediately after the transition
-% sign "=>".  It is useful for putting long equations in an environment such as
-% "split".
-%%
-\newcommand{\cesktrans}[2]{\ensuremath{{#1} \Rightarrow {#2}}}
-\newcommand{\cesktransalign}[2]{\ensuremath{{#1} &\Rightarrow {#2}}}
-\newcommand{\cesktranssplit}[2]{\ensuremath{{#1} \Rightarrow\\ {#2}}}
-
-
-%%
-% Commands to typeset transitions of CESK machine with clarifying clause.
-%
-% \cesktranswhere{FROM}{TO}{WHERE}
-% \cesktranswherealign{FROM}{TO}{WHERE}
-% \cesktranswherealign*{FROM}{TO}{WHERE}
-% \cesktranswheresplit{FROM}{TO}{WHERE}
-% \cesktranswheresplit*{FROM}{TO}{WHERE}
-%
-% Typesets a transition from configuration FROM to configuration TO.  These
-% commands have a clarifying clause that explains the meaning of some new
-% symbols introduced by the transition.
-%
-% The "align" versions have an embedded "&" inside, immideately before the
-% transition sign "=>".  It means that the command sould be put into an
-% environment that aligns its multi-line content using "&" signs, for example
-% "align".  The non-starred "align" variant puts the additional clause to the
-% same line as the transition itself, separating it with a comma.  The starred
-% version puts the additional clause on the next line.
-%
-% Here is how non-starred version looks like:
-%
-%     FROM => TO, WHERE
-%
-% Here is how starred version looks like:
-%
-%     FROM => TO,
-%          WHERE
-%
-% "Split" variants has embedded "\\" inside.  Non-starred "split" variant have one
-% after the comma.  Starred "split" variant have one additional "\\" after
-% the transition sign "=>".  It is useful for putting long equations in an
-% environment such as "split", "gather", or "multline".  Note that if an
-% environment generates a new equation number for each line, it can be disabled
-% by putting "\notag" inside the arguments where the number is undesirable.
-%%
-\newcommand{\cesktranswhere}[3]{\ensuremath{{#1} \Rightarrow {#2}, {#3}}}
-\newcommand{\cesktranswherealignNoStar}[3]{\ensuremath{{#1} &\Rightarrow {#2}, {#3}}}
-\newcommand{\cesktranswherealignStar}[3]{\ensuremath{{#1} &\Rightarrow \begin{aligned}[t]&{#2},\\&{#3}\end{aligned}}}
-\makeatletter
-\newcommand{\cesktranswherealign}{%
-    \@ifstar
-        \cesktranswherealignStar%
-        \cesktranswherealignNoStar%
-}
-\makeatother
-\newcommand{\cesktranswheresplitNoStar}[3]{\ensuremath{{#1} \Rightarrow {#2},\\{#3}}}
-\newcommand{\cesktranswheresplitStar}[3]{\ensuremath{{#1} \Rightarrow\\ {#2},\\{#3}}}
-\makeatletter
-\newcommand{\cesktranswheresplit}{%
-    \@ifstar
-        \cesktranswheresplitStar%
-        \cesktranswheresplitNoStar%
-}
-\makeatother
-
-
-\setlength{\itemsep}{0pt}
-\geometry{%
-    top=2cm,%
-    right=2cm,%
-    bottom=2cm,%
-    left=3cm,%
-}
-
-
-\newmdenv[linecolor=black,leftline=false,rightline=false]{eqfigure}
-
-
-\begin{document}
-\title{Operational Semantics of \kernel{}}
-\author{\kernel{} Team \\ \href{mailto:dart-kernel@google.com}{dart-kernel@google.com}}
-
-\maketitle
-
-\begin{abstract}
-
-The \kernel{} is a simplified representation of the \dart{} programming language.
-Similar to the \textsc{Core} of the Glasgow Haskell Compiler, \kernel{} is more amenable to formal specification and analysis than the \dart{} surface language and is the primary intermediate representation used in the \dart{} compilation toolchain.
-This paper documents the syntax and operational semantics of \kernel{} to enable framework authors for \dart{} to write safe transformations on \kernel{}, to allow the creation of a reference interpreter for testing the backend implementations of \dart{} and to facilitate academic analysis of the safety properties of \dart{}.
-
-\end{abstract}
-
-\setcounter{tocdepth}{2}
-\tableofcontents
-
-\section{Foreword}
-
-\subsection{Audience}
-This paper is intended for compiler and framework authors and academics.
-The reader should have a proficient understanding of basic concepts in programming language design and implementation, such as abstract syntax, intermediate representations and operational semantics.
-Still, this paper aims to be as accessible as possible, so most concepts that are not familiar to an advanced \dart{} programmer will be explained in sufficient detail to understand the formalizations here.
-
-\subsection{Formalization Style}
-
-\subsubsection{Abstract Syntax}
-
-The abstract syntax of \kernel{} is slightly unusual in that it does not have a tree structure or relate to any concrete, textual syntax.
-It is instead a description of the data structures used by the \dart{} compliation toolchain, which are represented as directed acyclic graph.
-The semantics depends heavily on the use of ``pointer'' equality between nodes in the syntax graph, which is more fine-grained than structural equality.
-For example, a single \kernel{} program may have several syntax nodes that each define and initialize a variable with the same name and value, even in the same scope.
-A later assignment to the variable will disambiguate between these declarations by referring to the specific variable declaration node by pointer identity.
-Presenting the abstract syntax in this manner not only models the \kernel{} implementation more accurately, but allows us to ignore complications with variable renaming, shadowing and $\alpha$-conversion.
-
-\subsubsection{Small-step Operational Semantics}
-
-The operational semantics of \kernel{} are given in ``small-step'' style, where each rule of the semantics corresponds to a simple transition from one state of an abstract machine to another.
-The rules are not nested or recursive, and only specify one possible outgoing transition from any state.
-Some states of the machine have no outgoing transitions specified, corresponding to undefined operations like out-of-bounds vector access.
-
-\subsubsection{CESK Machine}
-
-The abstract machine is presented in the style of a CESK machine. \todo{dmitryas: add citation for CESK machine}
-The state space of the CESK machine is grouped into several configurations, most of which carry an environment, which maps variable declarations in the present scope to their current assignments, a store, which models the mutable object store in which all objects in a \dart{} program live, and a continuation, which captures the work to be done after the current operation is complete, roughly similar to a chain of call frames above the current function.
-In this way states of the CESK machine mimic states of the \dart{} virtual machine at a very abstract level.
-
-
-\section{Definitions}
-\label{sec:definitions}
-
-This section contains definitions of syntactic and semantic domains, helper functions, and notations used in the rest of the document.
-
-
-\subsection{Conventions}
-\label{subsec:conventions}
-
-\begin{itemize}
-    \item The symbols ``:'' (is-of-type) and ``$\in$'' (element-of) are used interchangeably.
-    \item The names of variables are italicized.
-    \item The names of variables within a syntactic domain start with an upper case letter.
-    \item The names of domains (meta-types defined in this paper) are written in bold (e.g. ``$\dexpr$'').
-    \item The names of the different kinds of continuations are written in normal text (e.g. VarSetEK).
-    \item The names of meta-functions start with lower case letter (e.g. $\extend$).
-    \item ``$\mlist{\ddom}$'' denotes the domain of meta-lists of elements from domain ``$\ddom$''.
-        Note that the word ``List'' here is not in bold, so that it isn't confused with the domain $\dsemlist$ of \dart{} objects.
-        \todo{sjindel: Why is this a domain?}
-\end{itemize}
-\todo{dmitryas: Explain notation for Kernel syntactic constructs like "on T catch (e, s)".}
-
-\subsection{Notations}
-\label{subsec:notations}
-
-\begin{align*}
-    \dom(f) &\text{ --- the domain of function \(f\)}.\\
-    \pi_i(x) &\text{ --- the $i^{th}$ component of $x \in \ddom_1 \times \dots \times \ddom_n$}.
-\end{align*}
-
-\subsubsection{Meta list}
-\label{subsubsec:meta-list}
-
-Throughout the document we use meta lists which represent lists of elements from some domain.
-We define a list $l \in \mlist{\ddom}$ and are constructed as follows:
-\begin{align*}
-    [] &\text{ --- empty list}.\\
-    x :: \textit{list} &\text{ --- a meta-list that is constructed by adding element $x \in \ddom$ to the head of the meta-list $list$}.
-\end{align*}
-
-\todo{Define behaviour for operations on empty list.}
-In addition of the usual $\head$ and $\tail$ operations on a list, we add $\append$ operator.
-\begin{align*}
-    &\head \in \mlist{\ddom} \rightarrow \ddom\\
-    &\head(x :: \textit{list}) = x \text{ where $x :: \text{list} \in \mlist{\ddom}$}\\
-    &\tail \in \mlist{\ddom} \rightarrow \mlist{\ddom}\\
-    &\tail(x :: \textit{list}) = list \text{ where $x :: \text{list} \in \mlist{\ddom}$}\\
-    &\append \in \mlist{\ddom} \times \ddom \rightarrow \mlist{\ddom}\\
-    &\append(\textit{list}, x) = \textit{list'} \text{ where $x \in \ddom$ is the last element of $\textit{list}' \in \mlist{\ddom}$}\\
-\end{align*}
-
-
-\subsection{Domains}
-\label{subsec:domains}
-
-% Variables
-\newcommand{\dlocation}{\mathbf{Location}}
-\newcommand{\loc}{\ensuremath{\alpha}}
-
-\newcommand{\expr}{\ensuremath{\mathit{E}}}
-\newcommand{\expri}[1]{\expr_\ensuremath{\mathit{#1}}}
-\newcommand{\exprs}{\expr\ensuremath{\mathit{s}}}
-\newcommand{\membermeta}{\ensuremath{\mathit{M}}}
-
-\newcommand{\stmt}{\ensuremath{\mathit{S}}}
-\newcommand{\stmti}[1]{\stmt_\ensuremath{#1}}
-\newcommand{\stmts}{\stmt\ensuremath{\mathit{s}}}
-
-\newcommand{\handler}{\ensuremath{\mathit{H}}}
-\newcommand{\strace}{\ensuremath{\textit{st}}}
-\newcommand{\cstrace}{\ensuremath{\textit{cst}}}
-\newcommand{\cex}{\ensuremath{\textit{cex}}}
-
-\newcommand{\scase}{\mathit{SC}}
-\newcommand{\scases}{\scase\ensuremath{\mathit{s}}}
-\newcommand{\ccase}{\mathit{CC}}
-\newcommand{\ccases}{\scase\ensuremath{\mathit{s}}}
-
-\newcommand{\vals}{\ensuremath{vs}}
-\newcommand{\vvec}{\ensuremath{\vec{v}}}
-
-\newcommand{\env}{\ensuremath{\rho}}
-\newcommand{\mainenv}{\env_{M}}
-\newcommand{\field}{\phi}
-
-\newcommand{\lit}{\ensuremath{\mathscr{L}}}
-\newcommand{\classvar}{\ensuremath{c}}
-
-\newcommand{\lbl}{\ensuremath{\textit{lbl}}}
-\newcommand{\lbls}{\ensuremath{\textit{lbls}}}
-\newcommand{\clbl}{\ensuremath{\textit{clbl}}}
-\newcommand{\clbls}{\ensuremath{\textit{clbls}}}
-
-\newcommand{\econt}{\cont_\ensuremath{E}}
-\newcommand{\acont}{\cont_\ensuremath{A}}
-\newcommand{\scont}{\cont_\ensuremath{S}}
-\newcommand{\bcont}{\cont_\ensuremath{B}}
-\newcommand{\switchcont}{\cont_{\ensuremath{\textit{switch}}}}
-
-\newcommand{\funval}[3]{\mathrm{FunctionValue}({#1},\,{#2},\,{#3})}
-\newcommand{\objval}{\mathrm{ObjectValue}(class, fields)}
-\newcommand{\obj}{\ensuremath{o}}
-
-\newcommand{\formal}{\ensuremath{A}}
-\newcommand{\formali}[1]{\ensuremath{A_{#1}}}
-\newcommand{\formals}{\ensuremath{As}}
-
-\newcommand{\ncont}{\cont_\ensuremath{N}}
-\newcommand{\eventloop}{\ensuremath{G}}
-
-% Constructor Initializers
-\newcommand{\Initializer}[1]{\synt{Initializer}(#1)}
-\newcommand{\FieldInitializer}[1]{\synt{FieldInitializer}(\field, #1)}
-\newcommand{\LocalInitializer}[1]{\synt{LocalInitializer}(\varmeta, #1)}
-\newcommand{\SuperInitializer}[2]{\synt{SuperInitializer}(#1,\,#2)}
-\newcommand{\RedirectingInitializer}[2]{\synt{RedirectingInitializer}(#1,\,#2)}
-
-\[
-  \begin{array}{ccll}
-    \expr, \expri{i}
-    & : & \dexpr & \text{syntactic domain of expressions}\\
-    \exprs
-    & : & \mlist{\dexpr}\\
-
-    \stmt, \stmti{i}
-    & : & \dstmt & \text{syntactic domain of statements}\\
-    \stmts
-    & : & \mlist{\dstmt}  & \text{}\\
-
-    \econt
-    & : & \decont & \text{semantic domain of expression continuations}\\
-    \acont
-    & : & \dacont & \text{semantic domain of application continuations}\\
-    \scont
-    & : & \dscont & \text{semantic domain of statement continuations}\\
-    \bcont
-    & : & \dbcont & \text{semantic domain of break continuations}\\
-    \switchcont
-    & : & \dswitchcont & \text{semantic domain of switch continuations}\\
-
-    \lbl & : & \dlbl & \text{semantic domain of labels}\\
-    \lbls & : & \mlist{\dlbl} \\
-    \clbl & : & \dclbl & \text{semantic domain of switch labels}\\
-    \clbls & : & \mlist{\dclbl} \\
-
-    \handler
-    & : & \dhandler & \text{syntactic domain of exception handlers} \\
-    \strace
-    & : & \mlist{\dexpr} & \text{semantic domain of stack traces}\\
-    \cex
-    & : &  \emptyset + \dval & \text{semantic domain of current exception values}\\
-    \cstrace
-    & : & \emptyset + \mlist{\dexpr} & \text{semantic domain of current exception stack traces}\\
-    \varmeta
-    & : & \dvar & \text{semantic domain of variables}\\
-    \loc
-    & : & \dlocation & \text{semantic domain of store locations}\\
-    \val
-    & : & \dval & \text{semantic domain of values}\\
-    \vals & : & \mlist{\dval} \\
-    \vvec & : & \dvector = \mlist{\dval}& \text{semantic domain of vectors}\\
-    \env
-    & : & \denv & \text{semantic domain of environments}\\
-    \mainenv
-    & : & \dmenv & \text{semantic domain of main environments}\\
-    \obj
-    & : & \dobjval & \text{semantic domain of object values}\\
-    \lit
-    & : & \dlit & \text{syntactic domain of literals}\\
-    \classvar
-    & : & \dclass & \text{semantic domain of class definitions}\\
-    \membermeta
-    & : & \dmember & \text{syntactic domain of class members}\\
-    \idmeta
-    & : & \dident & \text{syntactic domain of identifiers}\\
-    \typemeta & : & \dtype & \text{semantic domain of Dart types}\\
-    \formal, \formali{i} & : & \dvardecl & \text{syntactic domain of variable declarations} \\
-    \formals & : & \dformals = \mlist{\dvardecl} &\text{syntactic domain of formal parameters}\\
-    \ncont & : & \dncont &\text{semantic domain of event loop continuations}\\
-    \eventloop & : & \mlist{\dncont} &\text{semantic domain of event loops}\\
-  \end{array}
-\]
-
-% Metavariables
-\newcommand{\expressionmeta}{\ensuremath{\mathit{E}}}
-\newcommand{\expressionsmeta}{\expressionmeta{s}}
-\newcommand{\variablemeta}{\ensuremath{\mathit{x}}}
-\newcommand{\boolmeta}{\ensuremath{\mathit{B}}}
-\newcommand{\integermeta}{\ensuremath{\mathit{I}}}
-\newcommand{\doublemeta}{\ensuremath{\mathit{D}}}
-\newcommand{\stringmeta}{\ensuremath{\mathit{S}}}
-% Metavariables for statements
-\newcommand{\statementmeta}{\ensuremath{\mathit{\stmt}}}
-
-\subsection{Store}
-\label{subsec:store-definition}
-
-The store $s$ is a finite map from location $\loc$ to a value $\val$.
-The store is a mutable map and should not be confused with a function.
-A global store is assumed and locations reachable in the current scope are defined by the current environment function
-\[
-    s : \dlocation \rightarrow \dval.
-\]
-
-
-\subsubsection{Locations}
-
-The object store is indexed by elements $\loc$ from the domain $\dlocation$.
-This domain is countably infinite, and we assume that we can generate fresh values from the domain within the abstract machine.
-It could be represented by natural numbers, for example, but arithmetic on locations is not meaningful.
-
-
-\subsubsection{Dereferencing}
-\label{subsubsection:dereferecing}
-
-\newcommand{\deref}[1]{!#1}
-The function ``$\deref{}$'' is used to access the value stored in the store at the given location.
-The location is stored in the environment, or in the list of field locations for object values.
-``$\deref{}$'' has an implicit argument which is the store of CESK machine.
-\begin{align*}
-    &\deref{} \in \dlocation \rightarrow \dval,\\
-    &\deref{\loc} =  \val, \text{ with $\val$ the value in store at location } \loc.
-\end{align*}
-
-
-\subsubsection{Update}
-\label{subsubsec:store-update}
-
-%\newcommand{\update}[2]{{#1} := {#2}}
-The operator ``$\update(\loc,\, \val)$'' updates the store at location $\loc \in \dlocation$ with value $\val \in \dval$.
-It has an implicit operand which is the store of the CESK machine.
-Upon execution the operator returns a value from domain $\dval$, s.\,t. $\update(\loc,\,\val) = \val$, where $\val$ is the value in the store at location $\loc$.
-
-
-\subsection{Environment}
-\label{subsec:env-definition}
-
-The environment is a function that maps a variable to a location in the store.
-\[
-    \env \in \denv = \dvardecl \rightarrow \dlocation.
-\]
-
-When an environment is needed to further execute the program, it is saved by the caller in the corresponding continuation.
-
-
-\subsubsection{Extend}
-\label{subsubsec:extend-env}
-
-Operator ``$\extend$'' creates a new environment by extending the provided environment with new bindings for the variable declarations to fresh locations for each of the provided values.
-This operator has an implicit operand which is the store of the CESK machine.
-\begin{align*}
-    &\extend \in \denv \times \mlist{\dvardecl} \times \mlist{\dval} \rightarrow  \denv,\\
-    &\ext{\env}{(\varmeta_{1}, \dots, \varmeta_{n})}{(\val_{1}, \dots, \val_{n})} = \env',
-\end{align*}
-
-\noindent where
-\begin{align*}
-    & n \in \NN,\\
-    & (\varmeta_{1}, \dots, \varmeta_{n}) \in \mlist{\dvardecl},\\
-    & (\val_{1}, \dots, \val_{n}) \in \mlist{\dval},\\
-    & (\alpha_{1}, \dots, \alpha_{n}) \in \mlist{\dlocation} \text{ --- list of fresh locations in the store},\\
-    & !\env'(\varmeta) =\begin{cases}
-        !\loc_i = \val_i, & \text{if }\varmeta = \varmeta_i,\\
-        !\env(\varmeta), &\text{otherwise}.
-    \end{cases}
-\end{align*}
-
-For simpler notation, we allow ``$\extend$'' to be called on single values: $\ext{\env}{\varmeta}{\val}$, which we consider equivalent to calling it on singleton lists: $\ext{\env}{\varmeta :: []}{\val :: []}$.
-
-
-\subsubsection{Variable Lookup}
-\label{subsubsec:variable-lookup}
-
-A variable lookup consists of looking up the location of a variable from the environment with $\loc = \env(\varmeta)$ and reading the stored value $v$ with $\deref{\loc} = \deref{\env(\varmeta)}$ from the store.
-
-
-\subsection{Main Environment}
-\label{subsec:main-env}
-
-\kernel{} supports static and library fields, which are initialized when first accessed and mutations of values stored in these fields are visible in all subsequent execution of statements or evaluation of expressions.
-To support this feature, we introduce a main environment, denoted as $\mainenv$.
-
-\newcommand{\dmainenv}{\textbf{MainEnvironment}}
-
-\[\mainenv \in \dmainenv = \dmember \rightarrow \dlocation \]
-
-We define the following functions for manipulating $\mainenv$:
-
-\subsubsection{Contains}
-We define the function $\contains$ as follows:
-\begin{align*}
-    \contains &\in \dmainenv \times \dmember \rightarrow \dsembool\\
-    \contains(\mainenv, x) &=\begin{cases}
-        \true &\text{ if }x \in \dom(\mainenv),\\
-        \false &\text{ otherwise}
-    \end{cases}
-\end{align*}
-where $\dom(\mainenv)$ is the domain of the environment $\mainenv$, i.e. the set of members for which $\mainenv$ is defined.
-
-We will use `\contains` as a proposition in the transition steps below, since the value produced is not used alongside the values from the semantic domains.
-
-\subsubsection{Extend}
-We define the function extend as follows:
-\begin{align*}
-    &\extend \in \dmainenv \times \dmember \times \dval \rightarrow \denv\\
-    &\extend(\mainenv, x, \val) = \mainenv',\\
-    &\text{where }\\
-    &\forall y \in \dom(\mainenv) \cup \{x\},\,\mainenv'(y) =\begin{cases}
-        \loc &\text{ if } y = x,\\
-        \mainenv(y) &\text{ otherwise}\\
-    \end{cases}\\
-    &\text{and $\loc$ is a fresh location that stores the value $\val$.}
-\end{align*}
-
-This environment is visible during the execution of a \kernel{} program, therefore it should be in the left and right-hand side of all the transition presented in the paper.
-In order to simplify the transitions, we assume the main environment is implicit.
-
-For a rule $C_1 \Rightarrow C_2$ that defines the transition from configuration $C_1$ to configuration $C_2$, we explicitly mention when the main environment in the resulting configuration $C_2$ is not the same as the one in the previous configuration $C_1$.
-
-\subsubsection{Static and Library Field Lookup}
-\label{subsubsec:static-field-lookup}
-
-A static and library field lookup for field $\field$ consists of looking up the location of the static field from the main environment with $\loc = \mainenv(\field)$ and reading the stored value $v$ with $\deref{\loc} = \deref{\mainenv(\field)}$ from the store.
-
-
-\subsection{Values}
-\label{sec:values}
-
-Values in \kernel{} fall into two categories: $\dvector$ values and $\dobjval$ values.
-Values are irreducible terms, i.e, the result of the evaluation of expressions.
-Only object values may be in the image of the store.
-
-\subsubsection{Vector Values}
-\label{subsubsec:vector-values}
-
-\kernel{} has limited support for arrays without bounds checking via $\dvector$s.
-The step function for the CESK machine is not defined for operations that access an element vector outside its bounds.
-$\dvector$s cannot be introduced by any construct present in \dart{} itself, but rather are introduced only by \kernel{} transformations which can ensure they are only used in a safe manner.
-
-\subsubsection{Literals}
-
-Some objects from primitive types contain a literal value and a specific class corresponding to the literal's type.
-The different types of literal values are:
-\[\dlit = \dsemint + \dsembool + \dsemdouble + \dsemlist + \dsemmap + \dsemstring + \dsemsymbol + \dtype.\]
-
-Literal values are special values that store the specific payload and an associated class.
-Each of the specific literal values contains predefined operators and methods, whose semantics are elided here.
-
-\subsubsection{Class}
-\label{subsubsec:class}
-
-A $\dclass$ encodes a class definition in \kernel{}.
-
-\begin{align*}
-\dclass &= (\emptyset + \dclass) \times \mlist{\dclass} \times (\dident \mapsto \dmember)\\
-\dmember &= \mathbf{Getter} + \mathbf{Setter} + \mathbf{Method} \\
-\mathbf{Getter} &= \NN + \dstmt \\
-\mathbf{Setter} &= \NN + \dformals \times \dstmt \\
-\mathbf{Method} &= \dformals \times \dstmt
-\end{align*}
-
-A class definition contains a reference to the superclass (none only in the case of the ``Object'' class), a list of interface classes and a finite map from identifiers to members which provides dynamic dispatch.
-The natural-indexed getters and setters correspond to the case where a field should be modified directly, and the number provides the index into an instance's list of locations.
-
-Although constructor definitions are included in the class definition, they are not presented here because the same syntax nodes are directly referenced by the expression form for constructor invocation.
-
-For accessing the superclass component of elements in the domain $\dclass$ we define:
-\begin{align*}
-\superclass &\in \dclass \rightarrow \dclass,\\
-\superclass(c_1) &= \pi_1(c_1) = c_2, \text{ where $c_2 \in \dclass$ is the first component of $c_1 \in \dclass$}
-\end{align*}
-
-For accessing the members component of elements in the domain $\dclass$, we define:
-\begin{align*}
-\members &\in \dclass \rightarrow (\dident \mapsto \dmember),\\
-\members(c) &= \pi_3(c), \text{where $c \in \dclass$}
-\end{align*}
-
-For looking up a member, given its identifier $\idmeta \in \dident$, we define:
-\begin{align*}
-\lookupMember &\in \dclass \times \dident \rightarrow \dmember,\\
-\lookupMember(c, \, \idmeta) &= \members(c)(\idmeta), \text{ where $c \in \dclass, \idmeta \in \dident$}
-\end{align*}
-
-\subsubsection{Object Values}
-\label{subsec:object-values}
-
-Object values are composed of a reference to a class definition, which is shared across all instances of that object, and a list of locations which identify the values of the fields for a specific instance.
-\[
-    \dobjval = \dclass \times \mlist{\dlocation}
-\]
-
-We define the following function for accessing the class component of an element in $\dobjval$:
-\begin{align*}
-\class &\in \dobjval \rightarrow \dclass,\\
-\class(\val) &= \pi_1(\val) = c, \text{ where $c \in \dclass$ is the first component of $\val \in \dobjval$}
-\end{align*}
-
-
-We define the following function for accessing the location of a field at position $i \in \NN$ in $\dobjval$:
-\begin{align*}
-\getfield &\in \dobjval \times \NN \rightarrow \dlocation,\\
-\getfield(\val, i) &= \pi_2(\val)[i] = \loc, \text{ where $\pi_2(\val) \in \mlist{\dlocation}$ and $\pi_2(\val)[i]$ is the location at position $i \in \NN$}
-\end{align*}
-
-\subsubsection{Function Values}
-\label{subsec:function-values}
-Function values capture the body, formals and the environment in which a function was created.
-To support recursive functions, we add a location component to the function value and store the environment in it.
-This allows us to modify the environment and add a binding to a location containing the function value for local functions.
-\[
-    \dfunval : \dformals \times \dstmt \times \denv
-\]
-
-
-\section{\kernel{} Syntax}
-\label{sec:definitions}
-
-
-\subsection{Expressions}
-\label{sec:expr-syntax}
-
-
-% Syntax
-\newcommand{\VariableGet}[1]{#1}
-\newcommand{\VariableSet}[2]{#1=#2}
-
-\todo{kmillikin: Names should not ignore the library.}
-\newcommand{\PropertyGet}[2]{#1.#2}
-\newcommand{\PropertySet}[3]{#1.#2=#3}
-
-\newcommand{\DirectPropertyGet}[2]{#1.\{#2\}}
-\newcommand{\DirectPropertySet}[3]{#1.\{#2\}=#3}
-
-\newcommand{\SuperPropertyGet}[1]{\synt{super}.#1}
-\newcommand{\SuperPropertySet}[2]{\synt{super}.#1=#2}
-
-\newcommand{\StaticGet}[1]{\{#1\}}
-\newcommand{\StaticSet}[2]{\{#1\}=#2}
-
-%% MethodInvocation
-\newcommand{\InstanceMethodInvocation}[3]{#1.#2(#3)}
-%% DirectMethodInvocation
-\newcommand{\DInstanceMethodInvocation}[3]{#1.\{#2\}(#3)}
-%% SuperMethodInvocation
-\newcommand{\SuperMethodInvocation}[2]{\synt{super}.#1(#2)}
-%% StaticInvocation
-\newcommand{\StaticInvocation}[2]{#1(#2)}
-%% ConstructorInvocation
-\newcommand{\New}[2]{\new\, #1\,(#2)}
-
-\newcommand{\Not}[1]{\synt{!}#1}
-\newcommand{\AndExpression}[2]{#1\,\synt{\&\&}\,#2}
-\newcommand{\OrExpression}[2]{#1\,\synt{||}\,#2}
-\newcommand{\ConditionalExpression}[3]{#1\,\synt{?}\,#2\,\synt{:}\,#3}
-
-%% StringConcatenation
-\newcommand{\StringConcatenation}[2]{#1\,\dots\,#2}
-
-\newcommand{\IsExpression}[2]{#1\,\synt{is}\,#2}
-\newcommand{\AsExpression}[2]{#1\,\synt{as}\,#2}
-
-%% SymbolLiteral
-%% TypeLiteral
-
-
-%% ListLiteral
-%% MapLiteral
-
-\newcommand{\AwaitExpression}[1]{\synt{await\,#1}}
-
-%% FunctionExpression
-
-\newcommand{\StringLiteral}[1]{#1}
-\newcommand{\IntLiteral}[1]{#1}
-\newcommand{\DoubleLiteral}[1]{#1}
-\newcommand{\BoolLiteral}[1]{#1}
-\newcommand{\NullLiteral}{\nnull}
-\newcommand{\Let}[3]{\synt{let}\,#1\synt{=}#2\,\synt{in}\,#3}
-
-%% LoadLibrary
-%% CheckLibraryIsLoaded
-%% VectorCreation
-%% VectorGet
-%% VectorSet
-%% VectorCopy
-%% ClosureCreation
-%% TypeInstantiation
-
-\[
-\begin{array}{rl}
-  \expressionmeta \in \dexpr ::=
-  & \VariableGet{\variablemeta} \\
-  & \VariableSet{\variablemeta}{\expressionmeta} \\
-  & \PropertyGet{\expressionmeta}{\idmeta} \\
-  & \PropertySet{\expressionmeta_0}{\idmeta}{\expressionmeta_1} \\
-  & \DirectPropertyGet{\expressionmeta}{\membermeta} \\
-  & \DirectPropertySet{\expressionmeta_0}{\membermeta}{\expressionmeta_1} \\
-  & \SuperPropertyGet{\idmeta} \\
-  & \SuperPropertySet{\idmeta}{\expressionmeta} \\
-  & \StaticGet{\membermeta} \\
-  & \StaticSet{\membermeta}{\expressionmeta} \\
-  & \Not{\expressionmeta} \\
-  & \AndExpression{\expressionmeta_0}{\expressionmeta_1} \\
-  & \OrExpression{\expressionmeta_0}{\expressionmeta_1} \\
-  & \ConditionalExpression{\expressionmeta_0}{\expressionmeta_1}{\expressionmeta_2} \\
-  & \New{\synt{Q}}{\expressionmeta*} \\
-  & \IsExpression{\expressionmeta}{\typemeta} \\
-  & \AsExpression{\expressionmeta}{\typemeta} \\
-  & \this \\
-  & \Rethrow \\
-  & \Throw{\expressionmeta} \\
-  & \AwaitExpression{\expressionmeta} \\
-  & \lit \\
-  & \NullLiteral \\
-  & \Let{\variablemeta}{\expressionmeta_0}{\expressionmeta_1} \\
-\end{array}
-\]
-
-
-\subsection{Statements}
-\label{subsec:stmt-syntax}
-
-% InvalidStatement
-\newcommand{\ExpressionStatement}[1]{\{\, #1\, \}}
-\newcommand{\Block}[1]{\{\, #1\, \}}
-\newcommand{\EmptyStatement}{\{\}}
-
-% AssertStatement
-\newcommand{\LabeledStatement}[2]{#1\synt{:}\, #2}
-\newcommand{\BreakStatement}[1]{\synt{break}\, #1}
-\newcommand{\WhileStatement}[2]{\synt{while}\, \synt{(}#1\synt{)}\, #2}
-\newcommand{\DoStatement}[2]{\synt{do}\, #1\, \synt{while}\, \synt{(}#2\synt{)}}
-\newcommand{\ForStatement}[4]{\synt{for}\, \synt{(}\,#1\synt{;}\, #2\synt{;}\, #3\,\synt{)}\, #4}
-\newcommand{\ForInStatement}[3]{\synt{for}\,\synt{(}#1\,\synt{in}\,#2\synt{)}\,#3}
-
-\newcommand{\SwitchStatement}[2]{\synt{switch}\,\synt{(}#1\synt{)}\,#2}
-\newcommand{\ContinueSwitchStatement}[1]{\synt{continue}\,#1}
-\newcommand{\IfStatement}[3]{\synt{if}\,\synt{(}#1\synt{)}\,#2\,\synt{else}\,#3}
-\newcommand{\ReturnStatement}[1]{\synt{return}\,#1}
-
-\newcommand{\TryCatch}[2]{\synt{try}\,#1\,\synt{catch}\,#2}
-\newcommand{\TryFinally}[2]{\synt{try}\,#1\,\synt{finally}\,#2}
-
-\newcommand{\Yield}[1]{\synt{yield}\,#1}
-
-\newcommand{\VarDeclaration}[2]{\synt{var}\,#1\synt{=}#2}
-\newcommand{\FunctionDeclaration}[5]{#1\,#2\synt{(}\,#3\,\synt{)}\,#4\,#5}
-
-\[
-\begin{array}{rl}
-
-  \statementmeta \in \dstmt ::=
-  & \ExpressionStatement{\expressionmeta} \\
-  & \Block{\statementmeta{s}} \\
-  & \EmptyStatement \\
-  & \LabeledStatement{\lbl}{\statementmeta} \\
-  & \BreakStatement{\lbl} \\
-  & \WhileStatement{\expressionmeta}{\statementmeta} \\
-  & \DoStatement{\statementmeta}{\expressionmeta} \\
-  & \ForStatement{\varmeta{s}}{\expressionmeta}{\expressionsmeta}{\statementmeta} \\
-  & \ForInStatement{\varmeta}{\expressionmeta}{\statementmeta} \\
-  & \SwitchStatement{\expressionmeta}{\tt{SCs}} \\
-  & \ContinueSwitchStatement{\statementmeta} \\
-  & \IfStatement{\expressionmeta}{\statementmeta_1}{\statementmeta_2} \\
-  & \ReturnStatement{\expressionmeta} \\
-  & \ReturnStatement{} \\
-  & \TryCatch{\statementmeta}{\tt{CCs}} \\
-  & \TryFinally{\statementmeta_1}{\statementmeta_2} \\
-  & \Yield{\expressionmeta} \\
-  & \VarDeclaration{\idmeta}{\expressionmeta} \\
-  & \FunctionDeclaration{\typemeta}{\idmeta}{\formals}{}{\stmt} \\
-
-\end{array}
-\]
-  \todo{Add sync*/async/async* marker and type parameters}
-
-\section{CESK Machine States}
-\subsection{Configurations}
-\label{subsec:cesk-configs}
-
-The state space of the CESK machine contains various kinds of configurations.
-Configurations contain different components and the transition step dispatches to the next configuration based on one of the components of the configuration.
-
-% Named Configuration for CESK transitions
-\newcommand{\breakconf}[1]{\confsingle{#1}_{\mathrm{breakCont}}}
-\newcommand{\switchconf}[1]{\confsingle{#1}_{\mathrm{switchCont}}}
-\newcommand{\contconf}[2]{\confpair{#1}{#2}_{\mathrm{cont}}}
-\newcommand{\scontconf}[2]{\confpair{#1}{#2}_{\mathrm{scont}}}
-\newcommand{\acontconf}[2]{\confpair{#1}{#2}_{\mathrm{acont}}}
-\newcommand{\throwconf}[3]{\conftriple{#1}{#2}{#3}_{\mathrm{throw}}}
-\newcommand{\evallistconf}[6]{\langle{#1},\,{#2},\,{#3},\handler,\,{#4},\,{#5},\,{#6}\rangle_{\mathrm{evalList}}}
-\newcommand{\evalconf}[6]{\langle{#1},\,{#2},\,{#3},\handler,\,{#4},\,{#5},\,{#6}\rangle_{\mathrm{eval}}}
-\newcommand{\execconf}[9]{\langle{#1},\,{#2},\,{#3},\,{#4},\,{#5},\,{#6},\,{#7},\,{#8},\,{#9}\rangle_{\mathrm{exec}}}
-\newcommand{\eventconf}[2]{\langle{#1},\,{#2}\rangle_{\mathrm{event}}}
-
-% Transition
-\todo{dmitryas: Add G (event loop) to all configurations.}
-\begin{figure}[Htp]
-  \begin{eqfigure}
-  \begin{align}
-    &\evalconf{\expr}{\env}{st}{cex}{cst}{\econt} & :\quad & \text{EvalConfiguration} \label{config:eval}\\
-    &\evallistconf{\exprs}{\env}{st}{cex}{cst}{\acont} & :\quad & \text{EvalListConfiguration} \label{config:evallist}\\
-    &\execconf{\stmt}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}  & :\quad & \text{ExecConfiguration} \label{config:exec}\\
-    &\contconf{\econt}{\val} & :\quad & \text{ValuePassingConfiguration} \label{config:econt}\\
-    &\acontconf{\acont}{\vals} & :\quad & \text{ApplicationConfiguration} \label{config:acont}\\
-    &\scontconf{\scont}{\env} & :\quad & \text{ForwardConfiguration} \label{config:scont}\\
-    &\throwconf{\handler}{\val}{\strace} & :\quad & \text{ThrowConfiguration} \label{config:throw}\\
-    &\breakconf{\bcont} & :\quad & \text{BreakConfiguration} \label{config:bcont}\\
-    &\switchconf{\switchcont} & :\quad & \text{SwitchConfiguration} \\
-    &\eventconf{\ncont}{\eventloop} & :\quad & \text{EventLoopConfiguration}
-    \label{config:switchcont}
-  \end{align}
-  \caption{States for the CESK machine}
-  \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{EvalConfiguration}
-\label{subsubsec:evalconfig}
-
-The configuration EvalConfiguration is shown in \ref{config:eval}.
-The transition step for this configuration dispatches on the expression component, $\expr$.
-With one transition step of the CESK-transition function, from the EvalConfiguration the next configuration can be one of the following:
-
-\begin{itemize}
-    \item ValuePassingConfiguration, when the current expression evaluates to a value in one step.
-    \item ExecConfiguration, when the current expression results with an invocation, i.e. execution of statement body of a getter.
-        Note that for other invocations, we first evaluate the receiver for instance invocations, or the arguments for static or constructor invocations.
-    \item EvalListConfiguration, when the current expression implies evaluation of a list of expressions.
-    \item ThrowConfiguration, when the current expression throws, i.e. is a throw expression.
-    \item EvalConfiguration, otherwise.
-\end{itemize}
-
-
-\subsubsection{EvalListConfigruation}
-\label{subsubsec:evallistconfig}
-
-The configuration EvalListConfiguration is shown in Figure~\ref{config:evallist}.
-The transition step for this configuration dispatches on the expression list, $\exprs$.
-With one step of the CESK-transition function, from EvalListConfifuration the next configuration is either EvalConfiguration, when $\exprs \neq []$, or ApplicationConfiguration, otherwise.
-
-
-\subsubsection{ExecConfiguration}
-\label{subsubsec:execconfig}
-
-The configuration ExecConfiguration is shown in Figure~\ref{config:exec}.
-The transition step dispatches on the statement, $\stmt$.
-The next configuration is either EvalConfiguration or ExecConfiguration.
-
-
-\subsubsection{ValuePassingConfiguration}
-\label{suubsubsec:valuepassingconfig}
-
-The configuration ValuePassingConfiguration is shown in Figure~\ref{config:econt}.
-The transition step applies the expression continuation component to its value component.
-The expression continuation produces the next configuration.
-
-
-\subsubsection{ApplicationConfiguration}
-\label{subsubsec:applicationconfig}
-
-The configuration ApplicationConfiguration is shown in Figure~\ref{config:acont}.
-The transition step applies the application continuation component to its list of values component.
-The application continuation produces the next configuration.
-
-
-\subsubsection{ForwardConfiguration}
-\label{subsubsec:forwardconfig}
-
-The configuration ForwardConfiguration is shown in Figure~\ref{config:scont}.
-The transition step applies the statement continuation component to its environment component.
-The statement continuation produces the next configuration.
-
-
-\subsubsection{ThrowCongfiguration}
-\label{subsubsec:throwconfig}
-
-The configuration ThrowConfiguration is shown in Figure~\ref{config:throw}.
-The transition step applies the exception handler.
-The next configuration is:
-
-\begin{itemize}
-    \item ThrowConfiguration, when the exception is not handled by the first catch clause of a catch handler.
-    \item ExecConfiguration, for the statement body of the matching catch or the finally statement, when no catch clauses are present.
-\end{itemize}
-
-
-\subsubsection{BreakConfiguration}
-\label{subsubsec:breakconfig}
-
-The configuration BreakConfiguration is shown in Figure~\ref{config:bcont}.
-The transition step applies the break continuation component.
-The next configuration is ForwardConfiguration.
-
-
-\subsubsection{SwitchConfiguration}
-\label{subsubsec:switchconfig}
-
-The configuration SwitchConfiguration is shown in Figure~\ref{config:switchcont}.
-The transition step applies the switch continuation component.
-The next configuration is ExecConfiguration.
-
-
-\subsection{Continuations}
-\label{subsec:continuations-definition}
-
-Continuations represent the instructions for execution of statements or evaluation of expressions.
-They capture the information needed to resume the execution of the program.
-There are various types of continuations depending on the state for evaluation of an expression or execution of a statement.
-
-
-\subsubsection{Expression Continuations}
-\label{subsubsec:expression-continuations}
-
-Expression continuations, $\econt$, capture the steps after the evaluation of a given expression.
-They accept a value and produce the next configuration.
-
-There are various kinds of configurations, but two more general types can be distinguished:
-
-\begin{itemize}
-    \item Continuations with holes, i.e. expressions to be evaluated\\
-        Expression continuations with expressions will produce EvalConfiguration for evaluation of the next expression.
-        Note that some continuation will not evaluate the captured expression, when this is not necessary (e.g., \eqref{eval:and}).
-
-    \item Continuations without holes\\
-        Continuations without holes dispatch on the provided value and produce the next configuration, a ValuePassingConfiguration.
-
-\end{itemize}
-
-We suffix the names of expression continuations with ``$K$''.
-The different expression continuations are shown in Figure~\ref{figure:econts}.
-
-\newcommand{\ExceptionHandlersRest}{\handler,\,\cstrace,\,\cex}
-\newcommand{\ExceptionHandlers}{\strace,\,\handler,\,\cstrace,\,\cex}
-% Continuations
-\newcommand{\VarSetK}[4]{\mathrm{VarSetEK}({#1},\,{#2},\,{#3},\,{#4})}
-\newcommand{\ExpressionsK}[3]{\mathrm{ExpressionsEK}({#1},\,{#2},\,\ExceptionHandlers,\,{#3})}
-
-\newcommand{\NotK}[1]{\mathrm{NotEK}({#1})}
-\newcommand{\AndK}[3]{\mathrm{AndEK}({#1},\,{#2},\,\ExceptionHandlers,\,{#3})}
-\newcommand{\OrK}[3]{\mathrm{OrEK}({#1},\,{#2},\,\ExceptionHandlers,\,{#3})}
-\newcommand{\ConditionalK}[4]{\mathrm{ConditionalEK}({#1},\,{#2},\,{#3},\,\ExceptionHandlers,\,{#4})}
-
-\newcommand{\LetK}[4]{\mathrm{LetEK}({#1},\,{#2},\,{#3},\,\ExceptionHandlers,\,{#4})}
-
-\newcommand{\IsExpressionK}{\mathrm{IsExpressionEK}(\tt{T},\,\econt)}
-\newcommand{\AsExpressionK}{\mathrm{AsExpressionEK}(\tt{T},\,\strace,\,\handler,\,\econt)}
-
-\newcommand{\StaticGetK}{\mathrm{StaticGetEK}(\membermeta,\,\econt)}
-\newcommand{\StaticSetK}{\mathrm{StaticSetEK}(\membermeta,\,\econt)}
-\newcommand{\PropertyGetK}{\mathrm{PropertyGetEK}(\idmeta,\,\ExceptionHandlers,\,\econt)}
-\newcommand{\PropertySetK}{\mathrm{PropertySetEK}(\idmeta,\,\expressionmeta_1,\,\env,\,\ExceptionHandlers,\,\econt)}
-\newcommand{\PropertySetVK}{\mathrm{PropertySetValueEK}(\val_0,\,\idmeta,\,\ExceptionHandlers,\,\econt)}
-\newcommand{\DPropertyGetK}{\mathrm{DPropertyGetEK}(\membermeta,\,\ExceptionHandlers,\,\econt)}
-\newcommand{\DirectPropertySetK}{\mathrm{DPropertySetEK}(\membermeta,\,\expressionmeta_1,\,\env,\,\ExceptionHandlers,\,\econt)}
-\newcommand{\DPropertySetVK}{\mathrm{DPropertySetValueEK}(\val_0,\,\membermeta,\,\ExceptionHandlers,\,\econt)}
-\newcommand{\SuperPropertySetK}{\mathrm{SuperPropertySetEK}(\idmeta,\,\env,\,\ExceptionHandlers,\,\econt)}
-
-\newcommand{\InstanceMethodK}[1]{\mathrm{InstanceMethodK(\expressionsmeta,\,\idmeta,\,\env,\,#1,\,\ExceptionHandlersRest,\,\econt)}}
-\newcommand{\DInstanceMethodK}[1]{\mathrm{DInstanceMethodEK}(\expressionsmeta,\,\membermeta,\,\env,\,#1,\,\ExceptionHandlersRest,\,\econt)}
-\newcommand{\VarDeclK}[3]{\mathrm{VarDeclarationEK}({#1},\,{#2},\,{#3})}
-\newcommand{\IfCondK}[2]{\mathrm{IfConditionEK}({#1},\,{#2},\,\env,\,\lbls,\,\clbls,\,\handler,\,\cstrace,\,\cex,\,\econt,\,\scont)}
-\newcommand{\SwitchK}[2]{\mathrm{SwitchEK}({#1},\,\env,\,\lbls,\,{#2},\,\strace,\,\handler,\,\cstrace,\,\cex,\,\econt,\,\scont)}
-
-\newcommand{\WhileCondK}{\mathrm{WhileCondEK}(\expr,\,\stmt,\,\env,\,\lbls,\,\clbls,\,\strace,\,\handler,\,\cstrace,\,\cex,\,\econt,\,\scont)}
-\newcommand{\InitializerK}[4]{\mathrm{InitializerEK}({#1},\,{#2},\,{#3},\,\strace,\,\handler,\,\cstrace,\,\cex,\,{#4})}
-\newcommand{\InitK}[3]{\mathrm{InitEK}({#1},\,{#2},\,\strace,\,\handler,\,\cstrace,\,\cex,\,{#3})}
-\newcommand{\InitializerListEK}[5]{\mathrm{InitializerListEK}({#1},\,{#2},\,{#3},\,{#4},\,\strace,\,\handler,\,\cstrace,\,\cex,\,{#5})}
-\newcommand{\FinallyK}[1]{\mathrm{FinallyEK}({#1},\,\env,\,\lbls,\,\clbls,\,\strace,\,\handler,\,\econt)}
-\newcommand{\FinallyReturnK}[1]{\mathrm{FinallyReturnEK}({#1},\,\env,\,\lbls,\,\clbls,\,\strace,\,\handler,\,\econt)}
-
-\newcommand{\ForCondK}{\mathrm{ForConditionEK}(\varmeta{s},\, \expressionmeta,\, \exprs,\, \statementmeta,\, \env,\, \env',\, \lbls,\, \clbls,\, \handler,\, \cstrace,\, \cex,\, \econt,\, \scont)}
-\newcommand{\ExpressionK}[2]{\mathrm{ExpressionEK}({#1},\,{#2})}
-
-\newcommand{\AsyncReturnEK}[1]{\mathrm{AsyncReturnEK}({#1})}
-
-\begin{figure}[Htp]
-  \begin{eqfigure}
-  \begin{align}
-    &\VarSetK{\idmeta}{\env}{\ExceptionHandlers}{\econt} \label{econt:varset}\\
-    &\ExpressionsK{\exprs}{\env}{\acont} \label{econt:expressions}\\
-    &\NotK{\econt} \label{econt:not}\\
-    &\AndK{\expressionmeta}{\ExceptionHandlers}{\econt} \label{econt:and}\\
-    &\OrK{\expressionmeta}{\ExceptionHandlers}{\econt} \label{econt:or}\\
-    &\ConditionalK{\expressionmeta_1}{\expressionmeta_2}{\ExceptionHandlers}{\econt} \label{econt:cond}\\
-    &\LetK{\varmeta}{\expressionmeta}{\ExceptionHandlers}{\econt} \label{econt:let}\\
-    &\IsExpressionK \label{econt:is}\\
-    &\AsExpressionK \label{econt:as}\\
-    &\StaticGetK \label{econt:static-get}\\
-    &\StaticSetK \label{econt:static-set}\\
-    &\DPropertyGetK \label{econt:dproperty-get}\\
-    &\PropertySetK \label{econt:property-set}\\
-    &\PropertySetVK \label{econt:property-set}\\
-    &\DPropertyGetK \label{econt:dproperty-set}\\
-    &\DPropertySetVK \label{econt:dproperty-set-v}\\
-    &\SuperPropertySetK \label{econt:super-property-set}\\
-    &\InstanceMethodK{\strace} \label{econt:instance-method}\\
-    &\DInstanceMethodK{\strace} \label{econt:dinstance-method}\\
-    &\VarDeclK{\idmeta}{\env}{\scont} \label{econt:var-decl}\\
-    &\IfCondK{\expressionmeta_1}{\expressionmeta_2} \label{econt:if-cond}\\
-    &\ForCondK \label{econt:for-cond}\\
-    &\ExpressionK{\scont}{\env} \label{econt:expression}\\
-    &\InitializerListEK{Q}{i}{\loc}{\env}{\scont} \label{econt:initializer-list}\\
-    &\AsyncReturnEK{\econt}
-  \end{align}
-  \caption{Expression Continuations}
-  \label{figure:econts}
-  \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Statement Continuations}
-\label{subsubsec:statement-continuations}
-
-Statement continuations, $\scont$, capture the steps after execution of a statement.
-They accept an environment and produce the next configuration.
-Statements in a block expressions can extend the environment function and this is visible to the subsequent statements in the same block.
-For other types of statement configuration, the environment is ignored.
-
-We suffix the names of statement continuations with ``$SK$''.
-The different statement continuations are shown in Figure~\ref{figure:sconts}.
-
-\newcommand{\ExitSK}[1]{\mathrm{ExitSK}(\econt,\,#1)}
-\newcommand{\BlockSK}[2]{\mathrm{BlockSK}({#1},\,{#2},\,\lbls,\,\clbls,\,\handler,\,\cstrace,\,\cex,\,\econt,\,\scont)}
-\newcommand{\WhileSK}{\mathrm{WhileSK}(\expr,\,\stmt,\,\env,\,\lbls,\,\clbls,\,\handler,\,\cstrace,\,\cex,\,\econt,\,\scont)}
-\newcommand{\BodySK}[3]{\mathrm{BodySK}({#1},\,{#2},\,\strace,\,\handler,\,\cstrace,\,\cex,\,{#3})}
-\newcommand{\NewSK}[2]{\mathrm{NewSK}({#1},\,{#2})}
-\newcommand{\FinallySK}[1]{\mathrm{FinallySK}({#1},\,\env,\,\lbls,\,\clbls,\,\strace,\,\handler,\,\econt,\,\scont)}
-\newcommand{\RethrowSK}[3]{\mathrm{RethrowSK}({#1},\,{#2},\,{#3})}
-\newcommand{\ForSK}{\mathrm{ForSK}(\varmeta{s},\, \expressionmeta,\, \exprs,\, \statementmeta,\, \env,\, \env',\, \lbls,\, \clbls,\, \handler,\, \cstrace,\, \cex,\, \econt,\, \scont)}
-\newcommand{\WhileCondSK}{\mathrm{WhileCondSK}(\expr,\,\stmt,\,\env,\,\lbls,\,\clbls,\,\handler,\,\cstrace,\,\cex,\,\econt,\,\scont)}
-\begin{figure}[Htp]
-  \begin{eqfigure}
-  \begin{align}
-    &\ExitSK{\val} \label{scont:exit}\\
-    &\BlockSK{\stmts}{\env} \label{scont:block}\\
-    &\WhileSK \label{scont:while}\\
-    &\BodySK{\stmt}{\env}{\scont} \label{scont:body}\\
-    &\NewSK{\econt}{\loc} \label{scont:new}\\
-    &\FinallySK{\stmt} \label{scont:finally}\\
-    &\RethrowSK{\val}{\strace}{\handler} \label{scont:rethrow}\\
-    &\ForSK \label{scont:for}\\
-    &\WhileCondSK \label{scont:while}
-  \end{align}
-  \caption{Statement Continuations}
-  \label{figure:sconts}
-  \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Application Continuation}
-\label{subsubsec:application-continuation}
-
-Application continuations, $\acont$, capture the application of a list of values resulting from the evaluation of list of expressions.
-
-\newcommand{\ValueA}[2]{\mathrm{ValueA}({#1},\,{#2})}
-\newcommand{\StringConcatenationA}{\mathrm{StringConcatenationA(\econt)}}
-\newcommand{\SuperMethodA}[1]{\mathrm{SuperMethodA}(\idmeta,\,\env,\,#1,\,\ExceptionHandlersRest,\,\econt)}
-\newcommand{\StaticInvA}[4]{\mathrm{StaticInvocationA}({#1},\,{#2},\,{#3},\,\ExceptionHandlersRest,\,{#4})}
-\newcommand{\DInstanceMethodA}{\mathrm{DInstanceMethodA}(\membermeta,\,\val,\,\ExceptionHandlers,\,\econt)}
-\newcommand{\FieldsA}[4]{\mathrm{InstanceFieldsA}({#1},\,{#2},\,{#3},\,\strace,\,\handler,\,\cstrace,\,\cex,\,{#4})}
-\newcommand{\SuperA}[3]{\mathrm{SuperA}({#1},\,{#2},\,\strace,\,\handler,\,\cstrace,\,\cex,\,{#3})}
-\newcommand{\ConstructorA}[3]{\mathrm{ConstructorA}({#1},\,{#2},\,\handler,\,\cstrace,\,\cex,\,{#3})}
-\newcommand{\RedirectingA}[3]{\mathrm{RedirectingA}({#1},\,{#2},\,\strace,\,\handler,\,\cstrace,\,\cex,\,{#3})}
-\newcommand{\ForInitA}[1]{\mathrm{ForInitA}(\varmeta{s},\, #1,\, \exprs,\, \statementmeta,\, \env,\, \lbls,\, \clbls,\, \handler,\, \cstrace,\, \cex,\, \econt,\, \scont)}
-\newcommand{\ForUpdatesA}[2]{\mathrm{ForUpdatesA}(\varmeta{s},\, #1,\, \exprs,\, \statementmeta,\, \env,\, #2,\, \lbls,\, \clbls,\, \handler,\, \cstrace,\, \cex,\, \econt,\, \scont)}
-\newcommand{\InstanceMethodA}{\mathrm{InstanceMethodA(\idmeta,\,\val,\,\strace,\,\handler,\,\cstrace,\,\cex,\,\econt)}}
-
-We use the application continuation $\ValueA{\acont}{\val}$, capturing a value and an application continuation, as application that adds a value to the list of values to eventually used by an application continuation that produces a configuration other than ApplicationConfiguration.
-We suffix the names of application continuations with ``$A$''.
-The different application continuations are shown in Figure~\ref{figure:acont}.
-
-\begin{figure}[Htp]
-  \begin{eqfigure}
-  \begin{align}
-    &\ValueA{\val}{\acont} \label{acont:value}\\
-    &\StringConcatenationA \label{acont:stringconcat}\\
-    &\ForInitA{\expressionmeta} \label{acont:forinit}\\
-    &\ForUpdatesA{\expressionmeta}{\env'} \label{acont:forupdates}\\
-    &\SuperMethodA{\strace} \label{acont:supermethod}\\
-    &\DInstanceMethodA \label{acont:staticinv}\\
-    &\FieldsA{Q}{\loc}{\env}{\scont} \label{acont:fields}\\
-    &\ConstructorA{Q}{\strace}{\econt} \label{acont:constructor}\\
-    &\SuperA{Q}{\loc}{\scont} \label{acont:super}\\
-    &\RedirectingA{Q}{\loc}{\scont} \label{acont:redirecting}
-  \end{align}
-  \caption{Application Continuations}
-  \label{figure:acont}
-  \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Break Continuations}
-\label{subsubsec:break-continuations}
-
-Break continuations, $\bcont$, capture the steps to be executed when a break to a given label is encountered.
-The different break continuations are shown in Figure~\ref{figure:breakcont}.
-\newcommand{\Break}[2]{\mathrm{Break}(#1,\,#2)}
-\newcommand{\FinallyBreak}[2]{\mathrm{FinallyBreak}({#1},\,\env,\,\lbls,\,\clbls,\,\strace,\,\handler,\,\cstrace,\,\cex,\,\econt,\,{#2})}
-
-\begin{figure}[Htp]
-  \begin{eqfigure}
-  \begin{align}
-    &\Break{\env}{\scont} \label{breakcont:break} \\
-    &\FinallyBreak{\stmt}{\scont} \label{breakcont:finallybreak}
-  \end{align}
-  \caption{Break Continuations}
-  \label{figure:breakcont}
-  \end{eqfigure}
-\end{figure}
-
-The break continuation Break, \ref{breakcont:break}, captures a statement continuation and the environment corresponding to a target label or a break statement.
-The break continuation FinallyBreak, \ref{breakcont:finallybreak}, captures the statement body and the components necessary for the execution of an enclosing Finally statement.
-They are added when a try/finally statement is executed.
-
-
-\subsubsection{Switch Continuations}
-\label{subsubsec:switch-continuations}
-
-Switch continuations, $\switchcont$, capture the steps to be executed when a continue to a preceding switch case statement is executed.
-They capture the components needed for the execution of the case body statement.
-The different switch continuations are shown in Figure~\ref{figure:switchconts}.
-
-\newcommand{\ContinueK}{\mathrm{SwitchContinueK}(\stmt,\,\env,\,\lbls,\,\clbls,\,\handler,\,\cstrace,\,\cex,\,\econt,\,\scont)}
-\newcommand{\FinallyContinue}[2]{\mathrm{FinallyContinue}({#1},\,\env,\,\lbls,\,\clbls,\,\strace,\,\handler,\,\cstrace,\,\cex,\,\econt,\,{#2})}
-
-\begin{figure}[Htp]
-  \begin{eqfigure}
-  \begin{align}
-    &\ContinueK \label{switchcont:continue} \\
-    &\FinallyContinue{\stmt}{\scont} \label{switchcont:finallycontinue}
-  \end{align}
-  \caption{Switch Continuations}
-  \label{figure:switchconts}
-  \end{eqfigure}
-\end{figure}
-
-The switch continuation SwitchContinue, \ref{switchcont:continue}, captures the statement body of a preceding switch case, targeted by some continue statement, and the components necessary for its execution.
-The switch continuation FinallyContinue, \ref{switchcont:finallycontinue}, captures the statement body and the components necessary for the execution of an enclosing Finally statement.
-They are added when a try/finally statement is executed.
-
-
-\subsubsection{Exception Handlers}
-\label{subsubsec:exception-handlers}
-
-The different exception handlers are shown in Figure~\ref{figure:handlers}.
-\newcommand{\ThrowH}[2]{\mathrm{ThrowK}({#1},\,{#2})}
-\newcommand{\CatchH}[1]{\mathrm{Catch}({#1},\,\env,\,\lbls,\,\clbls,\,\strace,\,\handler,\,\econt,\,\scont)}
-
-\begin{figure}[Htp]
-  \begin{eqfigure}
-  \begin{align}
-    &\ThrowH{\val}{\strace} \label{handle:throw} \\
-    &\CatchH{cs} \label{handle:catch}
-  \end{align}
-  \caption{Exception handlers}
-  \label{figure:handlers}
-  \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Event Loop Continuations}
-
-\newcommand{\StartNK}[3]{\mathrm{StartNK}({#1},\,{#2},\,{#3})}
-\newcommand{\ResumeNK}[2]{\mathrm{ResumeNK}({#1},\,{#2})}
-
-\begin{figure}[Htp]
-    \begin{eqfigure}
-        \begin{align}
-            &\StartNK{\stmt}{\env}{\econt}\\
-            &\ResumeNK{\econt}{\val}
-        \end{align}
-        \caption{Event loop continuations}
-    \end{eqfigure}
-\end{figure}
-
-
-\section{CESK Machine Transitions}
-\label{sec:semantics}
-
-
-\subsection{Expression Evaluation}
-\label{subsec:expr-evaluation}
-
-
-Expressions are evaluated by dispatching according to the expression component, $\expressionmeta$, in EvalConfiguration, Section~\ref{subsubsec:evalconfig}, and the list of expression component, $\exprs$, in EvalListConfiguration, Section~\ref{subsubsec:evallistconfig}.
-
-The CESK-transition function for EvalListConfiguration is shown in Figure~\ref{figure:evallist}.
-The value corresponding to the evaluated expression is captured by the application continuation ValueA and eventually added to the list of values corresponding to the expressions.
-
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-    &\begin{multlined}
-        \cesktranswheresplit%
-            {\evallistconf{\expr :: \exprs}{\env}{\strace}{\cstrace}{\cex}{\acont}}%
-            {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\text{where $\econt = \ExpressionsK{\exprs}{\env}{\acont}$}}
-    \end{multlined}\\
-    &\cesktrans%
-        {\evallistconf{[]}{\env}{\strace}{\cstrace}{\cex}{\acont}}%
-        {\acontconf{\acont}{[]}}\\
-    &\cesktrans%
-        {\acontconf{\ValueA{\val}{\acont}}{\val s}}%
-        {\acontconf{\acont}{\val :: \val s}}
-    \end{align}
-    \caption{The CESK-transition function for EvalListConfiguration}\label{figure:evallist}
-    \label{subsec:eval-list-expressions}
-    \end{eqfigure}
-\end{figure}
-
-%%
-% Figure showing the CESK-transition function starting from EvalConfiguration for simple
-% expressions.
-%%
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-        &\cesktranswhere%
-            {\evalconf{\IntLiteral{\integermeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\contconf{\econt}{\val}}%
-            {\text{where $\val = \mathrm{IntLiteral(\integermeta)} \in \dsemint$}}
-            \label{eval:int}\\
-        &\cesktranswhere%
-            {\evalconf{\DoubleLiteral{\doublemeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\contconf{\econt}{\val}}%
-            {\text{where $\val = \mathrm{DoubleLiteral(\doublemeta)} \in \dsemdouble$}}
-            \label{eval:double}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\BoolLiteral{\true}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\contconf{\econt}{\val}}%
-                {\text{where $\val = \mathrm{BoolValue(\true)} = \true\in \dsembool$}}
-        \end{multlined}
-        \label{eval:true}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\BoolLiteral{\false}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\contconf{\econt}{\val}}%
-                {\text{where $\val = \mathrm{BoolValue(\false)} = \false\in \dsembool$}}
-        \end{multlined}
-        \label{eval:false}\\
-        &\cesktranswhere%
-            {\evalconf{\StringLiteral{\stringmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\contconf{\econt}{\val}}%
-            {\text{where $\val = \mathrm{StringValue(\stringmeta)} \in \dsemstring$}}
-            \label{eval:string}\\
-        &\cesktrans%
-            {\evalconf{\varmeta}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\contconf{\econt}{\deref{\env(\varmeta)}}}
-            \label{eval:varget}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-            {\evalconf{\varmeta \synt{=} \expr}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt'}}
-            {\econt' = \VarSetK{\variablemeta}{\env}{\ExceptionHandlers}{\econt}}
-        \end{multlined}
-        \label{eval:varset}\\
-        &\cesktrans%
-            {\evalconf{\Not{\expressionmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\NotK{\econt}}}
-            \label{eval:not}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\AndExpression{\expressionmeta_0}{\expressionmeta_1}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evalconf{\expressionmeta_0}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt' = \AndK{\expressionmeta_1}{\env}{\econt}$}}%
-        \end{multlined}
-        \label{eval:and}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\OrExpression{\expressionmeta_0}{\expressionmeta_1}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evalconf{\expressionmeta_0}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt' = \OrK{\expressionmeta_1}{\env}{\econt}$}}%
-        \end{multlined}
-        \label{eval:or}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\ConditionalExpression{\expr}{\expri{1}}{\expri{2}}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where }\econt' = \ConditionalK{\expri{1}}{\expri{2}}{\env}{\econt}}
-        \end{multlined}
-        \label{eval:cond}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\Let{\varmeta}{\expri{1}}{\expri{2}}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evalconf{\expri{1}}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where }\econt' = \LetK{\varmeta}{\expri{2}}{\env}{\econt}}
-        \end{multlined}
-        \label{eval:let}\\
-        &\begin{multlined}
-            \cesktranssplit%
-                {\evalconf{\StringConcatenation{\expressionmeta_1}{\expressionmeta_N}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evallistconf{\exprs}{\env}{\strace}{\cstrace}{\cex}{\StringConcatenationA}}
-        \end{multlined}
-        \label{eval:concat}\\
-        &\cesktrans%
-            {\evalconf{\IsExpression{\expressionmeta}{\tt{T}}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\IsExpressionK}}
-          \label{eval:is}\\
-        &\begin{multlined}
-            \cesktranssplit%
-                {\evalconf{\AsExpression{\expressionmeta}{\tt{T}}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\AsExpressionK}}
-        \end{multlined}
-        \label{eval:as}\\
-        &\cesktrans%
-            {\evalconf{\this}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\contconf{\econt}{\deref{\env(\this)}}}
-            \label{eval:this}\\
-        &\begin{multlined}
-            \cesktranssplit%
-                {\evalconf{\throw \expr}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\ThrowH{(\throw \expr) :: \strace}{\handler}}}
-        \end{multlined}
-        \label{eval:throw}\\
-        &\cesktrans%
-            {\evalconf{\rethrow}{\env}{\strace}{\strace'}{\cex}{\econt}}%
-            {\throwconf{\handler}{\cex}{\strace'}}
-            \label{eval:rethrow}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{F}{\env}{st}{cex}{cst}{\econt}}%
-                {\contconf{\econt}{\val}}%
-                {\begin{aligned}
-                    \text{where } \val &= \funval{\formals}{\stmt}{\loc}\\
-                                  F &\text{ is a function expression with formal parameters $\formals$ and body $\stmt$}\\
-                                  \deref{\loc} &= \env \text{ after transtion}
-                \end{aligned}}
-        \end{multlined}
-    \end{align}
-    \caption{The CESK-transition function for EvalConfiguration: simple expressions}
-    \label{figure:expressions-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-%%
-% Figure showing the CESK-transition function starting from ValuePassingConfiguration
-% for simple expressions
-%%
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-        &\begin{multlined}
-        \cesktranssplit%
-            {\contconf{\ExpressionsK{\exprs}{\env}{\acont}}{\val}}%
-            {\evallistconf{\exprs}{\env}{\strace}{\cstrace}{\cex}{\ValueA{\val}{\acont}}}
-        \end{multlined}
-        \label{econtconf:exprs}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\contconf{\VarSetK{\idmeta}{\env}{\ExceptionHandlers}{\econt}}{\val}}%
-            {\contconf{\econt}{\val}}%
-        {\text{where $\deref{\env(\idmeta)} = \val$ after transition}}
-        \end{multlined}
-        \label{econtconf:varset}\\
-        &\cesktrans%
-            {\contconf{\NotK{\econt}}{\true}}%
-            {\contconf{\econt}{\false}}
-        \label{econtconf:not-true}\\
-        &\cesktrans%
-            {\contconf{\NotK{\econt}}{\false}}%
-            {\contconf{\econt}{\true}}
-        \label{econtconf:not-false}\\
-        &\cesktrans%
-            {\contconf{\AndK{\expressionmeta}{\env}{\econt}}{\true}}%
-            {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\econt}}
-        \label{econtconf:and-true}\\
-        &\cesktrans%
-            {\contconf{\AndK{\expressionmeta}{\env}{\econt}}{\false}}%
-            {\contconf{\econt}{\false}}
-        \label{econtconf:and-false}\\
-        &\cesktrans%
-            {\contconf{\OrK{\expressionmeta}{\env}{\econt}}{\false}}%
-            {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\econt}}
-        \label{econtconf:or-false}\\
-        &\cesktrans%
-            {\contconf{\OrK{\expressionmeta}{\env}{\econt}}{\true}}%
-            {\contconf{\econt}{\true}}
-        \label{econtconf:or-true}\\
-        &\begin{multlined}
-        \cesktranssplit%
-            {\contconf{\ConditionalK{\expri{1}}{\expri{2}}{\env}{\econt}}{\true}}%
-            {\evalconf{\expri{1}}{\env}{\strace}{\cstrace}{\cex}{\econt}}
-        \end{multlined}
-        \label{econtconf:cond-true}\\
-        &\begin{multlined}
-        \cesktranssplit%
-            {\contconf{\ConditionalK{\expri{1}}{\expri{2}}{\env}{\econt}}{\false}}%
-            {\evalconf{\expri{2}}{\env}{\strace}{\cstrace}{\cex}{\econt}}
-        \end{multlined}
-        \label{econtconf:cond-false}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\contconf{\LetK{\expri{2}}{\env}{\varmeta}{\econt}}{\val}}%
-            {\evalconf{\expri{2}}{\env'}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\text{where $\env'=\ext{\env}{\varmeta}{\val}$}}
-        \end{multlined}
-        \label{econtconf:let}\\
-        &\cesktranswhere%
-            {\contconf{\IsExpressionK}{\val}}%
-            {\contconf{\econt}{\true}}%
-            {\text{where $\val$ is $\tt{T}$}}
-        \label{econtconf:is-true}\\
-        &\cesktranswhere%
-            {\contconf{\IsExpressionK}{\val}}%
-            {\contconf{\econt}{\false}}%
-            {\text{where $\val$ is not $\tt{T}$}}
-        \label{econtconf:is-false}\\
-        &\cesktranswhere%
-            {\contconf{\AsExpressionK}{\val}}%
-            {\contconf{\econt}{\val}}%
-            {\text{where $\val$ is $\tt{T}$}}
-        \label{econtconf:as-true}\\
-        &\cesktranswhere%
-            {\contconf{\AsExpressionK}{\val}}%
-            {\throwconf{\handler}{\AsExpression{\expressionmeta}{\tt{T}} :: \strace}{\synt{CastError}}}%
-            {\text{where $\val$ is not $\tt{T}$}}
-        \label{econtconf:as-false}
-    \end{align}
-    \caption{The CESK-transition function for ValuePassingConfiguration: simple expressions}
-    \label{figure:cont-config}
-    \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Basic Literal Evaluation}
-\label{subsubsec:basic-literal-eval}
-
-\kernel{} literals are evaluated to a value $\val \in \dlitval$ in one step.
-Transitions of the CESK machine for basic literals are presented in Figure~\ref{figure:expressions-evalconfigs}, rules \eqref{eval:int} - \eqref{eval:string}.
-
-
-\subsubsection{Variable Assignment and Lookup}
-\label{subsubsec:variable-assignment-and-lookup}
-
-A variable $\varmeta$ is accessed by reading the value stored at location $\env(\varmeta)$ in the store, \eqref{eval:varget}.
-Assigning a value to a variable $\varmeta$ will modify the store, more specifically the value stored at location  $\env(\varmeta)$.
-The evaluation of this expression proceeds by evaluating the right-hand side expression, as shown in \eqref{eval:varset} and setting the location $\env(\varmeta)$ in the store to the value this expression evaluates to, as shown in \eqref{econtconf:varset}.
-
-
-\subsubsection{Boolean Expressions}
-\label{subsubsec:bool-expressions}
-
-The CESK-transition function for boolean expressions is show in Figure~\ref{figure:expressions-evalconfigs}, rules \eqref{eval:not} - \eqref{eval:cond}.
-
-\begin{itemize}
-    \item Not expression\\
-        The target expression is evaluated, as shown in \eqref{eval:not} and proceed by dispatching on the value the expression evaluates to according to \eqref{econtconf:not-true} and \eqref{econtconf:not-false}.
-
-    \item And expression\\
-        The left-hand side expression is evaluated, according to \eqref{eval:and}.
-        We dispatch on the value the expression evaluates to.
-        If the expression evaluate to $\false$, according to \eqref{econtconf:and-false}, the value is immediately applied to the current expression continuation.
-        Otherwise, we proceed with the CESK-transition \eqref{econtconf:and-true}, by also evaluating the right-hand side.
-
-    \item Or expression\\
-        The left-hand side expression is evaluated, as shown in the CESK-transition \eqref{eval:or}.
-        We dispatch on the value the expression evaluates to.
-        If the expression evaluates to $\true$, according to \eqref{econtconf:or-true}, the value is immediately applied to the current expression continuation.
-        Otherwise, we proceed with the CESK-transition \eqref{econtconf:or-false}, by also evaluating the right-hand side.
-
-    \item Conditional expression\\
-        The condition expression is evaluated, as shown in the CESK-transition \eqref{eval:cond}.
-        We dispatch on the value the expression evaluates to.
-        If the expression evaluates to $\true$, the next configuration evaluates the first expression and is produced with the CESK-transition \eqref{econtconf:cond-true}.
-        Otherwise, the next configuration evaluates the second expression and is produced with the transition \eqref{econtconf:cond-false}.
-
-\end{itemize}
-
-
-\subsubsection{Let}
-
-Let expressions in \kernel{} introduce a new variable, initialized to some value with an initializer expression, for the evaluation of the right-hand side let expression.
-Let expressions are evaluated by first evaluating the initializer expression for the fresh variable as shown in the CESK-transition \eqref{eval:let}.
-It proceeds by extending the environment for the evaluation of the right-hand side let expression and producing the next configuration for evaluation of the later with the CESK-transition \eqref{econtconf:let}.
-
-
-\subsubsection{String Concatenation}
-\label{subsubsec:string-concatenation}
-
-The function $\concat$ concatenates the strings from the given meta-list into a single value.
-\begin{align*}
-  \concat : \mlist{\dsemstring} &\rightarrow \dsemstring\\
-  \concat( s_1 :: \dots :: s_n :: []) &= s_1 \dots s_n
-\end{align*}
-The evaluation of concatenation expression proceeds by evaluating the target expressions in the specified order, as shown with the CESK-transition \eqref{eval:concat}.
-Once all expressions have been evaluated the corresponding application is applied, as shown in \eqref{acontconf:concat}, which results with an expression continuation application to the resulting $\dsemstring$.
-
-
-\subsubsection{This}
-
-For the evaluation of $\this$ expression we add a special variable declaration, $\this$.
-In the body of instance methods or constructors, there is a binding in the corresponding environment from $\this$ variable declaration to a location that stores the corresponding value.
-Evaluation of $\this$ expression resolves to that value in one step, as shown in \eqref{eval:this}.
-
-
-\subsubsection{Type Test}
-\label{subsubsec:type-test}
-
-Type test expressions evaluate to a boolean literal value, in more than one step.
-The evaluation of this kind of expression proceeds by evaluating the target expression, as in CESK-transition \eqref{eval:is}.
-When the target expression evaluates to a value $\val$ such that ``$\val $ is $\tt{T}$" holds, the value $true$ is applied to the expression continuation, $\econt$, as shown in \eqref{econtconf:is-true}, otherwise $\false$ is applied to $\econt$, as in \eqref{econtconf:is-false}.
-
-
-\subsubsection{Type Cast}
-\label{subsubsec:type-cast}
-
-Evaluation of type cast expression proceed to evaluation of the target expression to the corresponding value, as shown in \eqref{eval:as}.
-When the target expression evaluates to a value $\val$ such that ``$\val $ is $\tt{T}$" holds, the value $\val$ is applied to the expression continuation as shown in \eqref{econtconf:as-true}.
-Otherwise, the evaluation of the expression results with an error, as shown in \eqref{econtconf:as-false}.
-
-
-\subsubsection{Function Expressions}
-\label{subsubsec:function-expressions}
-
-\kernel{} supports encapsulating an executable unit of code with function expressions.
-To support function expressions we introduce $fv = \funval{\formals}{\stmt_{body}}{\env} \in \dfunval$ as a value that has the function statement body, $\stmt_{body} \in \dstmt$, its list of formal parameters, $\formals \in \dformals$, and the environment, $\env \in \denv$ in scope of the function expression.
-This ensures that there are no free variables in the body of $fv$.
-
-$fv \in \dfunval$ has only one property, $call$.
-
-%%
-% Figure showing the CESK-transition function starting from ApplicationConfiguration.
-%%
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-       &\begin{multlined}
-        \cesktrans%
-            {\acontconf{\StringConcatenationA}{\vals}}%
-            {\contconf{\econt}{\concat(\vals)}}
-        \end{multlined}
-        \label{acontconf:concat}\\
-        &\begin{multlined}
-        \cesktranswheresplit*%
-            {\acontconf{\StaticInvA{\formals}{\stmt}{\strace}{\econt}}{\val{s}}}%
-            {\execconf{\stmt}{\env'}{[]}{[]}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\parbox{10cm}{where $\scont = \ExitSK{\nnull}$, $\env' = \ext{\env_{empty}}{\formals}{\val{s}}$}}
-        \end{multlined}
-        \label{acontconf:staticinvoc}
-    \end{align}
-    \caption{The CESK-transition function for ApplicationConfiguration for static invocation}
-    \label{table:static-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Function Invocation}
-\label{subsubsec:function-invoc}
-
-Function invocation occurs when a function expression (\ref{subsubsec:function-expressions}), instance method (\ref{subsubsec:instance-method-invoc}, \ref{subsubsec:direct-instance-method-invoc}, \ref{subsubsec:super-method-invoc}), a getter(\ref{subsubsec:property-extraction}), a setter (\ref{subsubsec:property-assignment}) or a constructor is invoked with new or with super and redirecting initializer (\ref{subsubsec:new-instance}).
-
-Instance method, getter or setter invocation proceed by evaluation of the receiver expression and binding its value to $\this$.
-For the other invocations, $\this$ is not bound.
-
-Execution of function invocation proceeds immediately when the target function is marked as "sync".
-\todo{Add text for generator sync and async function, and async function invocation.}
-
-The evaluation of the invocation proceeds by evaluating the actual argument list and binding the values of the evaluated argument list to the formal parameters of the function.
-\kernel{} supports positional, positional optional and named arguments.
-
-An invocation expression for a \kernel{} function contains a list of expressions that represent the actual arguments for the invocation.
-We construct a list of actual argument expressions containing the provided positional arguments and the provided named arguments.
-We also add the constant default expressions for the optional positional and named parameters.
-This is an implementation detail that allows us to evaluate all arguments for the invocation ignoring the distinction between provided or missing positional, optional and named arguments.
-Note that the default values for the optional positional and named parameters are constants, hence their evaluation does not have side effects and they evaluate to a value in one step.
-
-After the evaluation of the argument expressions, and before binding the actual arguments to the formal parameters necessary checks ensure the actual arguments are valid.
-
-Let $(\val_1, \dots, \val_n, \{a_{n+1} : \val_{n+1}, \dots, a_{n+l} : \val_{n+l}\})$ be the list of values that correspond to the actual arguments expressions for the function invocation with $a_i$ names of actual named arguments.
-The actual arguments are valid if:
-\begin{itemize}
-\item The number of positional actual arguments corresponds to the number of formal arguments for the function.
-\item The actual names of named arguments $a_i$ correspond to named formal parameters.
-\end{itemize}
-
-If any of the above mentioned statements doesn't hold, a "NoSuchMethodError" is thrown.
-\todo{Elaborate how this error is constructed and passed to the current handler.}
-\todo{Add text for type checking the parameters.}
-
-Otherwise, the statement body is then executed with the appropriate bindings.
-The specific CESK-transitions for the different invocations are described in the appropriate sections below.
-
-%%
-% Figure showing the CESK-transition function starting from EvalConfgiration for
-% static property extraction and assignment, and static invocation
-%%
-\todo{zhivkag: Modify static method and getter invocation w.r.t. async semantics}
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\StaticGet{\membermeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\contconf{\econt}{\deref{\mainenv(\membermeta)}}}%
-                {\text{where $\membermeta$ is a static field and $\contains(\mainenv, \membermeta)$}}
-            \end{multlined}
-        \label{eval:staticget-var}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\StaticGet{\membermeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\contconf{\econt}{\nnull}}%
-                {\begin{aligned}
-                    \text{where } &\membermeta \text{ is a static field without an initializer expression},\\
-                                  &not \contains(\mainenv, \membermeta),\\
-                                  &\deref{(\mainenv(\membermeta))} = \NullLiteral \text{ after transition}
-                 \end{aligned}}
-        \end{multlined}
-        \label{eval:staticget-varnew-null}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\StaticGet{\membermeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\begin{aligned}
-                    \text{where } &\membermeta \text{ is a static field with initializer expression $\expressionmeta$},\\
-                                  &not \contains(\mainenv, \membermeta),\\
-                                  &\econt' = \StaticGetK
-                \end{aligned}}
-        \end{multlined}
-        \label{eval:staticget-varnew}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\StaticGet{\membermeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\execconf{\stmt}{\env_{empty}}{[]}{[]}{\StaticGet{\membermeta} ::\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\begin{aligned}
-                    \text{where } \membermeta &\text{is a getter with body $\stmt$}\\
-                                  \scont &= \ExitSK{\nnull}
-                \end{aligned}}
-        \end{multlined}
-        \label{eval:staticget-getter}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\StaticGet{\membermeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\contconf{\econt}{\funval{\formals}{\stmt}{\loc}}}%
-                {\begin{aligned}
-                    \text{where } \deref{\loc} &= \env_{empty} \text{ after transition}\\
-                                  \membermeta &\text{ is a method tear-off with formal parameters $\formals$ and body $\stmt$}
-                \end{aligned}}
-        \end{multlined}
-        \label{eval:staticget-tearoff}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\StaticSet{\membermeta}{\expressionmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt' = \StaticSetK$}}
-        \end{multlined}
-        \label{eval:staticset}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\StaticInvocation{\{\membermeta\}}{\expressionsmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evallistconf{\exprs}{\env}{\strace}{\cstrace}{\cex}{\acont'}}%
-                {\begin{aligned}
-                    \text{where } \acont' &= \StaticInvA{\formals}{\stmt}{\strace'}{\econt},\\
-                                  \strace' &= \StaticInvocation{\{\membermeta\}}{\expressionsmeta}::\strace,\\
-                                  \membermeta &\text{ is a static method with formal parameters }\formals \text{ and body }\stmt
-                  \end{aligned}}
-        \end{multlined}
-        \label{eval:staticinvoc}
-    \end{align}
-    \caption{The CESK-transition function for EvalConfiguration: static variable extraction and assignment, and sync static method invocation}
-    \label{table:static-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-%%
-% Figure showing the CESK-transition function starting from ValuePassingConfiguration for
-% static property extraction and assignment, and static invocation
-%%
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\contconf{\StaticGetK}{\val}}%
-            {\contconf{\econt}{\val}}%
-            {\begin{aligned}
-                \text{where }&\\
-                \mainenv^{\synt{R}} &= \extend( \mainenv^{\synt{L}},\,\membermeta,\,\val)
-                \text{ after transition}\\
-                \mainenv^{\synt{L}} &\text{ is the main environment in the starting configuration}\\
-                \mainenv^{\synt{R}} &\text{ is the main environment in the resulting configuration}
-            \end{aligned}}
-        \end{multlined}
-        \label{econtconf:staticget}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\contconf{\StaticSetK}{\val}}%
-            {\contconf{\econt}{\val}}
-            {\begin{aligned}
-                \text{where }
-                &\contains(\mainenv, \membermeta),\\
-                &\deref{(\mainenv(\membermeta))} = \val \text{ after transition}
-            \end{aligned}}
-        \end{multlined}
-        \label{econtconf:staticset-var}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\contconf{\StaticSetK}{\val}}%
-            {\contconf{\econt}{\val}}
-            {\begin{aligned}
-                \text{where }
-                &not \contains(\mainenv, \membermeta)\\
-                &\mainenv^{\synt{R}} = \extend( \mainenv^{\synt{L}},\,\membermeta,\,\val)\\
-                &\mainenv^{\synt{L}} \text{ is the main environment in the starting configuration}\\
-                &\mainenv^{\synt{R}} \text{ is the main environment in the resulting configuration}
-            \end{aligned}}
-        \end{multlined}
-        \label{econtconf:staticset-var-new}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\contconf{\StaticSetK}{\val}}%
-            {\execconf{\stmt}{\env}{[]}{[]}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\begin{aligned}
-                \text{where }  &\membermeta \text{ is a static setter with formal parameter }\formal \text{ and body }\stmt\\
-                               &\scont = \ExitSK{\val},\\
-                               &\env = \ext{\env_{empty}}{\formal}{\val}
-            \end{aligned}}
-        \end{multlined}
-        \label{econtconf:staticset-setter}
-    \end{align}
-    \caption{The CESK-transition function for ValuePassingConfiguration: static variable extraction and assignment, and static method invocation}
-    \label{table:static-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Static and Library Fields}
-\label{subsubsec:static-and-library-fields}
-
-In order to remember initialization and assignment of library variables and static variables, we introduce a global environment $\mainenv$ described in Section~\ref{subsec:main-env}.
-The environment $\mainenv$ stores bindings for static and library fields to locations for all static and library fields allocated before the execution of the program.
-Static and library variables are accessed with $\StaticGet{\membermeta}$.
-The member $\membermeta$ can be a static or library field, a getter or a method.
-When $\membermeta$ is a method, the expression $\StaticGet{\membermeta}$ is a method tear-off.
-
-\begin{itemize}
-    \item $\membermeta$ is a static or library field\\
-        Let $\expressionmeta_{\membermeta}$ be $\membermeta$'s initializer expression.
-        \begin{itemize}
-            \item If $\membermeta$ is accessed for the first time during the program's execution, the evaluation of $\StaticGet{\membermeta}$ proceeds with evaluation of the initializer expression $\expressionmeta_{\membermeta}$.
-            \item If $\expressionmeta$ is $\nnull$, the location for $\membermeta$ is updated to store a $\nnull$ value, as shown in \eqref{eval:staticget-varnew-null}.
-            \item If $\expressionmeta$ is an expression, this expression is evaluated as shown in \eqref{eval:staticget-varnew}.
-                The expression will evaluate to some value $\val$ that will be applied to the corresponding continuations, as shown in \eqref{econtconf:staticget}: the location for the field $\membermeta$ is updated to store the value $\val$ and the continuation $\econt$ is applied to the value $\val$.
-            \item If the location for the member $\membermeta$ in the global environment $\env_{M}$ has been previously accessed or initialized and does not store the empty value $\emptyset$, the continuation $\econt$ is applied to the stored value, as shown in \eqref{eval:staticget-var}.
-        \end{itemize}
-
-    \item $\membermeta$ is a static getter\\
-        If $\membermeta$ is a static getter, the body of the getter is executed, as shown in \eqref{eval:staticget-getter}.
-
-    \item $\membermeta$ is a static method tear-off\\
-        If $\membermeta$ is a method with formal parameters $\formals$ and body $\stmt$, a new $\funval{\formals}{\stmt}{\loc}, \deref{\loc} = \env_{empty}$ is created and bound to the member in the global environment $\mainenv$, as shown in \eqref{eval:staticget-tearoff}.
-        The continuation $\econt$ is applied to this value.
-
-\end{itemize}
-
-Static and library variables are set with $\StaticSet{\membermeta}{\expressionmeta}$.
-The target member can either be a static or library field, or it can be a static setter. For both cases, the right-hand side expression is evaluated first, as shown in \eqref{eval:staticset}.
-
-\begin{itemize}
-    \item $\membermeta$ is a static or library field\\
-        The evaluation proceeds by updating the value stored at the corresponding location in the environment $\mainenv$, as shown in \eqref{econtconf:staticset-var}.
-
-    \item $\membermeta$ is a static setter\\
-        The evaluation proceeds by executing the statement body of the setter.
-        A statement continuation $\ExitSK{\val}$ is added that applies the given expression continuation $\econt$ to the value of the right-hand side expression.
-        The statement body is executed in an environment that has only the binding from the formal parameter of the static setter to the value of the right-hand side expression, as shown in \eqref{econtconf:staticset-setter}.
-
-    \item Otherwise, $\membermeta$ is a static or library setter with body $\stmt$ and formal parameter $\formal$.
-
-\end{itemize}
-
-
-\subsubsection{Static Invocation}
-\label{subsubsec:static-invoc}
-
-Static invocation is supported with $\StaticInvocation{\{\membermeta\}}{\expressionsmeta}$ where $\membermeta$ is a function with statement body $\stmt$ and formal parameters $\formals$.
-The evaluation of a static invocation proceeds by evaluating the arguments of the call, as shown in \eqref{eval:staticinvoc}.
-After the evaluation of the actual arguments for the invocation, the corresponding application is applied to the resulting list of values, as shown in \eqref{acontconf:staticinvoc}.
-In \eqref{acontconf:staticinvoc}, we apply the application continuation by creating a new environment for the execution of the body of the method by binding its formal parameters to the locations of the values for the actual arguments.
-A statement continuation, $\ExitSK{\nnull}$ is added as next statement continuation to ensure that the execution of the body of the method returns correctly, when a return statement is not executed after the execution of the last statement of the body.
-
-%%
-% Figure showing the CESK-transition function starting from
-% ValuePassingConfiguration for instance property extraction and assignment.
-%%
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\evalconf{\PropertyGet{\expressionmeta}{\idmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-            {\text{where $\econt' = \PropertyGetK$}}
-        \end{multlined}
-        \label{eval:propertyget}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\evalconf{\DirectPropertyGet{\expressionmeta}{\membermeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-            {\text{where $\econt' = \DPropertyGetK$}}
-        \end{multlined}
-        \label{eval:dpropertyget}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\evalconf{\PropertySet{\expressionmeta_0}{\idmeta}{\expressionmeta_1}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expressionmeta_0}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-            {\text{where $\econt' = \PropertySetK$}}
-        \end{multlined}
-        \label{eval:propertyset}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\evalconf{\DirectPropertySet{\expressionmeta_0}{\membermeta}{\expressionmeta_1}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expressionmeta_0}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-            {\text{where $\econt' = \DirectPropertySetK$}}
-        \end{multlined}
-        \label{eval:dpropertyset}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\evalconf{\SuperPropertyGet{\idmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\contconf{\econt}{\val}}%
-            {\begin{aligned}
-                \text{where } \val &= \funval{\formals}{\stmt}{\loc}\\
-                              \deref{\loc} &= \env'\\
-                              \env' &= \ext{\env_{empty}}{\this}{\deref{(\env(\this))}},\\
-                              \membermeta &= \superclass(\deref{\env(\this)}).lookup(\idmeta),\\
-                              \membermeta &\text{ is a method tear-off with formal parameters $\formals$ and body $\stmt$}
-             \end{aligned}}
-        \end{multlined}
-        \label{eval:superpropertyget-tearoff}\\
-        &\begin{multlined}
-        \cesktranswheresplit*%
-            {\evalconf{\SuperPropertyGet{\idmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\execconf{\stmt}{\env'}{\lbls}{\clbls}{\SuperPropertyGet{\idmeta} :: \strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\begin{aligned}
-                \text{where } \membermeta &= \superclass(\deref{\env(\this)}).lookup(\idmeta),\\
-                              \membermeta &\text{ is a getter method with body }\stmt,\\
-                              \env' &= \ext{\env_{empty}}{\this}{\deref{(\env(\this))}},\\
-                              \scont &= \ExitSK{\nnull}
-            \end{aligned}}
-        \end{multlined}
-        \label{eval:superpropertyget-getter}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\evalconf{\SuperPropertyGet{\idmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\contconf{\econt}{M(\deref{(\env(\this))})}}%
-            {\text{where $\membermeta = \superclass(\deref{\env(\this)}).lookup(\idmeta)$, $\membermeta$ is a implicit field getter}}
-        \end{multlined}
-        \label{eval:superpropertyget-field}\\
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\evalconf{\SuperPropertySet{\idmeta}{\expressionmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-            {\text{where $\econt' = \SuperPropertySetK$}}
-        \end{multlined}
-        \label{eval:superpropertyset}
-    \end{align}
-    \caption{The CESK-transition function for EvalConfiguration: instance property extraction and assignment}
-    \label{figure:instance-property-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-%%
-% Figure showing the CESK-transition function starting from ValuePassingConfiguration for instance property extraction.
-%%
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-    &\begin{multlined}
-    \cesktranswheresplit*%
-        {\contconf{\PropertyGetK}{\val}}%
-        {\contconf{\econt}{\funval{\formals}{\stmt}{\loc}}}
-        {\begin{aligned}
-            \text{where } \membermeta &\text{ is a method with body $\stmt$ and formals $\formals$},\\
-                          \deref{\loc} &= \env \text{ after transition}\\
-                          \env &= \ext{\env_{empty}}{\this}{\val}
-        \end{aligned}}
-    \end{multlined}
-    \label{econtconf:propertyget-tearoff}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\PropertyGetK}{\val}}%
-        {\execconf{\stmt}{\env}{[]}{[]}{\PropertyGet{\val}{\idmeta} :: \strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-        {\begin{aligned}
-            \text{where } \membermeta&\text{ is a getter with body $\stmt$},\\
-                          \env &= \ext{\env_{empty}}{\this}{\val},\\
-                          \scont &= \ExitSK{\nnull}
-        \end{aligned}}
-    \end{multlined}
-    \label{econtconf:propertyget-getter}\\
-    &\begin{multlined}
-        \cesktranswheresplit%
-        {\contconf{\PropertyGetK}{\val}}%
-        {\contconf{\econt}{\text{\membermeta}(\val)}}%
-        {\begin{aligned}
-            \text{where } \membermeta &\text{ is an implicit getter for field $\idmeta$},\\
-                          \env &= \ext{\env_{empty}}{\this}{\val},\\
-                          \scont &= \ExitSK{\nnull}
-        \end{aligned}}
-    \end{multlined}
-    \label{econtconf:propertyget-field}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\PropertyGetK}{\val}}%
-        {\throwconf{\handler}{(\throw\text{ NoSuchMethod($\PropertyGet{\val}{\idmeta}$)}) :: \strace}{\text{NoSuchMethod}}}%
-        {\parbox{10cm}{where lookup of name $\idmeta$ was unsuccessful in class of value $\val$}}
-    \end{multlined}
-    \label{econtconf:propertyget-nosuchmethod}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\DPropertyGetK}{\val}}%
-        {\contconf{\econt}{\funval{\formals}{\stmt}{\loc}}}%
-        {\begin{aligned}
-            \text{where } \deref{\loc} = \env \text{ after transition}\\
-                          \membermeta &\text{ is a method with body $\stmt$ and formals $\formals$},\\
-                          \env &= \ext{\env_{empty}}{\this}{\val}
-         \end{aligned}}
-    \end{multlined}
-    \label{econtconf:dpropertyget-tearoff}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-            {\contconf{\DPropertyGetK}{\val}}%
-            {\execconf{\stmt}{\env}{[]}{[]}{\DirectPropertyGet{\val}{\membermeta} :: \strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\begin{aligned}
-                \text{where } \membermeta &\text{ is getter with statement body $\stmt$},\\
-                              \env &= \ext{\env_{empty}}{\this}{\val},\\
-                              \scont &= \ExitSK{\nnull}
-             \end{aligned}}
-    \end{multlined}
-    \label{econtconf:dpropertyget-getter}\\
-    &\begin{multlined}
-        \cesktranswhere%
-        {\contconf{\DPropertyGetK}{\val}}%
-        {\contconf{\econt}{\deref{\val[\membermeta]}}}%
-        {\text{where $\membermeta$ is a field }}
-    \end{multlined}
-    \label{econtconf:dpropertyget-field}
-    \end{align}
-    \caption{The CESK-transition function for ValuePassingConfiguration: instance property extraction}
-    \label{figure:econtconf:instance-property-extraction}
-    \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Property Extraction}
-\label{subsubsec:property-extraction}
-
-\kernel{} allows access of a member as a property, which can be either getter access, which executes the getter, or method extraction, which converts a method into a closure, also known as tear-off.
-Property extraction is supported with $\PropertyGet{\expr}{\idmeta}$.
-The evaluation of this expression is shown in \eqref{eval:propertyget}.
-After the evaluation of the receiver expression to a value $\val$, the property $\idmeta$ is looked up in methods, getters and implicit getters for the value $\val$.
-Let $\membermeta$ be the instance member result of such successful lookup below and in \eqref{econtconf:propertyget-field}, \eqref{econtconf:propertyget-getter} and \eqref{econtconf:propertyget-tearoff}.
-The evaluation of the expression proceeds as follow:
-
-\begin{itemize}
-    \item $\membermeta$ is a method tear-off\\
-        When $\membermeta$ is a method tear-off, the evaluation of the property extraction expression proceeds as shown in \eqref{econtconf:propertyget-tearoff}.
-        The member is converted to a value $\val \in \dfunval$, capturing the method body, its formal parameters and an environment with a $\this$ binding to a location that stores the current instance value and the expression continuation $\econt$ is applied to it.
-
-    \item $\membermeta$ is a getter\\
-        When $\membermeta$ is a getter, the body of the getter is executed as shown in the CESK-transition function step \eqref{econtconf:propertyget-getter}.
-        The statement body is executed with an environment with a $\this$ binding to a location that stores the current instance value and no statement continuation.
-        A getter should always contain a reachable return statement.
-
-    \item $\membermeta$ is an implicit getter for a field $\idmeta$\\
-        When $\membermeta$ is an implicit getter for field $\idmeta$ it is immediately applied on the receiver expression.
-        Application of implicit getter on some instance value returns the value stored in the location this getter contains.
-        Afterwards the continuation expression is applied to the value, as shown in \eqref{econtconf:propertyget-field}.
-
-\end{itemize}
-
-If the lookup fails, a ``NoSuchMethod'' will be thrown, as shown in \eqref{econtconf:propertyget-nosuchmethod}.
-
-
-\subsubsection{Direct Property Extraction}
-\label{subsubsec:direct-property-extraction}
-
-In \kernel{} a property can be accessed without lookup, by direct reference to the member $\membermeta$.
-This implies that the lookup step above is bypassed.
-Similar to Section~\ref{subsubsec:property-extraction}, this expression can be either getter access, which executes the getter, or method extraction, which converts a method into a closure, also known as tear-off.
-The evaluation proceeds as follows:
-
-\begin{itemize}
-    \item $\membermeta$ is an instance method\\
-        When $\membermeta$ is an instance method the evaluation of the direct property extraction expression proceeds in the same way as in Section~\ref{subsubsec:property-extraction}.
-        The exact CESK-transition function for this case is shown in \eqref{econtconf:dpropertyget-tearoff}.
-
-    \item $\membermeta$ is an instance getter\\
-        When $\membermeta$ is an instance getter, the statement body of the getter is executed, as described in the previous section with the CESK-transition function shown in \eqref{econtconf:dpropertyget-getter}.
-
-    \item $\membermeta$ is an instance field\\
-        When $\membermeta$ is an instance field, the evaluation proceeds as shown in \eqref{econtconf:dpropertyget-field}.
-
-\end{itemize}
-
-%%
-% Figure showing the CESK-transition function starting from
-% ValuePassingConfiguration for instance property assignment.
-%%
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\PropertySetK}{\val_0}}%
-        {\evalconf{\expressionmeta_1}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-        {\text{where $\econt' = \PropertySetVK$}}
-    \end{multlined}
-    \label{econtconf:propertyset-val}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\PropertySetVK}{\val_1}}%
-        {\execconf{\stmt}{\env}{[]}{[]}{(\PropertySet{\val_0}{\idmeta}{\val_1}) :: \strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-        {\begin{aligned}
-            \text{where } \lookupMember(\class(\val_0),\,\idmeta) &= \text{Setter}(A, S),\\
-                          \env &= \ext{\env_{empty}}{\this :: \formal :: []}{\val_0 :: \val_1 :: []},\\
-                          \scont &= \ExitSK{\val_1}\\
-         \end{aligned}}
-    \end{multlined}
-    \label{econtconf:propertyset-setter}\\
-    &\begin{multlined}
-        \cesktranswheresplit%
-        {\contconf{\PropertySetVK}{\val}}%
-        {\contconf{\econt}{\val_1}}%
-        {\begin{aligned}
-            \text{where } \lookupMember(\class(\val_0),\,\idmeta) &= \text{Setter}(i \in \NN),\\
-                          \deref{(\getfield(\val_0,\, i))} &= \val \text{ after the transtion}\\
-        \end{aligned}}
-    \end{multlined}
-    \label{econtconf:propertyset-field}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\DirectPropertySetK}{\val_0}}%
-        {\evalconf{\expressionmeta_1}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-        {\parbox{10cm}{where $\econt' = \DPropertySetVK$}}
-    \end{multlined}
-    \label{econtconf:dpropertyset-val}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\DPropertySetVK}{\val_1}}
-        {\execconf{\stmt}{\env}{\lbls}{\clbls}{(\DirectPropertySet{\val_0}{\membermeta}{\val_1}) :: \strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}
-        {\begin{aligned}
-            \text{where } \membermeta &= \text{Setter}(\formal, \stmt),\\
-            \env &= \ext{\env_{empty}}{\this :: \formal :: []}{\val_0 :: \val_1 :: []}\\
-            \scont &= \ExitSK{\val_1}
-        \end{aligned}}
-    \end{multlined}
-    \label{econtconf:dpropertyset-setter}\\
-    &\begin{multlined}
-        \cesktranswheresplit%
-        {\contconf{\DPropertySetVK}{\val}}%
-        {\contconf{\econt}{\val}}%
-        {\begin{aligned}
-        \text{where } \membermeta &= \text{Setter}(i \in \NN),\\
-                      \deref{(\getfield(\val_0,\, i))} &= \val \text{ after the transtion}\\
-        \end{aligned}}
-    \end{multlined}
-    \label{econtconf:dpropertyset-field}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\SuperPropertySetK}{\val}}
-        {\execconf{\stmt}{\env'}{\lbls}{\clbls}{(\SuperPropertySet{\idmeta}{\val}) :: \strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}
-        {\begin{aligned}
-        \text{where } c &= \superclass(\class(\deref{(\env(\this))}))\\
-                      \lookupMember(c,\,\idmeta) &= \text{Setter}(\formal, \stmt)\\
-                      \env' &=  \ext{\env_{empty}}{\this :: \formal :: []}{\deref{(\env(\this))} :: \val :: []}\\
-                      \scont &= \ExitSK{\val}
-        \end{aligned}}
-    \end{multlined}
-    \label{econtconf:superpropertyset-setter}\\
-    &\begin{multlined}
-        \cesktranswheresplit%
-        {\contconf{\SuperPropertySetK}{\val}}%
-        {\contconf{\econt}{\val}}%
-        {\begin{aligned}
-            \text{where } c &= \superclass(\class(\deref{(\env(\this))}))\\
-                          \lookupMember(c,\,\idmeta) &= \text{Setter}(i \in \NN)\\
-                          \deref{(\getfield(\deref{(\env(\this))},\, i))} &= \val \text{ after the transtion}\\
-        \end{aligned}}
-    \end{multlined}
-    \label{econtconf:superpropertyset-field}
-    \end{align}
-    \caption{The CESK-transition function for ValuePassingConfiguration: instance property assignment}
-    \label{figure:instance-property-assignment-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Property Assignment}
-\label{subsubsec:property-assignment}
-
-An assignment in \kernel{} results with the invocation of a setter.
-The evaluation of a property assignment proceeds as follows.
-First, the left-hand side expression, i.e. the receiver expression, is evaluated as shown in \eqref{eval:propertyset}.
-Afterwards, the right-hand side expression is evaluated, as shown in \eqref{econtconf:propertyset-val}.
-After the evaluation of the receiver expression to a value $\val_0$ and the argument to value $\val_1$, the property $\idmeta$ is looked up in the properties for the value $\val_0$.
-and implicit setters for the value $\val_0$.
-Let $\membermeta$ be the result of such lookup.
-The evaluation proceeds as follows:
-
-\begin{itemize}
-    \item $\membermeta$ is a setter invocation\\
-        When $\membermeta$ is an invocation of a setter with body $\stmt$ and formal parameter $\formal$, the evaluation proceeds by executing the body in the environment which binds $\this$ to a location that contains $\val_0$ and the formal parameter $\formal$ to a location that contains $\val_1$.
-        This is shown in the CESK-transition \eqref{econtconf:propertyset-setter}.
-        Note that we add the special statement continuation $\ExitSK{\val_1}$, that will apply the value $\val_1$ to the current expression continuation.
-
-    \item $\membermeta$ is a field\\
-        When the lookup results with a field, the implicit setter for the field is invoked with the receiver value and the field value as shown in \eqref{econtconf:propertyset-field}.
-        The $\{\membermeta\}(\val_0, \val_1)$ is the implicit setter for the field $\membermeta$ which is a function in the domain $\dval \times \dval \rightarrow \dval$.
-        The value returned by the implicit function is $\val_1$.
-
-\end{itemize}
-
-
-\subsubsection{Direct Property Assignment}
-\label{subsubsec:direct-property-assignment}
-
-In \kernel{} a property can be set without lookup, by direct reference to the member of the instance.
-This implies that the lookup step described in \ref{subsubsec:property-assignment} above is bypassed.
-The evaluation of direct property assignment proceeds by evaluating the right-hand side expression, i.e. the receiver expression as shown in \eqref{eval:dpropertyset}.
-Afterwards, the evaluation continues with the left-hand side expression as shown in \eqref{econtconf:dpropertyset-val}.
-After evaluating the receiver expression to $\val_0$ and the argument expression to $\val_1$, depending on $\membermeta$, the evaluation continues as follows:
-
-\begin{itemize}
-    \item $\membermeta$ is an instance setter\\
-        When $\membermeta$ is an instance setter with body $\stmt$ and formal parameter $\formal$, the evaluation of the expression proceeds with execution of the body with an environment binding $\this$ to a location containing $\val_0$ and the formal parameter $\formal$ to a location storing $\val_1$.
-
-    \item $\membermeta$ is a field\\
-        When $\membermeta$ is a field the value stored at location $\val_0[\membermeta]$ is modified to store value the argument expression evaluates to, $\val_1$, as shown in \eqref{econtconf:dpropertyset-field}.
-
-\end{itemize}
-
-
-\subsubsection{Super Property Get}
-\label{subsubsec:super-property-get}
-
-\kernel{} allows access of a superclass member as a property, which can be either getter access, which executes the getter, or method extraction, which converts a method into a closure.
-Accessing a superclass member is accessed with the expression $\SuperPropertyGet{\idmeta}$ evaluated with the corresponding components: $\env$, $\strace$, $\handler$, $\cstrace$, $\cex$, $\econt$.
-Let $\val = \deref{(\env(\this))}$, $C = \superclass(\val)$ and $\membermeta$ the result of looking up $\idmeta$ in $C$.
-The evaluation of a super property extraction proceeds as follows:
-
-\begin{itemize}
-    \item $\membermeta$ is a method tear-off\\
-        When $\membermeta$ is a method tear-off, the evaluation of super property extraction expression proceeds as shown in \eqref{eval:superpropertyget-tearoff}.
-        The member with body $\stmt$ and formal parameters $\formals$ is converted to a value $\val \in \dfunval$.
-        The value $\val$ captures the method body, its formal parameters and an environment with a $\this$ binding to a location that stores the current instance value and the expression continuation $\econt$ is applied to it.
-
-    \item $\membermeta$ is an instance getter\\
-        When $\membermeta$ is an instance getter, the statement body of the getter is executed.
-        The CESK-transition is shown in \eqref{eval:superpropertyget-getter}.
-
-    \item $\membermeta$ is an instance field\\
-        When $\membermeta$ is an instance field, the evaluation proceeds as shown in \eqref{eval:superpropertyget-field}.
-
-\end{itemize}
-
-
-\subsubsection{Super Property Assignment}
-\label{subsubsec:super-property-assignemnt}
-
-\kernel{} supports assignment of a super member with the expression $\SuperPropertySet{\idmeta}{\expressionmeta}$.
-Let $\val' = \deref{(\env(\this))}$, $C = \superclass(\val')$ and $M$ the result of looking up $\idmeta$ in $C$.
-The evaluation proceeds with evaluation of the right-hand side expression as shown in \eqref{eval:superpropertyset}.
-After the evaluation of the argument expression to a value $\val$, depending on $\membermeta$, the evaluation continues as follows:
-
-\todo{regroup all property extraction together since text is similar}
-\begin{itemize}
-    \item $\membermeta$ is an instance setter\\
-        When $\membermeta$ is an invocation of a setter with body $\stmt$ and formal parameter $\formal$, the evaluation proceeds by executing the body in the environment which binds $\this$ to a location that contains $\deref{(\env(\this))}$ and the formal parameter $\formal$ to a location that contains $\val$.
-        This is shown in the CESK-transition \eqref{econtconf:superpropertyset-setter}.
-        Note that we add the special statement continuation $\ExitSK{\val_1}$, that will apply the value $\val$ to the current expression continuation.
-
-    \item $\membermeta$ is a field\\
-        When the lookup results with a field, the implicit setter for the field is invoked with the receiver value $\deref{(\env(\this))}$ and the field value $\val$, as shown in \eqref{econtconf:superpropertyset-field}.
-
-\end{itemize}
-
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-        &\begin{multlined}
-        \cesktranswheresplit%
-            {\evalconf{\InstanceMethodInvocation{\expressionmeta}{\idmeta}{\expressionsmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-            {\econt' = \InstanceMethodK{\InstanceMethodInvocation{\expressionmeta}{\idmeta}{\expressionsmeta} :: \strace}}
-        \end{multlined}
-        \label{eval:instancemethod}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-            {\evalconf{\DInstanceMethodInvocation{\expressionmeta}{\membermeta}{\expressionsmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evalconf{\expressionmeta}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-            {\econt' = \DInstanceMethodK{\DInstanceMethodInvocation{\expressionmeta}{\membermeta}{\expressionsmeta} :: \strace}}
-        \end{multlined}
-        \label{eval:dinstancemethod}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-            {\evalconf{\SuperMethodInvocation{\idmeta}{\expressionsmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-            {\evallistconf{\expressionsmeta}{\env}{\strace}{\cstrace}{\cex}{\acont}}%
-            {\acont = \SuperMethodA{\SuperMethodInvocation{\idmeta}{\expressionsmeta} :: \strace}}
-        \end{multlined}
-        \label{eval:superinstancemethod}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-            {\evalconf{\new Q(\exprs)}{\env}{st}{cex}{cst}{\econt}}%
-            {\evallistconf{\exprs}{\env}{st}{cex}{cst}{\acont'}}%
-            {\acont' = \ConstructorA{Q}{\new Q(\exprs) :: \strace}{\econt}}
-        \end{multlined}
-        \label{eval:new}
-    \end{align}
-    \caption{The CESK-transition function for EvalConfiguration: instance method and constructor invocation}
-    \label{figure:instance-method-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\InstanceMethodK{\strace}}{\val}}%
-        {\evallistconf{\expressionsmeta}{\env}{\strace}{\cstrace}{\cex}{\acont'}}%
-        {\text{where $\acont' = \InstanceMethodA$}}
-    \end{multlined}
-    \label{econtconf:instancemethod}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\DInstanceMethodK{\strace}}{\val}}%
-        {\evallistconf{\expressionsmeta}{\env}{\strace}{\cstrace}{\cex}{\acont'}}%
-        {\text{where $\acont' = \DInstanceMethodA$}}
-    \end{multlined}
-    \label{econtconf:dinstancemethod}
-    \end{align}
-    \caption{The CESK-transition function for ValuePassingConfiguration: instance method and constructor invocation}
-    \label{figure:instance-method-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-    &\begin{multlined}
-            \cesktranswheresplit*%
-            {\contconf{\InstanceMethodA}{\val{s}}}%
-            {\execconf{\stmt}{\env}{[]}{[]}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\begin{aligned}
-                \text{where } \membermeta &= class(\val).lookup(\idmeta)\text{ is an instance method with body $\stmt$ and formals $\formals$},\\
-                              \scont &= \ExitSK{\nnull},\\
-                              \env &= \ext{\env_{empty}}{\this :: \formals}{\val :: \val{s}}
-            \end{aligned}}
-    \end{multlined}
-    \label{acontconf:instancemethod}\\
-    &\begin{multlined}
-            \cesktranswheresplit*%
-            {\contconf{\DInstanceMethodA}{\val{s}}}%
-            {\execconf{\stmt}{\env}{[]}{[]}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\begin{aligned}
-                \text{where } \stmt &\text{ is the statement body and $\formals$ are the formal parameters of the instace method $\membermeta$},\\
-                              \scont &= \ExitSK{\nnull},\\
-                              \env &= \ext{\env_{empty}}{\this :: \formals}{\val :: \val{s}}
-            \end{aligned}}
-    \end{multlined}
-    \label{acontconf:dinstancemethod}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\SuperMethodA{\strace}}{\val{s}}}%
-        {\execconf{\stmt}{\env'}{[]}{[]}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-        {\begin{aligned}
-            \text{where } c &= \superclass(\class(\val))\\
-                          \membermeta &= \lookupMember(c,\,\idmeta)\text{ is an instance method with body $\stmt$ and formals $\formals$},\\
-                          \scont &= \ExitSK{\nnull},\\
-                          \env' &= \ext{\env_{empty}}{\this :: \formals}{\deref{(\env(\this))} :: \val{s}}        \end{aligned}}
-    \end{multlined}
-    \label{acontconf:superinstancemethod}
-    \end{align}
-    \caption{The CESK-transition function for ApplicationConfigurations}
-    \label{figure:instance-method-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-    \cesktrans%
-        {\scontconf{\ExitSK{\val}}{\env}}%
-        {\contconf{\econt}{\val}}
-    \end{align}
-    \caption{The CESK-transition function for ForwardConfigurations}
-    \label{figure:instance-method-evalconfigs}
-    \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Instance Method Invocation}
-\label{subsubsec:instance-method-invoc}
-
-Method invocation is supported with $\InstanceMethodInvocation{\expressionmeta}{\idmeta}{\expressionsmeta}$.
-
-The evaluation of instance method invocation proceeds with the evaluation of the left-hand side expression, i.e. the receiver expression as shown in \eqref{eval:instancemethod}.
-As shown in the CESK-transition \eqref{econtconf:instancemethod}, the argument expressions evaluate to a list of values.
-After the evaluation of the receiver expression to a value $\val$, we proceed with evaluation of the argument expressions.
-
-After the evaluation of the receiver expression to a value $\val$ and the argument expressions to $\vals$, the instance method $\idmeta$ is looked up in the instance methods for the value $\val$.
-Let $\membermeta$ be the result of such lookup with statement body $\stmt$ and formal parameters $\formals$.
-
-The body $\stmt$ is then executed with an environment binding $\this$ to a location storing the instance value $\val$ and the formal parameters to fresh locations each storing the values in $\vals$.
-The CESK-transition is shown in \eqref{acontconf:instancemethod}.
-
-We add $\ExitSK{\nnull}$ as next statement continuation.
-When a $\return$ statement is missing in the statement body $\stmt$ of the instance method $\membermeta$, the statement continuation $\ExitSK{\val}$ ensures that the execution will proceed to the corresponding expression continuation, in this case with $\val = \nnull$.
-
-
-\subsubsection{Direct Instance Method Invocation}
-\label{subsubsec:direct-instance-method-invoc}
-
-Direct method invocation allows invocation of instance method by providing directly the member method to be invoked and bypass the lookup step described in Section~\ref{subsubsec:instance-method-invoc} above.
-The evaluation of the direct instance method invocation proceeds with the evaluation of the left-hand side expression, i.e. the receiver expression as shown in \eqref{eval:dinstancemethod}.
-After the evaluation of the receiver expression to a value $\val$, the evaluation proceeds with the evaluation of the argument expressions as shown in \eqref{acontconf:dinstancemethod}.
-The argument expressions are evaluated to a list of values $\vals$.
-The evaluation of the expression continues with the execution of the statement body in the environment that binds $\this$ to a location that stores the value $\val$ and the formal parameters $\formals$ to fresh locations storing values from $\vals$ accordingly.
-The CESK-transition is shown in \eqref{acontconf:dinstancemethod}.
-Similar to Section~\ref{subsubsec:instance-method-invoc}, $\ExitSK{\nnull}$ is added as next statement continuation.
-
-
-\subsubsection{Super Method Invocation}
-\label{subsubsec:super-method-invoc}
-
-Super method invocation is supported with $\SuperMethodInvocation{\idmeta}{\expressionsmeta}$.
-We first evaluate the argument expressions, as shown in the CESK-transition \eqref{eval:superinstancemethod}.
-After the evaluation of the argument expressions to list of values $\vals$ for the super method invocation, the evaluation continues with lookup for $\idmeta$ in the members of the value bound to $\this$ in the current environment.
-Let $\val = \deref{(\env(\this))}$, $C = \superclass(\val)$ and $M$ the result of looking up $\idmeta$ in $C$.
-Let $\stmt$ be the statement body and $\formals$ the formal parameters for $\membermeta$.
-The statement $\stmt$ is executed in an environment binding $\formals$ to the locations containing the values in $\vals$ and $\this$ binding to location containing the same value bound to $\this$ in the current environment.
-Similarly to Section~\ref{subsubsec:instance-method-invoc}, $\ExitSK{\val}$ is added as next statement continuation.
-
-
-\subsubsection{New Instance Creation}
-\label{subsubsec:new-instance}
-
-\kernel{} supports new instance creation with constructor invocation.
-A constructor can be run with $\new$ expression or when it is a target of an initializer.
-\kernel{} also supports redirecting constructors, which invoke a specified target constructor without modifying the newly allocated instance.
-
-A constructor has an associated class definition, an initializer list, $Izs$, with various kinds of initializers, formal parameters, $\formals$, and a statement body $\stmt$.
-
-We support the following kinds of initializers:
-
-\begin{itemize}
-    \item $\FieldInitializer{\expressionmeta}$ --- Field initializer for field $\field$ with expression $\expressionmeta$.
-        Field initializers modify the field of the newly allocated instance to store the value the expression evaluates to.
-    \item $\LocalInitializer{\expressionmeta}$ --- Local initializer for variable $\varmeta$ with expression $\expressionmeta$.
-        Local initializers extend the environment for the initializer list of the constructor with a binding of variable declaration $\varmeta$ to the value the expression evaluates to.
-    \item $\RedirectingInitializer{G}{\expressionsmeta}$ --- Redirecting initializer with target constructor $G$ and actual arguments for running the constructor $\expressionsmeta$.
-        Redirecting initializer appears last in the list of initializers of a constructor.
-        When the last initializer in the initializer list of a constructor is a redirecting initializer, we say the constructor is a redirecting constructor.
-        The redirecting constructor has an empty statement body.
-        When a redirecting constructor is run, only the initializer list of the constructor is executed.
-        Note that in other cases we first initialize instance fields in the immediately enclosing class that have initializer expressions before proceeding to execution of the initializer list.
-        Fields for the newly allocated instance from the immediately enclosing class are initialized only when a non-redirecting constructor is run.
-        This ensures that side effects from evaluating the actual arguments for the target constructor of the redirecting constructor occur before any side effects from initializing the fields in the immediately enclosing class.
-    \item $\SuperInitializer{G}{\expressionsmeta}$ --- Super initializer with target constructor $G$ and actual arguments for running the constructor $\expressionsmeta$.
-
-        Super initializers appear last in the initializer list and all non-redirecting constructors other then the constructor for the object class, have a super initializer as the last in their initializer list.
-        Before invoking the target constructor of the super initializer, all non initialized fields in the immediately enclosing class are set to $\NullLiteral$ to ensure that all fields have been initialized before they are used.
-\end{itemize}
-
-
-A new object value is allocated only a constructor is run with $\new$, i.e. invoked, otherwise we say that the constructor is run to further initialize an already allocated object value.
-
-Let $\new(Q(\expressionsmeta))$ be an expression invokes a constructor $Q$ to produce a new instance.
-The invocation of a constructor $Q$ proceeds by evaluating the actual argument expressions as shown in \eqref{eval:new}.
-After the evaluation of the argument expressions for the invocation, a fresh instance is allocated by creating a value $\val \in \dobjval$ (see Section~\ref{subsec:object-values} for details on $\dobjval$).
-The execution of the constructor proceeds as follows:
-
-\begin{align*}
-    &\begin{multlined}
-    \cesktranswheresplit*%
-        {\acontconf{\ConstructorA{Q}{\strace}{\econt}}{\val{s}}}%
-        {\contconf{\InitK{Q}{\env'}{\scont}}{\val}}%
-        {\begin{aligned}
-            \val &= \objval \in \dobjval,\\
-            class &\text{ is class component of the constructor }Q,\\
-            fields &\in \mlist{\dlocation} \text{ is a list of fresh locations in the store},\\
-            \env' &= \extend(\env_{empty}, \formals, \val{s}),\\
-            \scont &= \NewSK{\econt}{\loc} \text{ with $\loc$ a new location such that $\deref{\loc}=\val$}
-        \end{aligned}}
-    \end{multlined}
-\end{align*}
-
-We introduce a new statement continuation, $\NewSK{\econt}{\loc}$ which captures the expression continuation that will be eventually applied to the newly allocated value after the execution of the statement body of the constructor.
-The CESK-transition from the corresponding ForwardConfiguration is shown below:
-\begin{align*}
-    &\cesktrans{\scontconf{\NewSK{\econt}{\loc}}{\env}}{\contconf{\econt}{\deref{\loc}}}
-\end{align*}
-
-Let $initializer$ be the last initializer in the list of initializers, $Izs$, of constructor $Q$.
-When $initializer$ is a redirecting initializer to some target constructor $G$, then execution of constructor $Q$'s initializer list,  $Izs$, proceeds immediately.
-When the redirecting initializer is the only initializer in the list, the execution proceeds as follows:
-\begin{align*}
-    &\begin{multlined}
-        \cesktranswheresplit%
-            {\contconf{\InitK{Q}{\env}{\scont}}{\val}}%
-            {\evallistconf{\exprs}{\env}{\strace}{\cstrace}{\cex}{\acont}}%
-            {\begin{aligned}
-                \text{where } Izs &= \RedirectingInitializer{G}{\exprs} :: [],\\
-                              \acont &= \RedirectingA{G}{\loc}{\scont},\\
-                              \deref{\loc} &= \val
-             \end{aligned}}
-    \end{multlined}
-\end{align*}
-Otherwise, the redirecting constructor $Q$ has other initializers in the initializer list.
-The redirecting constructor can have only local initializers in the list.
-The rules for executing the initializer list of redirecting and non-redirecting constructors are the same.
-The other initializers for redirecting constructor are introduced by transformations that only introduce local initializers.
-
-The CESK-transition starting form the corresponding ValuePassingConfiguration proceeds with the first initializer in the list, denoted as $fi$ below:
-\begin{align*}
-    &\begin{multlined}
-        \cesktranswheresplit%
-            {\contconf{\InitK{Q}{\env}{\scont}}{\val}}%
-            {\evalconf{\expr}{\env}{\strace}{\cex}{\cstrace}{\econt}}%
-            {\begin{aligned}
-                \text{where } fi &= \LocalInitializer{\expr} + \FieldInitializer{\expr},\\
-                              fi &\text{ is first initializer in }Izs,\\
-                              \econt &= \InitializerK{Izs}{\val}{\env}{\scont}
-             \end{aligned}}
-    \end{multlined}
-\end{align*}
-
-Otherwise, $Q$ is a non-redirecting generative constructor, and execution of $Q$ proceeds with evaluation of field initializers in the immediately enclosing class.
-Let $Q$ be a non-redirecting constructor below.
-
-\begin{align*}
-    &\begin{multlined}
-        \cesktranswheresplit%
-            {\contconf{\InitK{Q}{\env}{\scont}}{\val}}%
-            {\evallistconf{\exprs}{\env}{\strace}{\cstrace}{\cex}{\acont}}%
-            {\begin{aligned}
-                \text{where }   \env'  &= \ext{\env}{\this}{\val},\\
-                                \exprs &= \text{initializer expressions for instance fields},\\
-                                \deref{\loc} &= \val,\text{ a fresh location that stores $\val$}\\
-                \acont &= \FieldsA{Q}{\loc}{\env}{\scont'},\\
-                                \scont' &= \BodySK{\stmt_{body}}{\env'}{\scont}.
-            \end{aligned}}
-    \end{multlined}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-            {\acontconf{\RedirectingA{G}{\loc}{\scont}}{\val{s}}}%
-            {\contconf{\InitK{\synt{G}}{\env'}{\scont}}{\val}}%
-        {\text{where $\deref{\loc} = \val$, $\env' = \extend(\env_{empty}, \formals, \val{s})$}}.
-    \end{multlined}
-\end{align*}
-
-
-To further initialize the new instance, the body of the constructor will be eventually executed, after the execution of the instance field initializers, the constructor initializer list and its super constructor.
-To support this, we add a new statement continuation, BodySK, that captures the constructor body statement, the environment for the execution of the body, the error handlers and stack trace, and the next statement continuation.
-We add the newly created statement continuation as next continuation for the execution of the instance field initializers, the constructor initializer list and the super constructor.
-Note that the statement continuation for the body of the constructor is not added when the constructor is redirecting, since redirecting constructors do not have a body.
-The CESK-transition for this statement continuation is shown below/
-
-\begin{align*}
-    &\cesktrans%
-        {\scontconf{\BodySK{\stmt}{\env}{\scont}}{\_}}%
-        {\execconf{\stmt}{\env}{[]}{[]}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}.
-\end{align*}
-
-The application continuation applied on the evaluated expressions for the instance field initializers updates the values stored in the locations for each field  of the object value.
-An update of field $\field_i$, stored at location $\loc' = (\deref{\loc})[i]$ with value $\val_i$ is expressed as $\update((\deref{\loc}[i],\, \val_{i})$, so the following holds $\deref{\loc'} = \deref{(\deref{(\loc)}[i])} = \val_{i}$ after the update.
-
-After the update of the values stored in the field locations of the object value, the application continuation will produce the next configuration.
-The next configuration is produced depending on the initializer list of the constructor.
-We consider multiple cases:
-\begin{itemize}
-    \item The initializer list is empty, $Izs = []$.
-        Note that this can be true only for the superclass `object`.
-        All other constructors will have at least one initializer, $\SuperInitializer{G}{\expressionsmeta}$ that targets some constructor $G$.
-        The CESK-transition for the case when the initializer list is empty is shown below:
-        \begin{align*}
-            &\begin{multlined}
-                \cesktranswheresplit%
-                {\acontconf{\FieldsA{Q}{\loc}{\env}{\scont}}{\val{s}}}%
-                {\scontconf{\scont}{\env}}%
-                {\text{where $\deref{(\deref{(\loc)}[i])}= \val_{i}, \forall \field_i \in Fs, \forall \val_i \in \val{s}$}}.
-            \end{multlined}
-        \end{align*}
-    \item The initializer list contains at least one initializer with an expression to evaluate.
-        This initializer is a $\FieldInitializer{\expressionmeta}$ or a $\LocalInitializer{\expressionmeta}$.
-        If the initializer list contains at least two initializers, we can assume that the next initializer is as described above.
-        The CESK-transition function for this case is shown below:
-        \begin{align*}
-            &\begin{multlined}
-                \cesktranswheresplit%
-                {\acontconf{\FieldsA{Q}{\loc}{\env}{\scont}}{\val{s}}}%
-                {\evalconf{\expr}{\env}{st}{cex}{cst}{\econt'}}
-                {\begin{aligned}
-                   \text{where } \deref{(\deref{\loc[i]})} &= \val_{i}, \forall \field_i \in Fs, \forall \field_i \in \val{s},\\
-                                 \econt' &= \InitializerListEK{Q}{k}{\loc}{\env}{\scont},\\
-                                 k &= 0 \text{ is the index of the initializer whose expression is evaluated in the next step},\\
-                                 \expressionmeta &\text{ is the expression from $\FieldInitializer{\expressionmeta}$ or $\LocalInitializer{\expressionmeta}$}
-                \end{aligned}}
-            \end{multlined}
-        \end{align*}
-
-    \item Otherwise, there is only one initializer in the initializer list and it is a $\SuperInitializer{G}{\expressionsmeta}$.
-        This is the case because the fields are initialized only when a non-redirecting constructor is run.
-        Otherwise, the initializer is a super initializer, $\SuperInitializer{G}{\exprs}$:
-        \begin{align*}
-            \cesktranswheresplit%
-            {\acontconf{\FieldsA{Q}{\loc}{\env}{\scont}}{\val{s}}}%
-            {\evallistconf{\exprs}{\env}{\strace}{\cstrace}{\cex}{\acont}}%
-            {\begin{aligned}
-                \text{where } \deref{\deref{\loc[\field_i]}} &= \val_{i}, \forall \field_i \in Fs, \forall \val_i \in \val{s},\\
-                \acont &= \SuperA{G}{\loc}{\scont}
-            \end{aligned}}
-        \end{align*}
-\end{itemize}
-
-The CESK-transition functions starting in an ValuePassingConfiguration, with an initializer list expression continuation are described below.
-
-When the current initializer being executed is a $\LocalInitializer{\expressionmeta}$, we have the following cases:
-\begin{align*}
-    &\begin{multlined}
-        \cesktranswheresplit%
-        {\contconf{\InitializerListEK{Q}{k}{\env}{\loc}{\scont}}{\val}}%
-            {\scontconf{\scont}{\env'}}%
-        {\begin{aligned}
-            \text{where } \env' &= \ext{\env}{\variablemeta}{\val},\\
-                          Izs &\text{ is the initializer list of the constructor $Q$},\\
-                          Izs[k] &= \LocalInitializer{\expressionmeta},\\
-                          k+1 &\geq length(Izs)
-        \end{aligned}}
-    \end{multlined}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\InitializerListEK{Q}{k}{\env}{\loc}{\scont}}{\val}}%
-            {\evallistconf{\exprs}{\env'}{\strace}{\cstrace}{\cex}{\acont}}%
-        {\begin{aligned}
-            \text{where } \env' &= \ext{\env}{\variablemeta}{\val},\\
-                          Izs &\text{ is the initializer list of the constructor $Q$},\\
-                          Izs[k] &= \LocalInitializer{\expressionmeta},\\
-                          \acont &= \SuperA{G}{\loc}{\scont},\\
-                          Izs[k+1] &= \SuperInitializer{G}{\exprs},\\
-         \end{aligned}}
-    \end{multlined}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\InitializerListEK{Q}{k}{\env}{\loc}{\scont}}{\val}}%
-            {\evallistconf{\exprs}{\env'}{\strace}{\cstrace}{\cex}{\acont}}%
-        {\begin{aligned}
-            \text{where } \env' &= \ext{\env}{\variablemeta}{\val},\\
-                          Izs &\text{ is the initializer list of the constructor $Q$},\\
-                          Izs[k] &= \LocalInitializer{\expressionmeta},\\
-                          \acont &= \RedirectingA{G}{\loc}{\scont},\\
-                          Izs[k+1] &= \RedirectingInitializer{G}{\exprs}
-         \end{aligned}}
-    \end{multlined}\\
-    &\begin{multlined}
-        \cesktranswheresplit%
-        {\contconf{\InitializerListEK{Q}{k}{\env}{\loc}{\scont}}{\val}}%
-            {\evalconf{\expri{1}}{\env'}{st}{cex}{cst}{\econt'}}%
-        {\begin{aligned}
-            \text{where } \env' &= \ext{\env}{\variablemeta}{\val},\\
-                          Izs &\text{ is the initializer list of the constructor $Q$},\\
-                          Izs[k] &= \LocalInitializer{\expressionmeta},\\
-                          Izs[k+1] &= \LocalInitializer{\expressionmeta_1} \text{ or }\FieldInitializer{\expressionmeta_1},\\
-                          \econt' &= \InitializerListEK{Izs}{k+1}{\loc}{\env'}{\scont}
-        \end{aligned}}
-    \end{multlined}
-\end{align*}
-
-Note that when a local initializer is last in the initializer list, the environment resulted after the transition is discarded.
-However, the corresponding expression has to be executed, because of side effects.
-
-
-When the current initalizer being executed is a $\FieldInitializer{\expressionmeta}$, we have the following cases:
-
-\begin{align*}
-    &\begin{multlined}
-        \cesktranswheresplit%
-        {\contconf{\InitializerListEK{Q}{k}{\loc}{\env}{\scont}}{\val}}%
-            {\scontconf{\scont}{\env'}}%
-        {\begin{aligned}
-            \text{where } \deref{((\deref{\loc})[i]}) &= {\val}, i \in \NN \text{ s.t $i$ is the position of $\field$ in fields of $\deref{\loc}$} \\
-                          Izs[k] &= \FieldInitializer{\expressionmeta}
-        \end{aligned}}
-    \end{multlined}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\InitializerListEK{Q}{k}{\loc}{\env}{\scont}}{\val}}%
-            {\evallistconf{\exprs}{\env}{\strace}{\cstrace}{\cex}{\acont}}%
-        {\begin{aligned}
-            \text{where } \deref{((\deref{\loc})[i]}) &= {\val}, i \in \NN \text{ s.t $i$ is the position of $\field$ in fields of $\deref{\loc}$} \\
-                          Izs[k] &= \FieldInitializer{\expressionmeta}\\
-                          \acont &= \SuperA{G}{\loc}{\scont},\\
-                          Izs[k+1] &= \SuperInitializer{G}{\exprs}
-         \end{aligned}}
-    \end{multlined}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-        {\contconf{\InitializerListEK{Q}{k}{\loc}{\env}{\scont}}{\val}}%
-            {\evallistconf{\exprs}{\env}{\strace}{\cstrace}{\cex}{\acont}}%
-        {\begin{aligned}
-            \text{where } \deref{((\deref{\loc})[i]}) &= {\val}, i \in \NN \text{ s.t $i$ is the position of $\field$ in fields of $\deref{\loc}$} \\
-                          Izs[k] &= \FieldInitializer{\expressionmeta}\\
-                          \acont &= \RedirectingA{G}{\loc}{\scont},\\
-                          Izs[k+1] &= \RedirectingInitializer{G}{\exprs}
-         \end{aligned}}
-    \end{multlined}\\
-    &\begin{multlined}
-        \cesktranswheresplit%
-        {\contconf{\InitializerListEK{Q}{k}{\env}{\loc}{\scont}}{\val}}%
-            {\evalconf{\expri{1}}{\env}{st}{cex}{cst}{\econt}}%
-        {\begin{aligned}
-            \text{where } \deref{((\deref{\loc})[i]}) &= {\val}, i \in \NN \text{ s.t $i$ is the position of $\field$ in fields of $\deref{\loc}$} \\
-                          Izs[k] &= \FieldInitializer{\expressionmeta}\\
-                          Izs[k+1] &= \LocalInitializer{\expressionmeta_1} \text{ or }\FieldInitializer{\expressionmeta_1},\\
-                          \econt' &= \InitializerListEK{Izs}{k+1}{\env'}{\loc}{\scont}
-        \end{aligned}}
-    \end{multlined}
-\end{align*}
-
-
-\subsection{Statement Execution}
-\label{subsec:stmt-exectution}
-
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\execconf{\VarDeclaration{\varmeta}{\expr}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt' = \VarDeclK{\env}{\varmeta}{\scont}$}}
-        \end{multlined}
-        \label{execconf:vardecl}\\
-        &\cesktrans%
-            {\execconf{\EmptyStatement}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\scontconf{\scont}{\env}}
-        \label{execconf:empty}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\execconf{\ExpressionStatement{\expressionmeta}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt' = \ExpressionK{\scont}{\env}$}}
-        \end{multlined}
-        \label{execconf:expresion}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\execconf{\Block{\stmt_1 :: \stmt{s}}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\execconf{\stmt_1}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont'}}%
-                {\text{where $\scont' = \BlockSK{\stmt{s}}{\env}$}}
-        \end{multlined}
-        \label{execconf:block}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\execconf{\IfStatement{\expr}{\stmti{1}}{\stmti{2}}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt' = \IfCondK{\stmti{1}}{\stmti{2}}$}}
-        \end{multlined}
-        \label{execconf:if}\\
-        &\cesktrans%
-            {\execconf{\ReturnStatement{\expr}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt}}
-        \label{execconf:return}\\
-        &\cesktrans%
-            {\execconf{\ReturnStatement{}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\contconf{\econt}{\nnull}}
-        \label{execconf:return-empty}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\execconf{\DoStatement{\statementmeta}{\expressionmeta}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\execconf{\statementmeta}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont'}}%
-                {\text{where $\scont' = \WhileCondK$}}
-        \end{multlined}
-        \label{execconf:do}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\execconf{\WhileStatement{\expr}{\stmt}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt', \scont' = \WhileCondK$}}
-        \end{multlined}
-        \label{execconf:while}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\execconf{\ForStatement{\varmeta{s}}{\expressionmeta}{\exprs}{\statementmeta}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\evallistconf{\exprs'}{\env}{\strace}{\cex}{\cstrace}{\acont}}%
-                {\parbox{\textwidth-2cm}{where $\acont = \ForInitA{\expressionmeta}$,\\
-                $\exprs' =$ initializer expressions for the list of variable declarations $\varmeta{s}$}}
-        \end{multlined}
-        \label{execconf:for}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\execconf{\LabeledStatement{L}{\stmt_{L}}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\execconf{\stmt_{L}}{\env}{\lbl :: \lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\text{where $\lbl = \mathrm{Label}(L, \bcont)$, $\bcont = \mathrm{Break}(\env, \scont)$}}
-        \end{multlined}
-        \label{execconf:labeled}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\execconf{\SwitchStatement{\expr}{\scases}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt' = \SwitchK{\scases}{\clbls}$}}
-        \end{multlined}
-        \label{execconf:switch}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\execconf{\BreakStatement{L}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\breakconf{\bcont}}%
-                {\text{where $\lbl = Label(L', \bcont) \in \lbls \text{ with } L' == \synt{L}$}}
-        \end{multlined}
-        \label{execconf:break}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\execconf{\ContinueSwitchStatement{\stmt}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\switchconf{\switchcont}}%
-                {\text{where $\clbl = \continuel{\stmt'}{\switchcont} \in \clbls \text{ with } \stmt' == \stmt$}}
-        \end{multlined}
-        \label{execconf:continue}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\execconf{\FunctionDeclaration{\typemeta}{\idmeta}{\formals}{}{\stmt}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cstrace,\,\cex}{\econt}{\scont}}%
-                {\contconf{\econt}{\val}}%
-                {\begin{aligned}
-                    \text{where } \env' &= \ext{\env}{\varmeta}{\nnull}\\
-                                  \val &= \funval{\stmt_{body}}{\formals}{\env'}\\
-                                  \deref{\env'(\varmeta)} &=\val \text{ after transition}\\
-                                  \varmeta &= \text{a variable declaration corresponding to identifier $\idmeta$}
-                \end{aligned}}
-        \end{multlined}
-        \label{execconf:function}
-    \end{align}
-    \caption{The CESK-transition function starting in ExecConfiguration}
-    \label{figure:exec}
-    \end{eqfigure}
-\end{figure}
-
-\begin{figure}
-    \begin{eqfigure}
-    \begin{align}
-        &\cesktrans%
-            {\contconf{\VarDeclK{\env}{\varmeta}{\scont}}{\val}}%
-            {\scontconf{\scont}{\ext{\env}{\varmeta}{\val}}}
-       \label{econtconf:vardecl}\\
-        &\begin{multlined}
-           \cesktranssplit%
-                {\contconf{\IfCondK{\stmti{1}}{\stmti{2}}}{\true}}%
-                {\execconf{\stmti{1}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cstrace,\,\cex}{\econt}{\scont}}
-        \end{multlined}
-        \label{econtconf:if-true}\\
-        &\begin{multlined}
-            \cesktranssplit%
-                {\contconf{\IfCondK{\stmti{1}}{\stmti{2}}}{\false}}%
-                {\execconf{\stmti{2}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cstrace,\,\cex}{\econt}{\scont}}
-        \end{multlined}
-        \label{econtconf:if-false}\\
-        &\begin{multlined}
-              \cesktrans%
-                  {\contconf{\WhileCondK}{\false}}%
-                  {\scontconf{\scont}{\env}}
-        \end{multlined}
-        \label{econtconf:while-false}\\
-        &\begin{multlined}
-              \cesktranswheresplit*%
-                  {\contconf{\WhileCondK}{\true}}%
-                  {\execconf{\stmt}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cstrace,\,\cex}{\econt}{\scont'}}
-                  {\text{where $\scont' = \WhileCondSK$}}
-        \end{multlined}
-        \label{econtconf:while-true}\\
-        &\cesktrans%
-              {\contconf{\ForCondK}{\false}}%
-              {\scontconf{\scont}{\env}}
-        \label{econtconf:for-false}\\
-        &\begin{multlined}
-              \cesktranswheresplit*%
-                  {\contconf{\ForCondK}{\true}}%
-                  {\execconf{\scont}{\env'}{\lbls}{\clbls}{\strace}{\handler}{\cstrace,\,\cex}{\econt}{\scont'}}%
-                  {\text{where $\scont' = \ForSK$}}
-        \end{multlined}
-        \label{econtconf:for-true}
-    \end{align}
-    \caption{The CESK-transition function starting in ValuePassingConfiguration: statements}
-    \end{eqfigure}
-\end{figure}
-
-\begin{figure}
-    \begin{eqfigure}
-    \begin{align}
-        &\begin{multlined}
-            \cesktranssplit%
-            {\scontconf{\BlockSK{\stmt :: \stmts}{\env}}{\env'}}
-            {\execconf{\stmt}{\env'}{\lbls}{\clbls}{\strace}{\handler}{\cstrace,\,\cex}{\econt}{\scont'}}
-        \end{multlined}
-        \label{scontconf:block}\\
-        &\cesktrans%
-            {\scontconf{\BlockSK{[]}{\env}}{ \_ }}%
-            {\scontconf{\scont}{\env}},
-        \label{scontconf:block-empty}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\scontconf{\WhileCondSK}{\_}}%
-                {\evalconf{\expr}{\env}{\strace}{\cstrace}{\cex}{\econt'}}
-                {\text{where $\econt' = \WhileCondK$}}
-        \end{multlined}
-        \label{scontconf:while}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\scontconf{\ForSK}{\_}}%
-                {\evallistconf{\exprs}{\env_{new}}{st}{cex}{cst}{\acont}}%
-                {\parbox{\textwidth-2cm}{where $\acont = \ForUpdatesA{\expressionmeta}{\env_{new}}$,\\
-                    $\env_{new} = \extend(\env, \varmeta{s}, \vals)$, $\vals = \{\val_i \mid \deref(\env'(\varmeta_i))\}$}}
-        \end{multlined}
-        \label{scontconf:for}
-    \end{align}
-    \caption{The CESK-transition function starting in ForwardConfiguration: statements}
-    \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Variable Declaration}
-
-Execution of a variable declaration statement proceeds by evaluating the right-hand side expression as shown in \eqref{execconf:vardecl}.
-After the evaluation of the initializer expression to a value $\val$, the corresponding environment is extended with a new binding to a location that stores the value $\val$, as shown in \eqref{econtconf:vardecl}.
-
-
-\subsubsection{Empty Statement}
-\label{subsubsec:emtpy-stmt}
-
-Execution of empty statement proceeds to the next ForwardConfiguration, as shown in \eqref{execconf:empty}.
-
-
-\subsubsection{Expression Statement}
-\label{expression-stmt}
-
-Execution of expression statement proceeds by evaluating the expression, as shown in \eqref{execconf:expresion}.
-
-
-\subsubsection{Block Statements}
-
-Execution of block statements proceeds by executing each statement of the block with the environment function after the execution of the previous statement.
-The CESK-transition function for block statements is shown in \eqref{execconf:block}, \eqref{scontconf:block} and \eqref{scontconf:block-empty}.
-
-
-\subsubsection{If Statement}
-
-Execution of conditional statements proceeds by evaluating the condition to a value, as shown in \eqref{execconf:if}.
-The expression continuation for the execution of the rest of the statement will dispatch on the value the condition expression evaluates to and produce a configuration for the execution of the next statement, as shown in \eqref{econtconf:if-true} and \eqref{econtconf:if-false}.
-
-
-\subsubsection{Return Statement}
-
-\kernel{} supports return statements with or without an expression.
-In the first case, the execution proceeds with evaluation of the return expression, as shown in \eqref{execconf:return}.
-The expression continuation component in the ExecConfiguration is the return expression continuation.
-This is the expression continuation that is applied to the value the return expression evaluates to.
-When the return expression is empty, the value $\nnull$ is applied to the return expression continuation component in the ExecConfiguration as shown in \eqref{execconf:return-empty}.
-
-\begin{figure}
-    \begin{eqfigure}
-    \begin{align}
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\acontconf{\ForInitA{\nnull}}{\vals}}%
-                {\execconf{\stmt}{\env'}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont'}}%
-                {\parbox{\textwidth-2cm}{where $\env' = \extend(\env, \varmeta{s}, \vals)$,\\
-                $\scont' = \ForSK$}}
-        \end{multlined}
-        \label{acontconf:forinit-nullcond}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\acontconf{\ForInitA{\expressionmeta}}{\vals}}%
-                {\evalconf{\expressionmeta}{\env'}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\parbox{\textwidth-2cm}{where $\env' = \extend(\env, \varmeta{s}, \vals)$,\\
-                $\econt' = \ForCondK$}}
-        \end{multlined}
-        \label{acontconf:forinit}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\acontconf{\ForUpdatesA{\nnull}{\env'}}{\_}}%
-                {\evalconf{\expressionmeta}{\env'}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt' = \ForCondK$}}
-        \end{multlined}
-        \label{acontconf:forupdate-nullcond}\\
-        &\begin{multlined}
-            \cesktranswheresplit*%
-                {\acontconf{\ForUpdatesA{\expressionmeta}{\env'}}{\_}}%
-                {\evalconf{\expressionmeta}{\env'}{\strace}{\cstrace}{\cex}{\econt'}}%
-                {\text{where $\econt' = \ForCondK$}}
-        \end{multlined}
-        \label{acontconf:forupdate}
-    \end{align}
-    \caption{The CESK-transition function starting in ApplicationConfiguration: statements}
-    \end{eqfigure}
-\end{figure}
-
-
-\subsubsection{Loops}
-
-In \kernel{} there are $\dowhile$, $\forin$, $\for$ and $\while$ loop statements.
-The execution of the different loop statements is defined below:
-
-\begin{itemize}
-    \item  $\while$\\
-        The execution of  $\while$ statement loops proceeds with evaluation of the condition expression as shown in \eqref{execconf:while}.
-        The expression continuation for the execution of the remainder of the statement dispatches on the value of the condition expression.
-        The body of the while loop is executed when this value is identical to $\true$, as shown in \eqref{econtconf:while-true}.
-        Otherwise, the execution proceeds with the next ForwardConfiguration as shown in \eqref{econtconf:while-false}.
-    \item $\dowhile$\\
-        The execution of do while loop statement is similar to while loop statements.
-        First the statement body of the loop is executed as shown in \eqref{execconf:do}.
-        We add while statement continuation as next statement continuation that will evaluate the condition expression accordingly, as shown in \eqref{scontconf:while}.
-    \item $\forin$\\
-        In \kernel{}, $\forin$ loops, will be desugared into while loops and their execution will proceed as the $\while$ loop rule shown in Figure~\ref{figure:exec}.
-    \item $\for$\\
-        The execution of for loops starts with evaluation of the initializer expressions for the variable declarations in the for loop statement, as shown in \eqref{execconf:for}.
-        After the evaluation of the initializer, the application continuation is applied to extend the environment and evaluate a non null condition expression, as shown in \eqref{acontconf:forinit}.
-        When the condition expression is null, the execution of the statement proceeds to evaluation of the body of the loop, as shown in \eqref{acontconf:forinit-nullcond}.
-        After the execution of all the statements in the body of the loop, the execution proceeds to create a new environment with fresh locations for the variable declarations of the for loop.
-        That is the environment used to evaluate the update expressions, as shown in \eqref{scontconf:for}.
-        After the update step, the execution proceeds to evaluation of the condition, as in ~\eqref{acontconf:forupdate-nullcond} and \eqref{acontconf:forupdate}, depending whether there is a condition expression.
-\end{itemize}
-
-Loops $\dowhile$, $\forin$, $\for$ can be desugared to while loops with transformations performed before interpreting the program.
-
-
-\subsubsection{Labels}
-
-\kernel{} supports labelling statements, $\synt{L}: \stmt_{L}$, and breaking to L, $\bbreak \synt{L}$.
-$\bbreak \synt{L}$ completes the execution of the labelled statement and proceeds to executing the rest of the program.
-To support breaking to a label, we add a labels component, $\lbls$, to statement configurations.
-$\lbls$ represents a list of pairs mapping a labelled statement, $\synt{L}: \stmt_L$, to a break statement continuation, $\bcont$.
-Executing a labelled statement inserts a new break label, $\lbl$ in the list of labels $\lbls$.
-
-
-\subsubsection{Switch}
-
-\kernel{} supports dispatching control among a number of cases with $\switch$ statements.
-The target expression $\expr$ is evaluated and matched against the different case clauses of the switch statement.
-
-Case clauses can have multiple constant expressions and there is no implicit fall-through between cases.
-\kernel{} supports continuing to execution of a preceding case clause with continue statements where the target of the continue statement is a preceding case clause, e.g, $\continue \synt{C}$ with $\synt{C}$ = case $\expri{1..i}$: $\stmt$.
-To support continue, we add an optional $\clbls$ list, similar to the label list, which is set in a switch statement and unset otherwise.
-
-If there is a matching case clause, its statement is executed.
-A new statement continuation is added as next statement continuation that will throw when reached.
-The new statement continuation is necessary because implicit fall-through is not supported and an explicit break of the flow is required (with either of $\continue$, $\bbreak$, $\return$, $\throw$).
-
-\begin{figure}[Htp]
-  \begin{eqfigure}
-  \begin{align}
-    &\begin{multlined}
-        \cesktranswheresplit*%
-            {\contconf{\SwitchK{\scase :: \scases}{\clbls}}{\val}}%
-            {\execconf{\stmt}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\ExitSK{\nnull}}}%
-            {\begin{aligned}
-                \text{where } &\scase = \case \expri{1}, \dots, \expri{i} \synt{ : } \stmt,\\
-                              &\text{$\scase$ is a matching $\case$ clause}
-            \end{aligned}}
-    \end{multlined}
-    \label{econt:switch-matching}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-            {\contconf{\SwitchK{\scase :: \scases}{\clbls}}{\val}}%
-            {\contconf{\SwitchK{\scases}{\clbl :: \clbls}}{\val}}%
-            {\begin{aligned}
-                \text{where } &\text{$SC$ is a target of a $\mathrm{continue}$},\\
-                              &\clbl = \continuel{\scase}{\switchcont},\\
-                              &\switchcont = \ContinueK
-            \end{aligned}}
-    \end{multlined}
-    \label{econt:switch-continue}\\
-    &\begin{multlined}
-        \cesktranswheresplit*%
-            {\contconf{\SwitchK{\scase :: \scases}{\clbls}}{\val}}%
-            {\contconf{\SwitchK{\scases}{\clbls}}{\val}}%
-            {\text{where $SC$ is not a target of a $\mathrm{continue}$}},
-    \end{multlined}
-    \label{econt:switch-next}\\
-    &\cesktrans%
-        {\contconf{\SwitchK{[]}{\clbls}}{\val}}%
-        {\scontconf{\scont}{\env}}
-  \end{align}
-  \end{eqfigure}
-  \caption{The CESK-transition function starting in ValuePassingConfiguration: switch statements}
-  \label{fig:econt-switch}
-\end{figure}
-
-The execution of switch statements is shown in \eqref{execconf:switch}, where the target expression is evaluated to some value $\val$.
-
-In Figure~\ref{fig:econt-switch} we show how the SwitchEK is applied to the target value of the switch. 
-We consider three cases: if a switch case is a matching case clause, if it is a non-matching case clause target of a continue in a following switch case or a non-matching switch clause that is not the target of a continue.
-
-We add a CESK-transition that evaluates all the expressions in the associated switch cases.
-These expressions being constant, their evaluation has no side effects.
-
-A case clause is matching if is $\default$ or there is at least one of the constant expressions in the case clause identical to the target value of the switch.
-The CESK-transition function  matching case is shown in \eqref{econt:switch-matching}.
-
-If a non-matching $\case$ clause, $\scase$, is the target of a continue statement, it installs a new continue label.
-A new continue label is installed to support execution of its statement with the appropriate configuration when a continue to this clause is executed.
-The CESK-transition is shown in \eqref{econt:switch-continue}.
-
-If the switch case is not target of a continue, the execution of the switch statement proceeds to the next switch case, as shown in \eqref{econt:switch-next}.
-
-
-\subsubsection{Exceptions}
-
-\kernel{} supports structured exception handling with $\synt{try/catch}$ and $\synt{try/finally}$ statements.
-Exceptions are thrown with $\throw$ and $\rethrow$ expressions.
-To support throwing exceptions, we add a handler, $\handler$, and a stacktrace, $\strace$, component to expression configurations (and correspondingly, to statement configurations).
-To support $\rethrow$, we add an optional current error, $\cex$, and current stack trace, $\cstrace$, which are set when inside a catch block and unset otherwise.
-
-\begin{align*}
-    &\cesktrans%
-        {\contconf{\ThrowH{\strace}{\handler}}{\val}}%
-        {\throwconf{\handler}{\val}{\strace}}.
-\end{align*}
-
-$\synt{try/catch}$ handlers contain a list of on-catch handlers, environment, break labels, continue switch labels, exception handler, stacktrace, return continuation, and statement continuation.
-The handlers are tried in order to see if they match against the type of the exception.
-If none match, the exception is rethrown.
-
-\begin{align*}
-    \cesktranswherealign%
-        {\throwconf{\econt'}{\val}{\strace'}}%
-        {\execconf{\stmt}{\env'}{\lbls}{\clbls}{\handler}{inr(\val)}{inr(\strace')}{\econt}{\scont}}%
-        {\text{if $V$ is $T$}}\\
-    \cesktranswherealign%
-        {\throwconf{\econt'}{\val}{\strace'}}%
-        {\throwconf{\CatchH{cs}}{\val}{\strace'}}%
-        {\text{otherwise}}
-\end{align*}
-
-\noindent where $\econt' = \CatchH{(\synt{on T catch (e, s) }\stmt) :: cs}$ is a catch continuation containing a non-empty list of on-catch handlers, and $\env' = \extend(\env, e :: s :: [], \val :: \strace' :: [])$.
-
-When a catch handler with no on-catch handlers is reached, the exception is rethrown.
-
-\begin{align*}
-    &\cesktrans%
-        {\throwconf{\CatchH{[]}}{\val}{\strace'}}%
-        {\throwconf{\handler}{\val}{\strace'}}
-\end{align*}
-
-$\synt{try/finally}$ handlers contain a statement, environment, break labels, continue switch labels, exception handler, stacktrace, and return continuation.
-Note that they do not contain a statement continuation because when control falls off the end of the finally statement the exception is rethrown.
-The statement is unconditionally executed:
-
-\begin{align*}
-    &\begin{multlined}
-        \cesktranssplit%
-            {\throwconf{\FinallyK{\stmt}}{\val}{\strace'}}%
-            {\execconf{\stmt}{\env}{\lbls}{\clbls}{\handler}{inl()}{inl()}{\econt}{\RethrowSK{\val}{\strace'}{\handler}}},
-    \end{multlined}\\
-    &\cesktrans%
-        {\scontconf{\RethrowSK{\val}{\strace}{\handler}}{\_}}%
-        {\throwconf{\handler}{\val}{\strace}}.
-\end{align*}
-
-$\synt{try/catch}$ statements execute their body with a new handler.
-\begin{align*}
-    \begin{multlined}
-            \cesktranswheresplit*%
-                {\execconf{\TryCatch{\stmt}{cs}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\execconf{\stmt}{\env}{\lbls}{\clbls}{\strace}{\handler'}{\cex,\,\cstrace}{\econt}{\scont}}%
-                {\text{where $\handler' = \CatchH{cs}$}}
-        \end{multlined}
-\end{align*}
-
-$\synt{try/finally}$ statements execute their body with a new handler and additionally install new break and continue switch labels, a new return continuation, and a new statement continuation:
-
-\begin{align*}
-    &\begin{multlined}
-        \cesktranssplit
-            {\execconf{\TryFinally{\stmti{0}}{\stmti{1}}}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-            {\execconf{\stmti{0}}{\env}{\lbls'}{\clbls'}{\handler'}{\cex}{\cstrace}{\econt'}{\scont'}}
-    \end{multlined}
-\end{align*}
-
-\noindent where
-\[
-\begin{aligned}
-    \handler' &= \FinallyK{\stmti{0}},\\
-    \econt' &= \FinallyReturnK{\stmti{1}},\\
-    \scont' &= \FinallySK{\stmti{1}},\\
-    \lbls' &= \lbrace \mathrm{Label}(L, \bcont') \mid \mathrm{Label}(L, \bcont) \in \lbls\rbrace,\\
-    \bcont' &= \FinallyBreak{\stmti{1}}{\bcont},\\
-    \clbls' &= \lbrace \continuel{C}{\switchcont'} \mid  \continuel{C}{\switchcont} \in \clbls\rbrace,\\
-    \switchcont' &= \FinallyContinue{\stmti{1}}{\switchcont}
-\end{aligned}
-\]
-
-
-\subsubsection{Break}
-
-$\bbreak \synt{L}$ statements break from an enclosing label $\synt{L}$ and execute the break continuation corresponding to the label in the list of labels $\lbls$.
-
-\begin{align*}
-    &\cesktrans%
-        {\breakconf{\Break{\env}{\scont}}}%
-        {\scontconf{\scont}{\env}},\\
-    &\begin{multlined}
-        \cesktranssplit%
-            {\breakconf{\FinallyBreak{\stmt}{\bcont}}}%
-            {\execconf{\stmt}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\mathrm{BreakSK}(\bcont)}},
-    \end{multlined}\\
-    &\cesktrans%
-        {\scontconf{\mathrm{BreakSK}(\bcont)}{\env}}%
-        {\breakconf{\bcont}},
-\end{align*}
-
-\noindent where $\lbl = Label(L', \bcont) \in \lbls \text{ with } L' == \synt{L}$.
-
-
-\subsubsection{Continue}
-
-$\continue \synt{L}$ statements continue to executing the statement of a preceding case clause, labelled with $\synt{L}$ and execute the continue continuation corresponding to the label in the list of labels $\clbls$.
-
-\begin{align*}
-    &\begin{multlined}
-        \cesktranssplit%
-            {\switchconf{\ContinueK}}%
-            {\execconf{\stmt}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}},
-    \end{multlined}\\
-    &\begin{multlined}
-        \cesktranssplit%
-            {\switchconf{\FinallyContinue{\stmt}{\switchcont}}}%
-            {\execconf{\stmt}{\env}{\lbls}{\clbls}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\mathrm{SwitchContinueSK}(\switchcont)}},
-    \end{multlined}\\
-    &\cesktrans%
-        {\scontconf{\mathrm{SwitchContinueSK}(\switchcont)}{\env}}%
-        {\switchconf{\switchcont}},
-\end{align*}
-
-\noindent where $\clbl = \continuel{L'}{\switchcont} \in \clbls \text{ with } L' == \synt{L}$.
-
-
-\subsubsection{Function Declaration}
-
-\kernel{} supports local function declaration, where a final variable stores a function value.
-Let $F$ be a function with a body $\stmt_{body}$ and a list of formal parameters, $\formals$, and let $fun \in \dvardecl$ be the corresponding final variable declaration.
-
-
-\subsection{Event Loop}
-\label{subsec:eventloop}
-
-\dart{} supports asynchronous execution of code with async functions, await expressions, and asynchronous for-in loops.
-We introduce an event loop component to represent Dart's event loop.
-We denote the event loop with $\eventloop$.
-$\eventloop$ is a list of event continuations, elements of $\dncont$.
-\[
-    \eventloop \in \mlist{\dncont}
-\]
-
-The event loop is a list and it supports the operations defined in Section~\ref{subsubsec:semantic-list}.
-
-\subsubsection{Async}
-\label{subsubsec:async}
-% Move these macros next to the rest of the macros.
-\renewcommand{\StartNK}[4]{\mathrm{StartNK}({#1},\,{#2},\,{#3},\,\ExceptionHandlersRest,\,{#4})}
-\newcommand{\CompleteFutureEK}[1]{\mathrm{CompleteFutureEK}({#1})}
-\newcommand{\AwaitReturnNK}[2]{\mathrm{AwaitReturnNK}({#1},\,{#2})}
-\newcommand{\AwaitEK}{\mathrm{AwaitEK}(\econt)}
-\newcommand{\AsyncStaticInvA}[4]{\mathrm{AsyncStaticInvA}({#1},\,{#2},\,{#3},\,\ExceptionHandlersRest,\,{#4})}
-\newcommand{\FutureValue}[1]{\mathrm{FutureValue}(#1)}
-\newcommand{\dfuture}{\mathbf{FutureValue}}
-
-Asynchronous execution in \dart{} is supported with async functions, await expressions, and asynchronous for-in loops.
-In \kernel{} $\AwaitExpression{}$ is an expression and here we present the behaviour of invocation of asynchronous functions.
-Asynchronous \synt{for in} loops occur as statements.
-The semantics of the $\AwaitExpression{}$ expression in \kernel{} for expressions that do not evaluate to an element of $\dfuture$ does not modify the event loop.
-
-Otherwise, the await expression modifies the event loop and proceeds to a state that that applies an event continuation from the event loop, i.e. an event loop configuration.
-Invocation of asynchronous functions without an await modifies the event loop, but continues with the next continuation.
-
-Notes here are for those who will rewrite the basic async specification into full async specification.
-They should be changed in the final version.
-
-What to read:
-\begin{itemize}
-    \item The Event Loop and Dart \url{https://webdev.dartlang.org/articles/performance/event-loop}.
-
-    \item Dart Language Asynchrony Support: Phase 1 \url{https://www.dartlang.org/articles/language/await-async}.
-
-    \item Spicing Up Dart with Side Effects \url{http://dl.acm.org/citation.cfm?id=2747873}.
-
-\end{itemize}
-
-Along other things, the following is not considered in the basic version:
-\begin{itemize}
-	\item Event loop component needs to be added to all configurations.
-    \item Exception handlers should be updated with a handler that completes the future.
-
-    \item Semantics for invocations of async functions other then static invocations should be added.
-
-    \item Elements from $\dfuture$ should be specified.
-
-\end{itemize}
-
-
-When an await continuation, $\AwaitEK$, is applied to a $\FutureValue{\loc}$, it needs to "complete" the future before returning.
-Therefore, it adds an event continuation at the tail of the event loop that captures the return continuation and the location from the store corresponding to the returned future.
-It then proceeds to the head event continuation of the event loop.
-
-When the body of async function is about to be executed, we create a $\StartNK{\stmt}{\env}{\strace}{\econt'}$ event continuation that captures the body, the environment, the exception components and an expression continuation that completes the corresponding $\FutureValue{\loc}$.
-We append this event continuation to the event loop and the invocation evaluates to a future immediately.
-The created future value captures the location where the completed value of the future will eventually be stored.
-The future is completed eventually, when the above mentioned continuation from the event loop is applied.
-
-Additionally, we need to mention that the execution of the program completes when a final state is reached and the event loop is empty.
-Note that this implies the introduction of an exit state, which will not proceed to application of continuations from the event loop.
-Transition to this state will happen when a failure to handle an exception occurs.
-
-
-\begin{figure}[Htp]
-    \begin{eqfigure}
-    \begin{align}
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\AwaitExpression{\expressionmeta}}{\env}{st}{cex}{cst}{\econt}}%
-                {\evalconf{\expressionmeta}{\env}{st}{cex}{cst}{\econt'}}%
-                {\text{where } \econt' = \AwaitEK}
-        \end{multlined}\label{async:await}\\
-        &\begin{multlined}
-            \cesktranswheresplit%
-                {\evalconf{\StaticInvocation{\{\membermeta\}}{\expressionsmeta}}{\env}{\strace}{\cstrace}{\cex}{\econt}}%
-                {\evallistconf{\exprs}{\env}{\strace}{\cstrace}{\cex}{\acont}}%
-                {\begin{aligned}
-                    \text{where }
-                    \acont &= \AsyncStaticInvA{\formals}{\stmt}{\strace'}{\econt},\\
-                    \strace' &= \StaticInvocation{\{\membermeta\}}{\expressionsmeta}::\strace,\\
-                    \membermeta &\text{ is an async static method with formal parameters }\formals \text{ and body }\stmt
-                  \end{aligned}}
-        \end{multlined}\label{async:static-invoc}\\
-        &\begin{multlined}
-             \cesktranswheresplit%
-                 {\acontconf{\AsyncStaticInvA{\formals}{\stmt}{\strace}{\econt}}{\val{s}}}%
-                 {\contconf{\econt}{\val}}%
-                 {\begin{aligned}
-                     \text{where }
-                     \val &= \FutureValue{\loc}\\
-                     \loc &= \text{fresh location in the store}\\
-                     \eventloop_{R} &= \append(\eventloop_{L},\ncont)\\
-                     \ncont &= \StartNK{\stmt}{\env}{\strace}{\econt'}\\
-                     \econt' &= \CompleteFutureEK{\loc}\\
-                     \env &= \ext{\env_{empty}}{\formals}{\val{s}}
-                  \end{aligned}}
-        \end{multlined}\label{async:static-invoc-a}\\
-        &\begin{multlined}
-             \cesktranswheresplit%
-                 {\contconf{\AwaitEK}{\val}}%
-                 {\eventconf{\head(\eventloop')}{\tail(\eventloop')}}%
-                 {\begin{aligned}
-                     \text{where }
-                     \val &= \FutureValue{\loc}\\
-                     \eventloop' &= \append(\eventloop, \AwaitReturnNK{\econt}{\loc})
-                 \end{aligned}}
-        \end{multlined}\label{async:econt-future}\\
-        &\begin{multlined}
-             \cesktranswhere%
-                 {\contconf{\AwaitEK}{\val}}%
-                 {\contconf{\econt}{\val}}%
-                 {\text{where }\val \notin \dfuture}
-        \end{multlined}\label{async:econt-value}\\
-        &\begin{multlined}
-             \cesktranswheresplit%
-                 {\eventconf{\StartNK{\stmt}{\env}{\strace}{\econt}}{\eventloop}}%
-                 {\execconf{\stmt}{\env}{[]}{[]}{\strace}{\handler}{\cex,\,\cstrace}{\econt}{\scont}}%
-                 {\text{where } \scont = \ExitSK{null}}
-        \end{multlined}\label{async:startnk}\\
-         &\begin{multlined}
-             \cesktranswheresplit%
-                 {\contconf{\CompleteFutureEK{\loc}}{\val}}%
-                 {\eventconf{\head(G)}{\tail(G)}}%
-                 {\text{where } \deref{\loc} = \val \text{ after transition}}
-        \end{multlined}\label{async:complete-future}\\
-        &\begin{multlined}
-             \cesktranswhere%
-                 {\contconf{\AwaitReturnNK{\econt}{\loc}}{\eventloop}}%
-                 {\contconf{\econt}{\deref{\loc}}}%
-                 {\text{where } \deref{\loc} \neq \emptyset}
-        \end{multlined}\label{async:await-return}\\
-        &\begin{multlined}
-             \cesktranswheresplit%
-                 {\contconf{\AwaitReturnNK{\econt}{\loc}}{\eventloop}}%
-                 {\eventconf{\head(\eventloop')}{\tail(\eventloop')}}%
-                 {\text{where } \deref{\loc} = \emptyset,\,\eventloop' = \append(\eventloop,\, \AwaitReturnNK{\econt}{\loc})}
-        \end{multlined}\label{async:await-return-fail}\\
-  \end{align}
-  \end{eqfigure}
-  \caption{The CESK-transition function for await expressions}
-  \label{fig:async}
-\end{figure}
-
-\subsubsection{Sync*}
-\label{subsubsec:syncstar}
-
-
-\subsubsection{Async*}
-\label{subsubsec:asyncstar}
-
-
-\subsection{Yield}
-\todo{dmitryas: Write this section after native yield behaviour is figured out, assuming that this section is about native "yield."}
-
-\kernel{} supports suspending the execution of the body of a function with native yield statements.
-Functions containing yield statements in the body are marked with $SyncYielding$.
-
-
-\subsubsection{Yield in SyncYielding}
-\label{subsubsec:yield-in-syncyelding}
-
-
-\end{document}
-
-% vim: tw=0
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index ba9c4bb..167ad39 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -977,9 +977,9 @@
   }
 }
 
-shared_library("test_extension") {
+shared_library("entrypoints_verification_test") {
   deps = [ ":dart" ]
-  sources = [ "test_extension.c" ]
+  sources = [ "entrypoints_verification_test.cc" ]
   include_dirs = [ ".." ]
   defines = [
     # The only effect of DART_SHARED_LIB is to export the Dart API.
@@ -989,26 +989,7 @@
     cflags = [ "-fPIC" ]
   }
   if (is_win) {
-    sources += [ "test_extension_dllmain_win.cc" ]
-    libs = [ "dart.lib" ]
-    abs_root_out_dir = rebase_path(root_out_dir)
-    ldflags = [ "/LIBPATH:$abs_root_out_dir" ]
-  }
-}
-
-shared_library("entrypoints_verification_test_extension") {
-  deps = [ ":dart" ]
-  sources = [ "entrypoints_verification_test_extension.cc" ]
-  include_dirs = [ ".." ]
-  defines = [
-    # The only effect of DART_SHARED_LIB is to export the Dart API.
-    "DART_SHARED_LIB",
-  ]
-  if (is_linux || is_android) {
-    cflags = [ "-fPIC" ]
-  }
-  if (is_win) {
-    sources += [ "entrypoints_verification_test_extension_dllmain_win.cc" ]
+    # TODO(dartbug.com/40579): This wrongly links in dart.exe on precompiled.
     libs = [ "dart.lib" ]
     abs_root_out_dir = rebase_path(root_out_dir)
     ldflags = [ "/LIBPATH:$abs_root_out_dir" ]
@@ -1070,26 +1051,6 @@
   }
 }
 
-shared_library("sample_extension") {
-  deps = [ ":dart" ]
-  sources = [ "../../samples/sample_extension/sample_extension.cc" ]
-  include_dirs = [ ".." ]
-  defines = [
-    # The only effect of DART_SHARED_LIB is to export the Dart API.
-    "DART_SHARED_LIB",
-  ]
-  if (is_linux || is_android) {
-    cflags = [ "-fPIC" ]
-  }
-  if (is_win) {
-    sources +=
-        [ "../../samples/sample_extension/sample_extension_dllmain_win.cc" ]
-    libs = [ "dart.lib" ]
-    abs_root_out_dir = rebase_path(root_out_dir)
-    ldflags = [ "/LIBPATH:$abs_root_out_dir" ]
-  }
-}
-
 # DartLibFuzzer only "exists" for restricted configurations.
 if (defined(is_linux) && is_linux && defined(is_asan) && is_asan &&
     (dart_target_arch == "x64" || dart_target_arch == "arm64")) {
diff --git a/runtime/bin/builtin_impl_sources.gni b/runtime/bin/builtin_impl_sources.gni
index 9c14afb..470f0b5 100644
--- a/runtime/bin/builtin_impl_sources.gni
+++ b/runtime/bin/builtin_impl_sources.gni
@@ -25,13 +25,6 @@
   "directory_win.cc",
   "exe_utils.cc",
   "exe_utils.h",
-  "extensions.cc",
-  "extensions.h",
-  "extensions_android.cc",
-  "extensions_fuchsia.cc",
-  "extensions_linux.cc",
-  "extensions_macos.cc",
-  "extensions_win.cc",
   "fdutils.h",
   "fdutils_android.cc",
   "fdutils_fuchsia.cc",
diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc
index 61bef4b..560c7cd 100644
--- a/runtime/bin/dartutils.cc
+++ b/runtime/bin/dartutils.cc
@@ -6,7 +6,6 @@
 
 #include "bin/crypto.h"
 #include "bin/directory.h"
-#include "bin/extensions.h"
 #include "bin/file.h"
 #include "bin/io_buffer.h"
 #include "bin/namespace.h"
@@ -34,7 +33,6 @@
 
 const char* DartUtils::original_working_directory = NULL;
 const char* const DartUtils::kDartScheme = "dart:";
-const char* const DartUtils::kDartExtensionScheme = "dart-ext:";
 const char* const DartUtils::kAsyncLibURL = "dart:async";
 const char* const DartUtils::kBuiltinLibURL = "dart:_builtin";
 const char* const DartUtils::kCoreLibURL = "dart:core";
@@ -227,14 +225,6 @@
   return (strncmp(url_name, kHttpScheme, kHttpSchemeLen) == 0);
 }
 
-bool DartUtils::IsDartExtensionSchemeURL(const char* url_name) {
-  static const intptr_t kDartExtensionSchemeLen = strlen(kDartExtensionScheme);
-  // If the URL starts with "dart-ext:" then it is considered as a special
-  // extension library URL which is handled differently from other URLs.
-  return (strncmp(url_name, kDartExtensionScheme, kDartExtensionSchemeLen) ==
-          0);
-}
-
 bool DartUtils::IsDartIOLibURL(const char* url_name) {
   return (strcmp(url_name, kIOLibURL) == 0);
 }
diff --git a/runtime/bin/dartutils.h b/runtime/bin/dartutils.h
index 4eadf084..6fc2d3f 100644
--- a/runtime/bin/dartutils.h
+++ b/runtime/bin/dartutils.h
@@ -146,7 +146,6 @@
                                     const char* name,
                                     const char* val);
   static bool IsDartSchemeURL(const char* url_name);
-  static bool IsDartExtensionSchemeURL(const char* url_name);
   static bool IsDartIOLibURL(const char* url_name);
   static bool IsDartCLILibURL(const char* url_name);
   static bool IsDartHttpLibURL(const char* url_name);
@@ -253,7 +252,6 @@
   static const char* original_working_directory;
 
   static const char* const kDartScheme;
-  static const char* const kDartExtensionScheme;
   static const char* const kAsyncLibURL;
   static const char* const kBuiltinLibURL;
   static const char* const kCoreLibURL;
diff --git a/runtime/bin/entrypoints_verification_test_extension.cc b/runtime/bin/entrypoints_verification_test.cc
similarity index 84%
rename from runtime/bin/entrypoints_verification_test_extension.cc
rename to runtime/bin/entrypoints_verification_test.cc
index c2c9adb..869dfd6 100644
--- a/runtime/bin/entrypoints_verification_test_extension.cc
+++ b/runtime/bin/entrypoints_verification_test.cc
@@ -5,8 +5,12 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include "./include/dart_api.h"
-#include "./include/dart_native_api.h"
+
+// TODO(dartbug.com/40579): This requires static linking to either link
+// dart.exe or dart_precompiled_runtime.exe on Windows.
+// The sample currently fails on Windows in AOT mode.
+#include "include/dart_api.h"
+#include "include/dart_native_api.h"
 
 #define CHECK(H)                                                               \
   do {                                                                         \
@@ -25,12 +29,12 @@
     abort();                                                                   \
   }
 
-bool isDartPrecompiledRuntime = true;
+static bool is_dart_precompiled_runtime = true;
 
 // Some invalid accesses are allowed in AOT since we don't retain @pragma
 // annotations. Therefore we skip the negative tests in AOT.
 #define FAIL(name, result)                                                     \
-  if (!isDartPrecompiledRuntime) {                                             \
+  if (!is_dart_precompiled_runtime) {                                          \
     Fail(name, result);                                                        \
   }
 
@@ -42,25 +46,25 @@
 }
 
 #define FAIL_INVOKE_FIELD(name, result)                                        \
-  if (!isDartPrecompiledRuntime) {                                             \
+  if (!is_dart_precompiled_runtime) {                                          \
     FailInvokeField(name, result);                                             \
   }
 
-void FailInvokeField(const char* name, Dart_Handle result) {
+static void FailInvokeField(const char* name, Dart_Handle result) {
   ASSERT(Dart_IsApiError(result));
   const char* error = Dart_GetError(result);
   ASSERT(strstr(error, name));
   ASSERT(strstr(error, "Entry-points do not allow invoking fields"));
 }
 
-void FailClosurizeConstructor(const char* name, Dart_Handle result) {
+static void FailClosurizeConstructor(const char* name, Dart_Handle result) {
   ASSERT(Dart_IsUnhandledExceptionError(result));
   const char* error = Dart_GetError(result);
   ASSERT(strstr(error, name));
   ASSERT(strstr(error, "No static getter"));
 }
 
-void TestFields(Dart_Handle target) {
+static void TestFields(Dart_Handle target) {
   FAIL("fld0", Dart_GetField(target, Dart_NewStringFromCString("fld0")));
   FAIL("fld0",
        Dart_SetField(target, Dart_NewStringFromCString("fld0"), Dart_Null()));
@@ -89,7 +93,9 @@
       Dart_Invoke(target, Dart_NewStringFromCString("fld3"), 0, nullptr));
 }
 
-void RunTests(Dart_NativeArguments arguments) {
+DART_EXPORT void RunTests() {
+  is_dart_precompiled_runtime = Dart_IsPrecompiledRuntime();
+
   Dart_Handle lib = Dart_RootLibrary();
 
   //////// Test allocation and constructor invocation.
@@ -165,30 +171,3 @@
 
   TestFields(lib);
 }
-
-Dart_NativeFunction ResolveName(Dart_Handle name,
-                                int argc,
-                                bool* auto_setup_scope) {
-  if (auto_setup_scope == NULL) {
-    return NULL;
-  }
-  *auto_setup_scope = true;
-  return RunTests;
-}
-
-DART_EXPORT Dart_Handle
-entrypoints_verification_test_extension_Init(Dart_Handle parent_library) {
-  isDartPrecompiledRuntime = Dart_IsPrecompiledRuntime();
-
-  if (Dart_IsError(parent_library)) {
-    return parent_library;
-  }
-
-  Dart_Handle result_code =
-      Dart_SetNativeResolver(parent_library, ResolveName, NULL);
-  if (Dart_IsError(result_code)) {
-    return result_code;
-  }
-
-  return Dart_Null();
-}
diff --git a/runtime/bin/entrypoints_verification_test_extension_dllmain_win.cc b/runtime/bin/entrypoints_verification_test_extension_dllmain_win.cc
deleted file mode 100644
index 8ff69ee..0000000
--- a/runtime/bin/entrypoints_verification_test_extension_dllmain_win.cc
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "platform/globals.h"
-#if defined(DART_HOST_OS_WINDOWS)
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>  // NOLINT
-
-BOOL APIENTRY DllMain(HMODULE module, DWORD reason, LPVOID reserved) {
-  return true;
-}
-
-#endif  // defined(DART_HOST_OS_WINDOWS)
diff --git a/runtime/bin/extensions.cc b/runtime/bin/extensions.cc
deleted file mode 100644
index b33896c..0000000
--- a/runtime/bin/extensions.cc
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "bin/extensions.h"
-
-#include <stdio.h>
-
-#include "bin/dartutils.h"
-#include "bin/file.h"
-#include "bin/platform.h"
-#include "bin/utils.h"
-#include "include/dart_api.h"
-#include "platform/assert.h"
-#include "platform/globals.h"
-#include "platform/utils.h"
-
-namespace dart {
-namespace bin {
-
-static char PathSeparator() {
-  const char* sep = File::PathSeparator();
-  ASSERT(strlen(sep) == 1);
-  return sep[0];
-}
-
-void* Extensions::MakePathAndResolve(const char* dir, const char* name) {
-  // First try to find the library with a suffix specifying the architecture.
-  {
-    const char* path_components[] = {
-        dir,
-        Platform::LibraryPrefix(),
-        name,
-        "-",
-        Platform::HostArchitecture(),  // arm
-        ".",
-        Platform::LibraryExtension(),  // so
-        NULL,
-    };
-    const char* library_file = Concatenate(path_components);
-    void* library_handle = LoadExtensionLibrary(library_file);
-    if (library_handle != NULL) {
-      return library_handle;
-    }
-  }
-
-  // Fall back on a library name without the suffix.
-  {
-    const char* path_components[] = {
-        dir,
-        Platform::LibraryPrefix(),
-        name,
-        ".",
-        Platform::LibraryExtension(),  // so
-        NULL,
-    };
-    const char* library_file = Concatenate(path_components);
-    return LoadExtensionLibrary(library_file);
-  }
-}
-
-// IMPORTANT: In the absolute path case, do not extract the filename and search
-// for that by passing it to LoadLibrary. That can lead to confusion in
-// which the absolute path is wrong, and a different version of the library is
-// loaded from the standard location.
-void* Extensions::ResolveAbsPathExtension(const char* extension_path) {
-  const char* last_slash = strrchr(extension_path, PathSeparator()) + 1;
-  char* name = Utils::StrDup(last_slash);
-  char* dir = Utils::StrNDup(extension_path, last_slash - extension_path);
-  void* library_handle = MakePathAndResolve(dir, name);
-  free(dir);
-  free(name);
-  return library_handle;
-}
-
-void* Extensions::ResolveExtension(const char* extension_directory,
-                                   const char* extension_name) {
-  // If the path following dart-ext is an absolute path, then only look for the
-  // library there.
-  if (File::IsAbsolutePath(extension_name)) {
-    return ResolveAbsPathExtension(extension_name);
-  }
-
-  // If the path following dart-ext is just a file name, first look next to
-  // the importing Dart library.
-  void* library_handle =
-      MakePathAndResolve(extension_directory, extension_name);
-  if (library_handle != NULL) {
-    return library_handle;
-  }
-
-  // Then pass the library name down to the platform. E.g. dlopen will do its
-  // own search in standard search locations.
-  return MakePathAndResolve("", extension_name);
-}
-
-Dart_Handle Extensions::LoadExtension(const char* extension_directory,
-                                      const char* extension_name,
-                                      Dart_Handle parent_library) {
-  void* library_handle = ResolveExtension(extension_directory, extension_name);
-  if (library_handle == NULL) {
-    return GetError();
-  }
-
-  const char* extension = extension_name;
-  if (File::IsAbsolutePath(extension_name)) {
-    extension = strrchr(extension_name, PathSeparator()) + 1;
-  }
-
-  const char* strings[] = {extension, "_Init", NULL};
-  const char* init_function_name = Concatenate(strings);
-  void* init_function = ResolveSymbol(library_handle, init_function_name);
-  Dart_Handle result = GetError();
-  if (Dart_IsError(result)) {
-    return result;
-  }
-  ASSERT(init_function != NULL);
-  typedef Dart_Handle (*InitFunctionType)(Dart_Handle import_map);
-  InitFunctionType fn = reinterpret_cast<InitFunctionType>(init_function);
-  return (*fn)(parent_library);
-}
-
-// Concatenates a NULL terminated array of strings.
-// The returned string is scope allocated.
-const char* Extensions::Concatenate(const char** strings) {
-  int size = 1;  // null termination.
-  for (int i = 0; strings[i] != NULL; i++) {
-    size += strlen(strings[i]);
-  }
-  char* result = reinterpret_cast<char*>(Dart_ScopeAllocate(size));
-  int index = 0;
-  for (int i = 0; strings[i] != NULL; i++) {
-    index += snprintf(result + index, size - index, "%s", strings[i]);
-  }
-  ASSERT(index == size - 1);
-  ASSERT(result[size - 1] == '\0');
-  return result;
-}
-
-}  // namespace bin
-}  // namespace dart
diff --git a/runtime/bin/extensions.h b/runtime/bin/extensions.h
deleted file mode 100644
index aba3bff..0000000
--- a/runtime/bin/extensions.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#ifndef RUNTIME_BIN_EXTENSIONS_H_
-#define RUNTIME_BIN_EXTENSIONS_H_
-
-#include "include/dart_api.h"
-#include "platform/globals.h"
-
-namespace dart {
-namespace bin {
-
-class Extensions {
- public:
-  // TODO(whesse): Make extension load from a relative path relative to
-  // the library it is in.  Currently loads from current working directory.
-  static Dart_Handle LoadExtension(const char* extension_directory,
-                                   const char* extension_name,
-                                   Dart_Handle parent_library);
-
-  // Platform-specific implementations.
-  // Don't rename LoadExtensionLibrary to LoadLibrary since on Windows it
-  // conflicts with LoadLibraryW after mangling.
-  static void* LoadExtensionLibrary(const char* library_file);
-  static void* ResolveSymbol(void* lib_handle, const char* symbol);
-  static void UnloadLibrary(void* lib_handle);
-
- private:
-  static Dart_Handle GetError();
-
-  static void* MakePathAndResolve(const char* dir, const char* name);
-  static void* ResolveAbsPathExtension(const char* extension_path);
-  static void* ResolveExtension(const char* extensioion_directory,
-                                const char* extension_name);
-
-  // The returned string is scope allocated.
-  static const char* Concatenate(const char** strings);
-
-  DISALLOW_ALLOCATION();
-  DISALLOW_IMPLICIT_CONSTRUCTORS(Extensions);
-};
-
-}  // namespace bin
-}  // namespace dart
-
-#endif  // RUNTIME_BIN_EXTENSIONS_H_
diff --git a/runtime/bin/extensions_android.cc b/runtime/bin/extensions_android.cc
deleted file mode 100644
index f8f153b..0000000
--- a/runtime/bin/extensions_android.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "platform/globals.h"
-#if defined(DART_HOST_OS_ANDROID)
-
-#include <dlfcn.h>  // NOLINT
-#include "bin/extensions.h"
-
-#include "platform/assert.h"
-
-namespace dart {
-namespace bin {
-
-void* Extensions::LoadExtensionLibrary(const char* library_file) {
-  return dlopen(library_file, RTLD_LAZY);
-}
-
-void* Extensions::ResolveSymbol(void* lib_handle, const char* symbol) {
-  dlerror();
-  return dlsym(lib_handle, symbol);
-}
-
-void Extensions::UnloadLibrary(void* lib_handle) {
-  dlerror();
-  int result = dlclose(lib_handle);
-  ASSERT(result == 0);
-}
-
-Dart_Handle Extensions::GetError() {
-  const char* err_str = dlerror();
-  if (err_str != NULL) {
-    return Dart_NewApiError(err_str);
-  }
-  return Dart_Null();
-}
-
-}  // namespace bin
-}  // namespace dart
-
-#endif  // defined(DART_HOST_OS_ANDROID)
diff --git a/runtime/bin/extensions_fuchsia.cc b/runtime/bin/extensions_fuchsia.cc
deleted file mode 100644
index 637533a..0000000
--- a/runtime/bin/extensions_fuchsia.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "platform/globals.h"
-#if defined(DART_HOST_OS_FUCHSIA)
-
-#include "bin/extensions.h"
-
-#include <dlfcn.h>
-#include <fcntl.h>
-#include <lib/fdio/io.h>
-#include <zircon/dlfcn.h>
-
-#include "platform/assert.h"
-
-namespace dart {
-namespace bin {
-
-void* Extensions::LoadExtensionLibrary(const char* library_file) {
-  return dlopen(library_file, RTLD_LAZY);
-}
-
-void* Extensions::ResolveSymbol(void* lib_handle, const char* symbol) {
-  dlerror();
-  return dlsym(lib_handle, symbol);
-}
-
-void Extensions::UnloadLibrary(void* lib_handle) {
-  dlerror();
-  int result = dlclose(lib_handle);
-  ASSERT(result == 0);
-}
-
-Dart_Handle Extensions::GetError() {
-  const char* err_str = dlerror();
-  if (err_str != NULL) {
-    return Dart_NewApiError(err_str);
-  }
-  return Dart_Null();
-}
-
-}  // namespace bin
-}  // namespace dart
-
-#endif  // defined(DART_HOST_OS_FUCHSIA)
diff --git a/runtime/bin/extensions_linux.cc b/runtime/bin/extensions_linux.cc
deleted file mode 100644
index d0f3d0f..0000000
--- a/runtime/bin/extensions_linux.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "platform/globals.h"
-#if defined(DART_HOST_OS_LINUX)
-
-#include <dlfcn.h>  // NOLINT
-#include "bin/extensions.h"
-
-#include "platform/assert.h"
-
-namespace dart {
-namespace bin {
-
-void* Extensions::LoadExtensionLibrary(const char* library_file) {
-  return dlopen(library_file, RTLD_LAZY);
-}
-
-void* Extensions::ResolveSymbol(void* lib_handle, const char* symbol) {
-  dlerror();
-  return dlsym(lib_handle, symbol);
-}
-
-void Extensions::UnloadLibrary(void* lib_handle) {
-  dlerror();
-  int result = dlclose(lib_handle);
-  ASSERT(result == 0);
-}
-
-Dart_Handle Extensions::GetError() {
-  const char* err_str = dlerror();
-  if (err_str != NULL) {
-    return Dart_NewApiError(err_str);
-  }
-  return Dart_Null();
-}
-
-}  // namespace bin
-}  // namespace dart
-
-#endif  // defined(DART_HOST_OS_LINUX)
diff --git a/runtime/bin/extensions_macos.cc b/runtime/bin/extensions_macos.cc
deleted file mode 100644
index b5be677..0000000
--- a/runtime/bin/extensions_macos.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "platform/globals.h"
-#if defined(DART_HOST_OS_MACOS)
-
-#include <dlfcn.h>  // NOLINT
-#include "bin/extensions.h"
-
-#include "platform/assert.h"
-
-namespace dart {
-namespace bin {
-
-void* Extensions::LoadExtensionLibrary(const char* library_file) {
-  return dlopen(library_file, RTLD_LAZY);
-}
-
-void* Extensions::ResolveSymbol(void* lib_handle, const char* symbol) {
-  dlerror();
-  return dlsym(lib_handle, symbol);
-}
-
-void Extensions::UnloadLibrary(void* lib_handle) {
-  dlerror();
-  int result = dlclose(lib_handle);
-  ASSERT(result == 0);
-}
-
-Dart_Handle Extensions::GetError() {
-  const char* err_str = dlerror();
-  if (err_str != NULL) {
-    return Dart_NewApiError(err_str);
-  }
-  return Dart_Null();
-}
-
-}  // namespace bin
-}  // namespace dart
-
-#endif  // defined(DART_HOST_OS_MACOS)
diff --git a/runtime/bin/extensions_win.cc b/runtime/bin/extensions_win.cc
deleted file mode 100644
index d17d843..0000000
--- a/runtime/bin/extensions_win.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "platform/globals.h"
-#if defined(DART_HOST_OS_WINDOWS)
-
-#include "bin/extensions.h"
-#include "bin/utils.h"
-#include "bin/utils_win.h"
-#include "platform/assert.h"
-
-namespace dart {
-namespace bin {
-
-void* Extensions::LoadExtensionLibrary(const char* library_file) {
-  SetLastError(0);
-
-  // Convert to wchar_t string.
-  int name_len = MultiByteToWideChar(CP_UTF8, 0, library_file, -1, NULL, 0);
-  wchar_t* name;
-  name = new wchar_t[name_len];
-  MultiByteToWideChar(CP_UTF8, 0, library_file, -1, name, name_len);
-
-  void* ext = LoadLibraryW(name);
-  delete[] name;
-  return ext;
-}
-
-void* Extensions::ResolveSymbol(void* lib_handle, const char* symbol) {
-  SetLastError(0);
-  return reinterpret_cast<void*>(
-      GetProcAddress(reinterpret_cast<HMODULE>(lib_handle), symbol));
-}
-
-void Extensions::UnloadLibrary(void* lib_handle) {
-  SetLastError(0);
-  BOOL result = FreeLibrary(reinterpret_cast<HMODULE>(lib_handle));
-  ASSERT(result);
-}
-
-Dart_Handle Extensions::GetError() {
-  int last_error = GetLastError();
-  if (last_error != 0) {
-    OSError err;
-    return Dart_NewApiError(err.message());
-  }
-  return Dart_Null();
-}
-
-}  // namespace bin
-}  // namespace dart
-
-#endif  // defined(DART_HOST_OS_WINDOWS)
diff --git a/runtime/bin/loader.cc b/runtime/bin/loader.cc
index df166696..045bf33 100644
--- a/runtime/bin/loader.cc
+++ b/runtime/bin/loader.cc
@@ -8,7 +8,6 @@
 #include "bin/dartutils.h"
 #include "bin/dfe.h"
 #include "bin/error_exit.h"
-#include "bin/extensions.h"
 #include "bin/file.h"
 #include "bin/gzip.h"
 #include "bin/lockers.h"
@@ -49,97 +48,6 @@
                      DartUtils::NewString("_Init"), kNumArgs, dart_args);
 }
 
-static bool PathContainsSeparator(const char* path) {
-  return (strchr(path, '/') != NULL) ||
-         ((strncmp(File::PathSeparator(), "/", 1) != 0) &&
-          (strstr(path, File::PathSeparator()) != NULL));
-}
-
-#define RETURN_ERROR(result)                                                   \
-  if (Dart_IsError(result)) return result;
-
-Dart_Handle Loader::LoadImportExtension(const char* url_string,
-                                        Dart_Handle library) {
-  const char* lib_uri_str = NULL;
-  Dart_Handle lib_uri = Dart_LibraryResolvedUrl(library);
-  ASSERT(!Dart_IsError(lib_uri));
-  Dart_Handle result = Dart_StringToCString(lib_uri, &lib_uri_str);
-  RETURN_ERROR(result);
-
-  UriDecoder decoder(lib_uri_str);
-  lib_uri_str = decoder.decoded();
-
-  if (strncmp(lib_uri_str, "http://", 7) == 0 ||
-      strncmp(lib_uri_str, "https://", 8) == 0 ||
-      strncmp(lib_uri_str, "data://", 7) == 0) {
-    return DartUtils::NewError(
-        "Cannot load native extensions over http: or https: or data: %s",
-        lib_uri_str);
-  }
-
-  char* lib_path = NULL;
-  if (strncmp(lib_uri_str, "file://", 7) == 0) {
-    auto path = File::UriToPath(lib_uri_str);
-    lib_path = DartUtils::DirName(path.get());
-  } else {
-    lib_path = Utils::StrDup(lib_uri_str);
-  }
-
-  const char* path = DartUtils::RemoveScheme(url_string);
-  if (!File::IsAbsolutePath(path) && PathContainsSeparator(path)) {
-    free(lib_path);
-    return DartUtils::NewError(
-        "Native extension path must be absolute, or simply the file name: %s",
-        path);
-  }
-
-  result = Extensions::LoadExtension(lib_path, path, library);
-  free(lib_path);
-  return result;
-}
-
-Dart_Handle Loader::ReloadNativeExtensions() {
-  Dart_Handle scheme =
-      Dart_NewStringFromCString(DartUtils::kDartExtensionScheme);
-  Dart_Handle extension_imports = Dart_GetImportsOfScheme(scheme);
-  RETURN_ERROR(extension_imports);
-
-  intptr_t length = -1;
-  Dart_Handle result = Dart_ListLength(extension_imports, &length);
-  RETURN_ERROR(result);
-  Dart_Handle* import_handles = reinterpret_cast<Dart_Handle*>(
-      Dart_ScopeAllocate(sizeof(Dart_Handle) * length));
-  result = Dart_ListGetRange(extension_imports, 0, length, import_handles);
-  RETURN_ERROR(result);
-  for (intptr_t i = 0; i < length; i += 2) {
-    Dart_Handle importer = import_handles[i];
-    Dart_Handle importee = import_handles[i + 1];
-
-    const char* extension_uri = NULL;
-    result = Dart_StringToCString(Dart_LibraryUrl(importee), &extension_uri);
-    RETURN_ERROR(result);
-    const char* extension_path = DartUtils::RemoveScheme(extension_uri);
-
-    const char* lib_uri = NULL;
-    result = Dart_StringToCString(Dart_LibraryUrl(importer), &lib_uri);
-    RETURN_ERROR(result);
-
-    char* lib_path = NULL;
-    if (strncmp(lib_uri, "file://", 7) == 0) {
-      auto path = File::UriToPath(lib_uri);
-      lib_path = DartUtils::DirName(path.get());
-    } else {
-      lib_path = Utils::StrDup(lib_uri);
-    }
-
-    result = Extensions::LoadExtension(lib_path, extension_path, importer);
-    free(lib_path);
-    RETURN_ERROR(result);
-  }
-
-  return Dart_True();
-}
-
 #if !defined(DART_PRECOMPILED_RUNTIME)
 static void MallocFinalizer(void* isolate_callback_data, void* peer) {
   free(peer);
@@ -185,13 +93,6 @@
                               MallocFinalizer);
     return result;
   }
-  if (tag == Dart_kImportExtensionTag) {
-    if (!DartUtils::IsDartExtensionSchemeURL(url_string)) {
-      return DartUtils::NewError(
-          "Native extensions must use the dart-ext: scheme : %s", url_string);
-    }
-    return Loader::LoadImportExtension(url_string, library);
-  }
   if (dfe.CanUseDartFrontend() && dfe.UseDartFrontend() &&
       (tag == Dart_kImportTag)) {
     // E.g., IsolateMirror.loadUri.
diff --git a/runtime/bin/loader.h b/runtime/bin/loader.h
index a9f436d..3afaa03 100644
--- a/runtime/bin/loader.h
+++ b/runtime/bin/loader.h
@@ -20,8 +20,6 @@
   static Dart_Handle InitForSnapshot(const char* snapshot_uri,
                                      IsolateData* isolate_data);
 
-  static Dart_Handle ReloadNativeExtensions();
-
   // A static tag handler that hides all usage of a loader for an isolate.
   static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag,
                                        Dart_Handle library,
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index b779f80..d3ca835 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -16,7 +16,6 @@
 #include "bin/dfe.h"
 #include "bin/error_exit.h"
 #include "bin/eventhandler.h"
-#include "bin/extensions.h"
 #include "bin/file.h"
 #include "bin/gzip.h"
 #include "bin/isolate_data.h"
@@ -238,11 +237,6 @@
     }
   }
 
-  if (isolate_run_app_snapshot) {
-    result = Loader::ReloadNativeExtensions();
-    if (Dart_IsError(result)) goto failed;
-  }
-
   Dart_ExitScope();
   return true;
 
@@ -325,11 +319,6 @@
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 
   if (isolate_run_app_snapshot) {
-    Dart_Handle result = Loader::ReloadNativeExtensions();
-    CHECK_RESULT(result);
-  }
-
-  if (isolate_run_app_snapshot) {
     Dart_Handle result = Loader::InitForSnapshot(script_uri, isolate_data);
     CHECK_RESULT(result);
 #if !defined(DART_PRECOMPILED_RUNTIME)
diff --git a/runtime/bin/snapshot_utils.cc b/runtime/bin/snapshot_utils.cc
index 7361612..cf9589a 100644
--- a/runtime/bin/snapshot_utils.cc
+++ b/runtime/bin/snapshot_utils.cc
@@ -10,7 +10,6 @@
 #include "bin/dfe.h"
 #include "bin/elf_loader.h"
 #include "bin/error_exit.h"
-#include "bin/extensions.h"
 #include "bin/file.h"
 #include "bin/platform.h"
 #include "include/dart_api.h"
@@ -276,7 +275,7 @@
         isolate_snapshot_data_(isolate_snapshot_data),
         isolate_snapshot_instructions_(isolate_snapshot_instructions) {}
 
-  ~DylibAppSnapshot() { Extensions::UnloadLibrary(library_); }
+  ~DylibAppSnapshot() { Utils::UnloadDynamicLibrary(library_); }
 
   void SetBuffers(const uint8_t** vm_data_buffer,
                   const uint8_t** vm_instructions_buffer,
@@ -297,26 +296,29 @@
 };
 
 static AppSnapshot* TryReadAppSnapshotDynamicLibrary(const char* script_name) {
-  void* library = Extensions::LoadExtensionLibrary(script_name);
-  if (library == NULL) {
-    return NULL;
+  void* library = Utils::LoadDynamicLibrary(script_name);
+  if (library == nullptr) {
+    return nullptr;
   }
 
   const uint8_t* vm_data_buffer = reinterpret_cast<const uint8_t*>(
-      Extensions::ResolveSymbol(library, kVmSnapshotDataCSymbol));
+      Utils::ResolveSymbolInDynamicLibrary(library, kVmSnapshotDataCSymbol));
 
-  const uint8_t* vm_instructions_buffer = reinterpret_cast<const uint8_t*>(
-      Extensions::ResolveSymbol(library, kVmSnapshotInstructionsCSymbol));
+  const uint8_t* vm_instructions_buffer =
+      reinterpret_cast<const uint8_t*>(Utils::ResolveSymbolInDynamicLibrary(
+          library, kVmSnapshotInstructionsCSymbol));
 
-  const uint8_t* isolate_data_buffer = reinterpret_cast<const uint8_t*>(
-      Extensions::ResolveSymbol(library, kIsolateSnapshotDataCSymbol));
-  if (isolate_data_buffer == NULL) {
+  const uint8_t* isolate_data_buffer =
+      reinterpret_cast<const uint8_t*>(Utils::ResolveSymbolInDynamicLibrary(
+          library, kIsolateSnapshotDataCSymbol));
+  if (isolate_data_buffer == nullptr) {
     FATAL1("Failed to resolve symbol '%s'\n", kIsolateSnapshotDataCSymbol);
   }
 
-  const uint8_t* isolate_instructions_buffer = reinterpret_cast<const uint8_t*>(
-      Extensions::ResolveSymbol(library, kIsolateSnapshotInstructionsCSymbol));
-  if (isolate_instructions_buffer == NULL) {
+  const uint8_t* isolate_instructions_buffer =
+      reinterpret_cast<const uint8_t*>(Utils::ResolveSymbolInDynamicLibrary(
+          library, kIsolateSnapshotInstructionsCSymbol));
+  if (isolate_instructions_buffer == nullptr) {
     FATAL1("Failed to resolve symbol '%s'\n",
            kIsolateSnapshotInstructionsCSymbol);
   }
diff --git a/runtime/bin/test_extension.c b/runtime/bin/test_extension.c
deleted file mode 100644
index d0c50c5..0000000
--- a/runtime/bin/test_extension.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
- * for details. All rights reserved. Use of this source code is governed by a
- * BSD-style license that can be found in the LICENSE file.
- */
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "include/dart_api.h"
-
-#if defined(ASSERT)
-#error ASSERT already defined!
-#endif
-
-
-/* Native methods. */
-void IfNull(Dart_NativeArguments arguments) {
-  Dart_Handle object = Dart_GetNativeArgument(arguments, 0);
-  if (Dart_IsNull(object)) {
-    Dart_SetReturnValue(arguments, Dart_GetNativeArgument(arguments, 1));
-  } else {
-    Dart_SetReturnValue(arguments, object);
-  }
-}
-
-
-void ThrowMeTheBall(Dart_NativeArguments arguments) {
-  Dart_Handle object = Dart_GetNativeArgument(arguments, 0);
-  Dart_ThrowException(object);
-}
-
-
-/* Native resolver for the extension library. */
-Dart_NativeFunction ResolveName(Dart_Handle name,
-                                int argc,
-                                bool* auto_setup_scope) {
-  /* assert(Dart_IsString(name)); */
-  const char* c_name;
-  Dart_Handle check_error;
-
-  if (auto_setup_scope == NULL) {
-    return NULL;
-  }
-  *auto_setup_scope = 1;
-  check_error = Dart_StringToCString(name, &c_name);
-  if (Dart_IsError(check_error)) {
-    Dart_PropagateError(check_error);
-  }
-  if ((strcmp("TestExtension_IfNull", c_name) == 0) && (argc == 2)) {
-    return IfNull;
-  }
-  if ((strcmp("TestExtension_ThrowMeTheBall", c_name) == 0) && (argc == 1)) {
-    return ThrowMeTheBall;
-  }
-  return NULL;
-}
-
-
-/* Native entry point for the extension library. */
-DART_EXPORT Dart_Handle test_extension_Init(Dart_Handle parent_library) {
-  Dart_Handle result_code;
-  if (Dart_IsError(parent_library)) {
-    return parent_library;
-  }
-
-  result_code = Dart_SetNativeResolver(parent_library, ResolveName, NULL);
-  if (Dart_IsError(result_code)) {
-    return result_code;
-  }
-
-  return parent_library;
-}
diff --git a/runtime/bin/test_extension_dllmain_win.cc b/runtime/bin/test_extension_dllmain_win.cc
deleted file mode 100644
index 161913b..0000000
--- a/runtime/bin/test_extension_dllmain_win.cc
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#include "platform/globals.h"
-#if defined(DART_HOST_OS_WINDOWS)
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>  // NOLINT
-
-BOOL APIENTRY DllMain(HMODULE module, DWORD reason, LPVOID reserved) {
-  return true;
-}
-
-#endif  // defined(DART_HOST_OS_WINDOWS)
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index a753a56..861a87f 100644
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -3136,7 +3136,6 @@
   Dart_kCanonicalizeUrl = 0,
   Dart_kImportTag,
   Dart_kKernelTag,
-  Dart_kImportExtensionTag,
 } Dart_LibraryTag;
 
 /**
@@ -3171,10 +3170,6 @@
  * script tags. The return value should be an error or a TypedData containing
  * the kernel bytes.
  *
- * Dart_kImportExtensionTag
- *
- * This tag is used to load an external import (shared object file). The
- * extension path must have the scheme 'dart-ext:'.
  */
 typedef Dart_Handle (*Dart_LibraryTagHandler)(
     Dart_LibraryTag tag,
diff --git a/runtime/lib/ffi_dynamic_library.cc b/runtime/lib/ffi_dynamic_library.cc
index b2f8c37..afb94aa 100644
--- a/runtime/lib/ffi_dynamic_library.cc
+++ b/runtime/lib/ffi_dynamic_library.cc
@@ -8,71 +8,52 @@
 #include "vm/globals.h"
 #include "vm/native_entry.h"
 
-#if !defined(DART_HOST_OS_LINUX) && !defined(DART_HOST_OS_MACOS) &&            \
-    !defined(DART_HOST_OS_ANDROID) && !defined(DART_HOST_OS_FUCHSIA)
-// TODO(dacoharkes): Implement dynamic libraries for other targets & merge the
-// implementation with:
-// - runtime/bin/extensions.h
-// - runtime/bin/extensions_linux.cc
-// TODO(dacoharkes): Make the code from bin available in a manner similar to
-// runtime/vm/dart.h Dart_FileReadCallback.
-#else
+#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_MACOS) ||              \
+    defined(DART_HOST_OS_ANDROID) || defined(DART_HOST_OS_FUCHSIA)
 #include <dlfcn.h>
 #endif
 
 namespace dart {
 
-static void* LoadExtensionLibrary(const char* library_file) {
-#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_MACOS) ||              \
-    defined(DART_HOST_OS_ANDROID) || defined(DART_HOST_OS_FUCHSIA)
-  void* handle = dlopen(library_file, RTLD_LAZY);
-  if (handle == nullptr) {
-    char* error = dlerror();
+static void* LoadDynamicLibrary(const char* library_file) {
+  char* error = nullptr;
+  void* handle = Utils::LoadDynamicLibrary(library_file, &error);
+  if (error != nullptr) {
     const String& msg = String::Handle(String::NewFormatted(
-        "Failed to load dynamic library '%s': %s", library_file, error));
+        "Failed to load dynamic library '%s': %s",
+        library_file != nullptr ? library_file : "<process>", error));
+    free(error);
     Exceptions::ThrowArgumentError(msg);
   }
-
   return handle;
-#elif defined(DART_HOST_OS_WINDOWS)
-  SetLastError(0);  // Clear any errors.
+}
 
-  void* ext;
-
-  if (library_file == nullptr) {
-    ext = GetModuleHandle(nullptr);
-  } else {
-    // Convert to wchar_t string.
-    const int name_len =
-        MultiByteToWideChar(CP_UTF8, 0, library_file, -1, NULL, 0);
-    wchar_t* name = new wchar_t[name_len];
-    MultiByteToWideChar(CP_UTF8, 0, library_file, -1, name, name_len);
-
-    ext = LoadLibraryW(name);
-    delete[] name;
-  }
-
-  if (ext == nullptr) {
-    const int error = GetLastError();
+static void* ResolveSymbol(void* handle, const char* symbol) {
+  char* error = nullptr;
+  void* result = Utils::ResolveSymbolInDynamicLibrary(handle, symbol, &error);
+  if (error != nullptr) {
     const String& msg = String::Handle(String::NewFormatted(
-        "Failed to load dynamic library '%s': %i", library_file, error));
+        "Failed to lookup symbol '%s': %s", symbol, error));
+    free(error);
     Exceptions::ThrowArgumentError(msg);
   }
+  return result;
+}
 
-  return ext;
-#else
-  const Array& args = Array::Handle(Array::New(1));
-  args.SetAt(0,
-             String::Handle(String::New(
-                 "The dart:ffi library is not available on this platform.")));
-  Exceptions::ThrowByType(Exceptions::kUnsupported, args);
-#endif
+static bool SymbolExists(void* handle, const char* symbol) {
+  char* error = nullptr;
+  Utils::ResolveSymbolInDynamicLibrary(handle, symbol, &error);
+  if (error != nullptr) {
+    free(error);
+    return false;
+  }
+  return true;
 }
 
 DEFINE_NATIVE_ENTRY(Ffi_dl_open, 0, 1) {
   GET_NON_NULL_NATIVE_ARGUMENT(String, lib_path, arguments->NativeArgAt(0));
 
-  void* handle = LoadExtensionLibrary(lib_path.ToCString());
+  void* handle = LoadDynamicLibrary(lib_path.ToCString());
 
   return DynamicLibrary::New(handle);
 }
@@ -91,39 +72,7 @@
 }
 
 DEFINE_NATIVE_ENTRY(Ffi_dl_executableLibrary, 0, 0) {
-  return DynamicLibrary::New(LoadExtensionLibrary(nullptr));
-}
-
-static void* ResolveSymbol(void* handle, const char* symbol) {
-#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_MACOS) ||              \
-    defined(DART_HOST_OS_ANDROID) || defined(DART_HOST_OS_FUCHSIA)
-  dlerror();  // Clear any errors.
-  void* pointer = dlsym(handle, symbol);
-  char* error = dlerror();
-  if (error != nullptr) {
-    const String& msg = String::Handle(
-        String::NewFormatted("Failed to lookup symbol (%s)", error));
-    Exceptions::ThrowArgumentError(msg);
-  }
-  return pointer;
-#elif defined(DART_HOST_OS_WINDOWS)
-  SetLastError(0);
-  void* pointer = reinterpret_cast<void*>(
-      GetProcAddress(reinterpret_cast<HMODULE>(handle), symbol));
-  if (pointer == nullptr) {
-    const int error = GetLastError();
-    const String& msg = String::Handle(
-        String::NewFormatted("Failed to lookup symbol (%i)", error));
-    Exceptions::ThrowArgumentError(msg);
-  }
-  return pointer;
-#else
-  const Array& args = Array::Handle(Array::New(1));
-  args.SetAt(0,
-             String::Handle(String::New(
-                 "The dart:ffi library is not available on this platform.")));
-  Exceptions::ThrowByType(Exceptions::kUnsupported, args);
-#endif
+  return DynamicLibrary::New(LoadDynamicLibrary(nullptr));
 }
 
 DEFINE_NATIVE_ENTRY(Ffi_dl_lookup, 1, 2) {
@@ -147,25 +96,6 @@
   return Integer::NewFromUint64(handle);
 }
 
-static bool SymbolExists(void* handle, const char* symbol) {
-#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_MACOS) ||              \
-    defined(DART_HOST_OS_ANDROID) || defined(DART_HOST_OS_FUCHSIA)
-  dlerror();  // Clear previous error, if any.
-  dlsym(handle, symbol);
-  // Checking whether dlsym returns a nullptr is not enough, as the value of
-  // the symbol could actually be NULL. Check the error condition instead.
-  return dlerror() == nullptr;
-#elif defined(DART_HOST_OS_WINDOWS)
-  return GetProcAddress(reinterpret_cast<HMODULE>(handle), symbol) != nullptr;
-#else
-  const Array& args = Array::Handle(Array::New(1));
-  args.SetAt(0,
-             String::Handle(String::New(
-                 "The dart:ffi library is not available on this platform.")));
-  Exceptions::ThrowByType(Exceptions::kUnsupported, args);
-#endif
-}
-
 DEFINE_NATIVE_ENTRY(Ffi_dl_providesSymbol, 0, 2) {
   GET_NON_NULL_NATIVE_ARGUMENT(DynamicLibrary, dlib, arguments->NativeArgAt(0));
   GET_NON_NULL_NATIVE_ARGUMENT(String, argSymbolName,
diff --git a/runtime/platform/utils.cc b/runtime/platform/utils.cc
index d04c3a8..c93c84b 100644
--- a/runtime/platform/utils.cc
+++ b/runtime/platform/utils.cc
@@ -7,6 +7,11 @@
 #include "platform/allocation.h"
 #include "platform/globals.h"
 
+#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_MACOS) ||              \
+    defined(DART_HOST_OS_ANDROID) || defined(DART_HOST_OS_FUCHSIA)
+#include <dlfcn.h>
+#endif
+
 namespace dart {
 
 // Implementation is from "Hacker's Delight" by Henry S. Warren, Jr.,
@@ -347,4 +352,95 @@
   return std::unique_ptr<char, decltype(std::free)*>{str, std::free};
 }
 
+static void GetLastErrorAsString(char** error) {
+  if (error == nullptr) return;  // Nothing to do.
+
+#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_MACOS) ||              \
+    defined(DART_HOST_OS_ANDROID) || defined(DART_HOST_OS_FUCHSIA)
+  const char* status = dlerror();
+  *error = status != nullptr ? strdup(status) : nullptr;
+#elif defined(DART_HOST_OS_WINDOWS)
+  const int status = GetLastError();
+  *error = status != 0 ? Utils::SCreate("error code %i", error) : nullptr;
+#else
+  *error = Utils::StrDup("loading dynamic libraries is not supported");
+#endif
+}
+
+void* Utils::LoadDynamicLibrary(const char* library_path, char** error) {
+  void* handle = nullptr;
+
+#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_MACOS) ||              \
+    defined(DART_HOST_OS_ANDROID) || defined(DART_HOST_OS_FUCHSIA)
+  handle = dlopen(library_path, RTLD_LAZY);
+#elif defined(DART_HOST_OS_WINDOWS)
+  SetLastError(0);  // Clear any errors.
+
+  if (library_path == nullptr) {
+    handle = GetModuleHandle(nullptr);
+  } else {
+    // Convert to wchar_t string.
+    const int name_len = MultiByteToWideChar(
+        CP_UTF8, /*dwFlags=*/0, library_path, /*cbMultiByte=*/-1, nullptr, 0);
+    if (name_len != 0) {
+      std::unique_ptr<wchar_t[]> name(new wchar_t[name_len]);
+      const int written_len =
+          MultiByteToWideChar(CP_UTF8, /*dwFlags=*/0, library_path,
+                              /*cbMultiByte=*/-1, name.get(), name_len);
+      RELEASE_ASSERT(written_len == name_len);
+      handle = LoadLibraryW(name.get());
+    }
+  }
+#endif
+
+  if (handle == nullptr) {
+    GetLastErrorAsString(error);
+  }
+
+  return handle;
+}
+
+void* Utils::ResolveSymbolInDynamicLibrary(void* library_handle,
+                                           const char* symbol,
+                                           char** error) {
+  void* result = nullptr;
+
+#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_MACOS) ||              \
+    defined(DART_HOST_OS_ANDROID) || defined(DART_HOST_OS_FUCHSIA)
+  dlerror();  // Clear any errors.
+  result = dlsym(library_handle, symbol);
+  // Note: nullptr might be a valid return from dlsym. Must call dlerror
+  // to differentiate.
+  GetLastErrorAsString(error);
+  return result;
+#elif defined(DART_HOST_OS_WINDOWS)
+  SetLastError(0);
+  result = reinterpret_cast<void*>(
+      GetProcAddress(reinterpret_cast<HMODULE>(library_handle), symbol));
+#endif
+
+  if (result == nullptr) {
+    GetLastErrorAsString(error);
+  }
+
+  return result;
+}
+
+void Utils::UnloadDynamicLibrary(void* library_handle, char** error) {
+  bool ok = false;
+
+#if defined(DART_HOST_OS_LINUX) || defined(DART_HOST_OS_MACOS) ||              \
+    defined(DART_HOST_OS_ANDROID) || defined(DART_HOST_OS_FUCHSIA)
+  ok = dlclose(library_handle) == 0;
+#elif defined(DART_HOST_OS_WINDOWS)
+  SetLastError(0);  // Clear any errors.
+
+  ok = FreeLibrary(reinterpret_cast<HMODULE>(library_handle));
+#endif
+
+  if (!ok) {
+    GetLastErrorAsString(error);
+  }
+}
+
 }  // namespace dart
diff --git a/runtime/platform/utils.h b/runtime/platform/utils.h
index 84366eb..0e7a462 100644
--- a/runtime/platform/utils.h
+++ b/runtime/platform/utils.h
@@ -479,6 +479,33 @@
 
   // Returns str in a unique_ptr with free used as its deleter.
   static CStringUniquePtr CreateCStringUniquePtr(char* str);
+
+  // Load dynamic library from the given |library_path| and return the
+  // library handle. |library_path| can be |nullptr| in which case
+  // library handle representing the executable is returned.
+  // If an error occurs returns |nullptr| and populates
+  // |error| (if provided) with an error message (caller must free this message
+  // when it is no longer needed).
+  static void* LoadDynamicLibrary(const char* library_path,
+                                  char** error = nullptr);
+
+  // Resolve the given |symbol| within the library referenced by the
+  // given |library_handle|.
+  // If an error occurs populates |error| (if provided) with an error message
+  // (caller must free this message when it is no longer needed).
+  // Note: on some platforms |nullptr| is a valid value for a symbol, so to
+  // check if resolution succeeded one must instead provide non-null |error|
+  // and then check if it was populated with an error message.
+  static void* ResolveSymbolInDynamicLibrary(void* library_handle,
+                                             const char* symbol,
+                                             char** error = nullptr);
+
+  // Unload the library referenced by the given |library_handle|.
+  // If an error occurs returns |nullptr| and populates
+  // |error| (if provided) with an error message (caller must free this message
+  // when it is no longer needed).
+  static void UnloadDynamicLibrary(void* library_handle,
+                                   char** error = nullptr);
 };
 
 }  // namespace dart
diff --git a/tests/standalone/entrypoints_verification_test.dart b/runtime/tests/vm/dart/entrypoints_verification_test.dart
similarity index 85%
rename from tests/standalone/entrypoints_verification_test.dart
rename to runtime/tests/vm/dart/entrypoints_verification_test.dart
index cfc8058..a64e347 100644
--- a/tests/standalone/entrypoints_verification_test.dart
+++ b/runtime/tests/vm/dart/entrypoints_verification_test.dart
@@ -3,18 +3,16 @@
 // BSD-style license that can be found in the LICENSE file.
 //
 // VMOptions=--verify-entry-points=true
+// SharedObjects=entrypoints_verification_test
 
-import 'dart:io';
-import 'dart:convert';
-import 'dart:math';
-import 'package:path/path.dart';
-import 'package:expect/expect.dart';
-import 'dart-ext:entrypoints_verification_test_extension';
-
-void RunTest() native "RunTest";
+import 'dart:ffi';
+import './dylib_utils.dart';
 
 main() {
-  RunTest();
+  final helper = dlopenPlatformSpecific('entrypoints_verification_test');
+  final runTest =
+      helper.lookupFunction<Void Function(), void Function()>('RunTests');
+  runTest();
 
   new C();
   new D();
diff --git a/runtime/tests/vm/dart/isolates/dart_api_create_lightweight_isolate_test.dart b/runtime/tests/vm/dart/isolates/dart_api_create_lightweight_isolate_test.dart
index 2fa4962..f4005be 100644
--- a/runtime/tests/vm/dart/isolates/dart_api_create_lightweight_isolate_test.dart
+++ b/runtime/tests/vm/dart/isolates/dart_api_create_lightweight_isolate_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 // SharedObjects=ffi_test_functions
-// VMOptions=
+// VMOptions=--no-enable-isolate-groups
 // VMOptions=--enable-isolate-groups --disable-heap-verification
 
 import 'dart:async';
diff --git a/tests/standalone_2/entrypoints_verification_test.dart b/runtime/tests/vm/dart_2/entrypoints_verification_test.dart
similarity index 85%
rename from tests/standalone_2/entrypoints_verification_test.dart
rename to runtime/tests/vm/dart_2/entrypoints_verification_test.dart
index dcdc757..9cb4d08 100644
--- a/tests/standalone_2/entrypoints_verification_test.dart
+++ b/runtime/tests/vm/dart_2/entrypoints_verification_test.dart
@@ -3,20 +3,18 @@
 // BSD-style license that can be found in the LICENSE file.
 //
 // VMOptions=--verify-entry-points=true
+// SharedObjects=entrypoints_verification_test
 
 // @dart = 2.9
 
-import 'dart:io';
-import 'dart:convert';
-import 'dart:math';
-import 'package:path/path.dart';
-import 'package:expect/expect.dart';
-import 'dart-ext:entrypoints_verification_test_extension';
-
-void RunTest() native "RunTest";
+import 'dart:ffi';
+import './dylib_utils.dart';
 
 main() {
-  RunTest();
+  final helper = dlopenPlatformSpecific('entrypoints_verification_test');
+  final runTest =
+      helper.lookupFunction<Void Function(), void Function()>('RunTests');
+  runTest();
 
   new C();
   new D();
diff --git a/runtime/tests/vm/dart_2/isolates/dart_api_create_lightweight_isolate_test.dart b/runtime/tests/vm/dart_2/isolates/dart_api_create_lightweight_isolate_test.dart
index c14ce31..0a2fd1c 100644
--- a/runtime/tests/vm/dart_2/isolates/dart_api_create_lightweight_isolate_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/dart_api_create_lightweight_isolate_test.dart
@@ -5,7 +5,7 @@
 // @dart = 2.9
 
 // SharedObjects=ffi_test_functions
-// VMOptions=
+// VMOptions=--no-enable-isolate-groups
 // VMOptions=--enable-isolate-groups --disable-heap-verification
 
 import 'dart:async';
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 620a356..3ca14d8 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -369,6 +369,10 @@
 dart/thread_priority_linux_test: SkipByDesign
 dart_2/thread_priority_linux_test: SkipByDesign
 
+[ $arch != x64 || $system != linux || $hot_reload || $compiler != dartk && $compiler != dartkp ]
+dart/entrypoints_verification_test: SkipByDesign # Enough to test on x64 Linux.
+dart_2/entrypoints_verification_test: SkipByDesign # Enough to test on x64 Linux.
+
 [ $builder_tag == crossword || $builder_tag == crossword_ast ]
 dart/emit_aot_size_info_flag_test: SkipByDesign # The test itself cannot determine the location of gen_snapshot (only tools/test.py knows where it is).
 dart/gen_snapshot_include_resolved_urls_test: SkipByDesign # The test doesn't know location of cross-platform gen_snapshot.
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index 1e3544d..b5f86e7 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -196,8 +196,7 @@
   P(retain_code_objects, bool, true,                                           \
     "Serialize all code objects even if not otherwise "                        \
     "needed in the precompiled runtime.")                                      \
-  P(enable_isolate_groups, bool, false,                                        \
-    "Enable isolate group support in AOT.")                                    \
+  P(enable_isolate_groups, bool, true, "Enable isolate group support.")        \
   P(show_invisible_frames, bool, false,                                        \
     "Show invisible frames in stack traces.")                                  \
   D(trace_cha, bool, false, "Trace CHA operations")                            \
diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
index 33a86d0..71e5d04 100644
--- a/runtime/vm/isolate_reload.cc
+++ b/runtime/vm/isolate_reload.cc
@@ -722,18 +722,9 @@
   //
   // If loading the hot-reload diff succeeded we'll finalize the loading, which
   // will either commit or reject the reload request.
-  auto& result = Object::Handle(Z);
-  {
-    // We need to set an active isolate while loading kernel. The kernel loader
-    // itself is independent of the current isolate, but if the application
-    // needs native extensions, the kernel loader calls out to the embedder to
-    // load those, which requires currently an active isolate (since embedder
-    // will callback into VM using Dart API).
-    DisabledNoActiveIsolateScope active_isolate_scope(&no_active_isolate_scope);
-
-    result = IG->program_reload_context()->ReloadPhase2LoadKernel(
-        kernel_program.get(), root_lib_url_);
-  }
+  const auto& result =
+      Object::Handle(Z, IG->program_reload_context()->ReloadPhase2LoadKernel(
+                            kernel_program.get(), root_lib_url_));
 
   if (result.IsError()) {
     TIR_Print("---- LOAD FAILED, ABORTING RELOAD\n");
@@ -937,9 +928,7 @@
       if (!ns.IsNull()) {
         target = ns.target();
         target_url = target.url();
-        if (!target_url.StartsWith(Symbols::DartExtensionScheme())) {
-          (*imported_by)[target.index()]->Add(lib.index());
-        }
+        (*imported_by)[target.index()]->Add(lib.index());
       }
     }
 
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index cd29703..2aec2d0 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -590,89 +590,6 @@
   return H.StringEquals(library_name_index, library.ToCString());
 }
 
-void KernelLoader::LoadNativeExtensionLibraries() {
-  const auto& potential_extension_libraries =
-      GrowableObjectArray::Handle(Z, H.GetPotentialExtensionLibraries());
-  if (potential_extension_libraries.IsNull()) {
-    return;
-  }
-
-  // Prepare lazy constant reading.
-  ConstantReader constant_reader(&helper_, &active_class_);
-
-  // Obtain `dart:_internal::ExternalName.name`.
-  EnsureExternalClassIsLookedUp();
-
-  Instance& constant = Instance::Handle(Z);
-  String& uri_path = String::Handle(Z);
-  Library& library = Library::Handle(Z);
-
-  const intptr_t length = potential_extension_libraries.Length();
-  for (intptr_t i = 0; i < length; ++i) {
-    library ^= potential_extension_libraries.At(i);
-
-    helper_.SetOffset(library.kernel_offset());
-
-    LibraryHelper library_helper(&helper_, kernel_binary_version_);
-    library_helper.ReadUntilExcluding(LibraryHelper::kAnnotations);
-
-    const intptr_t annotation_count = helper_.ReadListLength();
-    for (intptr_t j = 0; j < annotation_count; ++j) {
-      uri_path = String::null();
-
-      const intptr_t tag = helper_.PeekTag();
-      if (tag == kConstantExpression) {
-        helper_.ReadByte();      // Skip the tag.
-        helper_.ReadPosition();  // Skip fileOffset.
-        helper_.SkipDartType();  // Skip type.
-
-        // We have a candidate. Let's look if it's an instance of the
-        // ExternalName class.
-        const intptr_t constant_table_index = helper_.ReadUInt();
-        if (constant_reader.IsInstanceConstant(constant_table_index,
-                                               external_name_class_)) {
-          constant = constant_reader.ReadConstant(constant_table_index);
-          ASSERT(constant.clazz() == external_name_class_.ptr());
-          uri_path ^= constant.GetField(external_name_field_);
-        }
-      } else {
-        helper_.SkipExpression();
-      }
-
-      if (uri_path.IsNull()) continue;
-
-      LoadNativeExtension(library, uri_path);
-
-      // Create a dummy library and add it as an import to the current
-      // library. This allows later to discover and reload this native
-      // extension, e.g. when running from an app-jit snapshot.
-      // See Loader::ReloadNativeExtensions(...) which relies on
-      // Dart_GetImportsOfScheme('dart-ext').
-      const auto& native_library = Library::Handle(Library::New(uri_path));
-      library.AddImport(Namespace::Handle(Namespace::New(
-          native_library, Array::null_array(), Array::null_array(), library)));
-    }
-  }
-}
-
-void KernelLoader::LoadNativeExtension(const Library& library,
-                                       const String& uri_path) {
-#if !defined(DART_PRECOMPILER)
-  if (!IG->HasTagHandler()) {
-    H.ReportError("no library handler registered.");
-  }
-
-  I->BlockClassFinalization();
-  const auto& result = Object::Handle(
-      Z, IG->CallTagHandler(Dart_kImportExtensionTag, library, uri_path));
-  I->UnblockClassFinalization();
-
-  if (result.IsError()) {
-    H.ReportError(Error::Cast(result), "library handler failed");
-  }
-#endif
-}
-
 ObjectPtr KernelLoader::LoadProgram(bool process_pending_classes) {
   SafepointWriteRwLocker ml(thread_, thread_->isolate_group()->program_lock());
   ASSERT(kernel_program_info_.constants() == Array::null());
@@ -712,7 +629,6 @@
     kernel_program_info_.set_constants(array);
     H.SetConstants(array);  // for caching
     AnnotateNativeProcedures();
-    LoadNativeExtensionLibraries();
     EvaluateDelayedPragmas();
 
     NameIndex main = program_->main_method();
diff --git a/runtime/vm/kernel_loader.h b/runtime/vm/kernel_loader.h
index cd3dbcb..4fe570f 100644
--- a/runtime/vm/kernel_loader.h
+++ b/runtime/vm/kernel_loader.h
@@ -227,8 +227,6 @@
   bool IsClassName(NameIndex name, const String& library, const String& klass);
 
   void AnnotateNativeProcedures();
-  void LoadNativeExtensionLibraries();
-  void LoadNativeExtension(const Library& library, const String& uri_path);
   void EvaluateDelayedPragmas();
 
   void ReadVMAnnotations(const Library& library,
diff --git a/runtime/vm/native_function.h b/runtime/vm/native_function.h
index f5db8fe..a5953bd 100644
--- a/runtime/vm/native_function.h
+++ b/runtime/vm/native_function.h
@@ -18,7 +18,7 @@
 //  - bootstrap natives, which are called directly from stub code. The callee is
 //    responsible for safepoint transitions and setting up handle scopes as
 //    needed. Only VM-defined natives are bootstrap natives; they cannot be
-//    defined by embedders or native extensions.
+//    defined by embedders.
 //  - no scope natives, which are called through a wrapper function. The wrapper
 //    function handles the safepoint transition. The callee is responsible for
 //    setting up API scopes as needed.
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 94a73e0..3577ccb 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -13148,35 +13148,7 @@
 }
 
 void Library::DropDependenciesAndCaches() const {
-  // We need to preserve the "dart-ext:" imports because they are used by
-  // Loader::ReloadNativeExtensions().
-  intptr_t native_import_count = 0;
-  Array& imports = Array::Handle(untag()->imports());
-  Namespace& ns = Namespace::Handle();
-  Library& lib = Library::Handle();
-  String& url = String::Handle();
-  for (int i = 0; i < imports.Length(); ++i) {
-    ns = Namespace::RawCast(imports.At(i));
-    if (ns.IsNull()) continue;
-    lib = ns.target();
-    url = lib.url();
-    if (url.StartsWith(Symbols::DartExtensionScheme())) {
-      native_import_count++;
-    }
-  }
-  Array& new_imports =
-      Array::Handle(Array::New(native_import_count, Heap::kOld));
-  for (int i = 0, j = 0; i < imports.Length(); ++i) {
-    ns = Namespace::RawCast(imports.At(i));
-    if (ns.IsNull()) continue;
-    lib = ns.target();
-    url = lib.url();
-    if (url.StartsWith(Symbols::DartExtensionScheme())) {
-      new_imports.SetAt(j++, ns);
-    }
-  }
-
-  untag()->set_imports(new_imports.ptr());
+  untag()->set_imports(Object::empty_array().ptr());
   untag()->set_exports(Object::empty_array().ptr());
   StoreNonPointer(&untag()->num_imports_, 0);
   untag()->set_resolved_names(Array::null());
diff --git a/runtime/vm/service/service.md b/runtime/vm/service/service.md
index 5e9b1db..1581c44 100644
--- a/runtime/vm/service/service.md
+++ b/runtime/vm/service/service.md
@@ -429,7 +429,7 @@
 the web socket connection request to DDS. If DDS disconnects from the VM service,
 the VM service will once again start accepting incoming web socket connections.
 
-The VM service forwards the web socket connection by issuing a redirect 
+The VM service forwards the web socket connection by issuing a redirect
 
 ### Protocol Extensions
 
@@ -3298,9 +3298,8 @@
   // example, memory associated with Dart objects through APIs such as
   // Dart_NewFinalizableHandle, Dart_NewWeakPersistentHandle and
   // Dart_NewExternalTypedData.  This usage is only as accurate as the values
-  // supplied to these APIs from the VM embedder or native extensions. This
-  // external memory applies GC pressure, but is separate from heapUsage and
-  // heapCapacity.
+  // supplied to these APIs from the VM embedder. This external memory applies
+  // GC pressure, but is separate from heapUsage and heapCapacity.
   int externalUsage;
 
   // The total capacity of the heap in bytes. This is the amount of memory used
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 03dd529..f5cc31c 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -61,7 +61,6 @@
   V(DartCore, "dart:core")                                                     \
   V(DartDeveloper, "dart:developer")                                           \
   V(DartDeveloperTimeline, "dart.developer.timeline")                          \
-  V(DartExtensionScheme, "dart-ext:")                                          \
   V(DartFfi, "dart:ffi")                                                       \
   V(DartInternal, "dart:_internal")                                            \
   V(DartIsVM, "dart.isVM")                                                     \
diff --git a/samples/sample_extension/.gitignore b/samples/sample_extension/.gitignore
deleted file mode 100644
index 518f7dd..0000000
--- a/samples/sample_extension/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-/Makefile
-/*.Makefile
-/*.sln
-/*.target.mk
-/*.vcproj
-/*.vcxproj
-/*.vcxproj.filters
-/*.vcxproj.user
-/*.xcodeproj
diff --git a/samples/sample_extension/README.md b/samples/sample_extension/README.md
deleted file mode 100644
index 2e13091..0000000
--- a/samples/sample_extension/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-This directory contains samples of native extensions.
-
-To run the samples, first build both the Dart SDK and the runtime. For example:
-
-```
-$ ./tools/build.py create_sdk runtime
-```
-
-Then execute the sample programs. For example:
-
-```
-$ xcodebuild/ReleaseX64/dart samples/sample_extension/test/sample_extension_test.dart
-```
diff --git a/samples/sample_extension/sample_asynchronous_extension.dart b/samples/sample_extension/sample_asynchronous_extension.dart
deleted file mode 100644
index 7d18902..0000000
--- a/samples/sample_extension/sample_asynchronous_extension.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library sample_asynchronous_extension;
-
-import 'dart:async';
-import 'dart:isolate';
-import 'dart-ext:sample_extension';
-
-// A class caches the native port used to call an asynchronous extension.
-class RandomArray {
-  static SendPort? _port;
-
-  Future<List<int>> randomArray(int seed, int length) {
-    var completer = new Completer<List<int>>();
-    var replyPort = new RawReceivePort();
-    var args = [seed, length, replyPort.sendPort];
-    _servicePort.send(args);
-    replyPort.handler = (result) {
-      replyPort.close();
-      if (result != null) {
-        completer.complete(result);
-      } else {
-        completer.completeError(new Exception("Random array creation failed"));
-      }
-    };
-    return completer.future;
-  }
-
-  SendPort get _servicePort {
-    if (_port == null) {
-      _port = _newServicePort();
-    }
-    return _port!;
-  }
-
-  SendPort _newServicePort() native "RandomArray_ServicePort";
-}
diff --git a/samples/sample_extension/sample_extension.cc b/samples/sample_extension/sample_extension.cc
deleted file mode 100644
index f183d36..0000000
--- a/samples/sample_extension/sample_extension.cc
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "include/dart_api.h"
-#include "include/dart_native_api.h"
-
-
-Dart_NativeFunction ResolveName(Dart_Handle name,
-                                int argc,
-                                bool* auto_setup_scope);
-
-
-DART_EXPORT Dart_Handle sample_extension_Init(Dart_Handle parent_library) {
-  if (Dart_IsError(parent_library)) {
-    return parent_library;
-  }
-
-  Dart_Handle result_code =
-      Dart_SetNativeResolver(parent_library, ResolveName, NULL);
-  if (Dart_IsError(result_code)) {
-    return result_code;
-  }
-
-  return Dart_Null();
-}
-
-
-Dart_Handle HandleError(Dart_Handle handle) {
-  if (Dart_IsError(handle)) {
-    Dart_PropagateError(handle);
-  }
-  return handle;
-}
-
-
-void SystemRand(Dart_NativeArguments arguments) {
-  Dart_EnterScope();
-  Dart_Handle result = HandleError(Dart_NewInteger(rand()));
-  Dart_SetReturnValue(arguments, result);
-  Dart_ExitScope();
-}
-
-
-void SystemSrand(Dart_NativeArguments arguments) {
-  Dart_EnterScope();
-  bool success = false;
-  Dart_Handle seed_object = HandleError(Dart_GetNativeArgument(arguments, 0));
-  if (Dart_IsInteger(seed_object)) {
-    bool fits;
-    HandleError(Dart_IntegerFitsIntoInt64(seed_object, &fits));
-    if (fits) {
-      int64_t seed;
-      HandleError(Dart_IntegerToInt64(seed_object, &seed));
-      srand(static_cast<unsigned>(seed));
-      success = true;
-    }
-  }
-  Dart_SetReturnValue(arguments, HandleError(Dart_NewBoolean(success)));
-  Dart_ExitScope();
-}
-
-
-uint8_t* randomArray(int seed, int length) {
-  if (length <= 0 || length > 10000000) {
-    return NULL;
-  }
-  uint8_t* values = reinterpret_cast<uint8_t*>(malloc(length));
-  if (NULL == values) {
-    return NULL;
-  }
-  srand(seed);
-  for (int i = 0; i < length; ++i) {
-    values[i] = rand() % 256;
-  }
-  return values;
-}
-
-
-void wrappedRandomArray(Dart_Port dest_port_id,
-                        Dart_CObject* message) {
-  Dart_Port reply_port_id = ILLEGAL_PORT;
-  if (message->type == Dart_CObject_kArray &&
-      3 == message->value.as_array.length) {
-    // Use .as_array and .as_int32 to access the data in the Dart_CObject.
-    Dart_CObject* param0 = message->value.as_array.values[0];
-    Dart_CObject* param1 = message->value.as_array.values[1];
-    Dart_CObject* param2 = message->value.as_array.values[2];
-    if (param0->type == Dart_CObject_kInt32 &&
-        param1->type == Dart_CObject_kInt32 &&
-        param2->type == Dart_CObject_kSendPort) {
-      int seed = param0->value.as_int32;
-      int length = param1->value.as_int32;
-      reply_port_id = param2->value.as_send_port.id;
-      uint8_t* values = randomArray(seed, length);
-
-      if (values != NULL) {
-        Dart_CObject result;
-        result.type = Dart_CObject_kTypedData;
-        result.value.as_typed_data.type = Dart_TypedData_kUint8;
-        result.value.as_typed_data.values = values;
-        result.value.as_typed_data.length = length;
-        if (Dart_PostCObject(reply_port_id, &result)) {
-          Dart_CObject error;
-          error.type = Dart_CObject_kNull;
-          Dart_PostCObject(reply_port_id, &error);
-        }
-        free(values);
-        // It is OK that result is destroyed when function exits.
-        // Dart_PostCObject has copied its data.
-        return;
-      }
-    }
-  }
-  fprintf(stderr, "Invalid message received, cannot proceed. Aborting the process.\n");
-  abort();
-}
-
-
-void randomArrayServicePort(Dart_NativeArguments arguments) {
-  Dart_EnterScope();
-  Dart_SetReturnValue(arguments, Dart_Null());
-  Dart_Port service_port =
-      Dart_NewNativePort("RandomArrayService", wrappedRandomArray, true);
-  if (service_port != ILLEGAL_PORT) {
-    Dart_Handle send_port = HandleError(Dart_NewSendPort(service_port));
-    Dart_SetReturnValue(arguments, send_port);
-  }
-  Dart_ExitScope();
-}
-
-
-struct FunctionLookup {
-  const char* name;
-  Dart_NativeFunction function;
-};
-
-
-FunctionLookup function_list[] = {
-    {"SystemRand", SystemRand},
-    {"SystemSrand", SystemSrand},
-    {"RandomArray_ServicePort", randomArrayServicePort},
-    {NULL, NULL}};
-
-
-FunctionLookup no_scope_function_list[] = {
-  {"NoScopeSystemRand", SystemRand},
-  {NULL, NULL}
-};
-
-Dart_NativeFunction ResolveName(Dart_Handle name,
-                                int argc,
-                                bool* auto_setup_scope) {
-  if (!Dart_IsString(name)) {
-    return NULL;
-  }
-  Dart_NativeFunction result = NULL;
-  if (auto_setup_scope == NULL) {
-    return NULL;
-  }
-
-  Dart_EnterScope();
-  const char* cname;
-  HandleError(Dart_StringToCString(name, &cname));
-
-  for (int i=0; function_list[i].name != NULL; ++i) {
-    if (strcmp(function_list[i].name, cname) == 0) {
-      *auto_setup_scope = true;
-      result = function_list[i].function;
-      break;
-    }
-  }
-
-  if (result != NULL) {
-    Dart_ExitScope();
-    return result;
-  }
-
-  for (int i=0; no_scope_function_list[i].name != NULL; ++i) {
-    if (strcmp(no_scope_function_list[i].name, cname) == 0) {
-      *auto_setup_scope = false;
-      result = no_scope_function_list[i].function;
-      break;
-    }
-  }
-
-  Dart_ExitScope();
-  return result;
-}
diff --git a/samples/sample_extension/sample_extension_dllmain_win.cc b/samples/sample_extension/sample_extension_dllmain_win.cc
deleted file mode 100644
index ae42335..0000000
--- a/samples/sample_extension/sample_extension_dllmain_win.cc
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#if defined(_WIN32)
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-BOOL APIENTRY DllMain(HMODULE module,
-                      DWORD  reason,
-                      LPVOID reserved) {
-  return true;
-}
-
-#endif  // defined(_WIN32)
diff --git a/samples/sample_extension/sample_synchronous_extension.dart b/samples/sample_extension/sample_synchronous_extension.dart
deleted file mode 100644
index 727cd4c..0000000
--- a/samples/sample_extension/sample_synchronous_extension.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library sample_synchronous_extension;
-
-import 'dart-ext:sample_extension';
-
-// The simplest way to call native code: top-level functions.
-int systemRand() native "SystemRand";
-int noScopeSystemRand() native "NoScopeSystemRand";
-bool systemSrand(int seed) native "SystemSrand";
diff --git a/samples/sample_extension/test/sample_extension_app_snapshot_test.dart b/samples/sample_extension/test/sample_extension_app_snapshot_test.dart
deleted file mode 100644
index 558b108..0000000
--- a/samples/sample_extension/test/sample_extension_app_snapshot_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-// OtherResources=../sample_synchronous_extension.dart
-// OtherResources=../sample_asynchronous_extension.dart
-// OtherResources=../test_sample_synchronous_extension.dart
-// OtherResources=../test_sample_asynchronous_extension.dart
-
-import 'sample_extension_test_helper.dart';
-
-void main() {
-  testNativeExtensions("app-jit");
-}
diff --git a/samples/sample_extension/test/sample_extension_test.dart b/samples/sample_extension/test/sample_extension_test.dart
deleted file mode 100644
index 4311ff5..0000000
--- a/samples/sample_extension/test/sample_extension_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-import 'sample_extension_test_helper.dart';
-
-void main() {
-  testNativeExtensions(null /* no snapshot */);
-}
diff --git a/samples/sample_extension/test/sample_extension_test_helper.dart b/samples/sample_extension/test/sample_extension_test_helper.dart
deleted file mode 100644
index a4a78ce..0000000
--- a/samples/sample_extension/test/sample_extension_test_helper.dart
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-import 'dart:async';
-import 'dart:io';
-import 'dart:isolate';
-
-import "package:expect/expect.dart";
-import "package:path/path.dart";
-
-Future copyFileToDirectory(String file, String directory) async {
-  String src = file;
-  String dst = directory;
-  ProcessResult result;
-  switch (Platform.operatingSystem) {
-    case 'linux':
-    case 'macos':
-      result = await Process.run('cp', [src, dst]);
-      break;
-    case 'windows':
-      result = await Process.run('cmd.exe', ['/C', 'copy $src $dst']);
-      break;
-    default:
-      throw 'Unknown operating system ${Platform.operatingSystem}';
-  }
-  if (result.exitCode != 0) {
-    print(result.stdout);
-    print(result.stderr);
-    throw "Failed to copy test file ($file) to temporary directory ($directory)";
-  }
-}
-
-Future run(String program, List<String> arguments) async {
-  print("+ $program ${arguments.join(' ')}");
-  ProcessResult result = await Process.run(program, arguments);
-  if (result.exitCode != 0) {
-    print('Failing process stdout: ${result.stdout}');
-    print('Failing process stderr: ${result.stderr}');
-    print('End failing process stderr');
-    Expect.fail('Test failed with exit code ${result.exitCode}');
-  }
-}
-
-Future runTests(
-    String program, String testDirectory, String? snapshotKind) async {
-  for (var test in [
-    'test_sample_synchronous_extension.dart',
-    'test_sample_asynchronous_extension.dart'
-  ]) {
-    String script = join(testDirectory, test);
-    String snapshot;
-    if (snapshotKind == null) {
-      snapshot = script;
-    } else {
-      snapshot = join(testDirectory, "$test.snapshot");
-      await run(Platform.executable, <String>[
-        ...Platform.executableArguments,
-        '--snapshot=$snapshot',
-        '--snapshot-kind=$snapshotKind',
-        script
-      ]);
-    }
-
-    await run(program, <String>[...Platform.executableArguments, snapshot]);
-  }
-}
-
-Future testNativeExtensions(String? snapshotKind) async {
-  String buildDirectory = dirname(Platform.executable);
-  Directory tempDirectory =
-      Directory.systemTemp.createTempSync('sample_extension_');
-  try {
-    String testDirectory = tempDirectory.path;
-    String sourceDirectory = Platform.script.resolve('..').toFilePath();
-
-    // Copy sample_extension dart files and sample_extension tests to the
-    // temporary test directory.
-    for (var file in [
-      'sample_synchronous_extension.dart',
-      'sample_asynchronous_extension.dart',
-      'test_sample_synchronous_extension.dart',
-      'test_sample_asynchronous_extension.dart'
-    ]) {
-      await copyFileToDirectory(join(sourceDirectory, file), testDirectory);
-    }
-
-    // Test native library resolution when it's next to the binary
-    await runTests(Platform.executable, testDirectory, snapshotKind);
-
-    // Test native library resolution when it's next to the source
-    await copyFileToDirectory(
-        join(
-            buildDirectory,
-            (Platform.isWindows ? '' : 'lib') +
-                'sample_extension' +
-                (Platform.isWindows
-                    ? '.dll'
-                    : Platform.isMacOS
-                        ? '.dylib'
-                        : '.so')),
-        testDirectory);
-    Directory tempBinDirectory = Directory(join(tempDirectory.path, 'dart-bin'))
-      ..createSync();
-    await copyFileToDirectory(Platform.executable, tempBinDirectory.path);
-    String copyPlatformExecutable =
-        join(tempBinDirectory.path, basename(Platform.executable));
-    await runTests(copyPlatformExecutable, testDirectory, snapshotKind);
-  } finally {
-    tempDirectory.deleteSync(recursive: true);
-  }
-}
diff --git a/samples/sample_extension/test_sample_asynchronous_extension.dart b/samples/sample_extension/test_sample_asynchronous_extension.dart
deleted file mode 100644
index b1fd419..0000000
--- a/samples/sample_extension/test_sample_asynchronous_extension.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_sample_extension;
-
-import 'sample_asynchronous_extension.dart';
-
-void check(bool condition, String message) {
-  if (!condition) {
-    throw new StateError(message);
-  }
-}
-
-void main() {
-  RandomArray r = new RandomArray();
-  r.randomArray(17, 100).then((list_100) {
-    r.randomArray(17, 200).then((list_200) {
-      for (var i = 0; i < 100; ++i) {
-        check(list_100[i] == list_200[i], "list_100[i] == list_200[i]");
-      }
-    });
-  });
-
-  // Gets a list of 256000 random uint8 values, using seed 19, and
-  // runs checkNormal on that list.
-  r.randomArray(19, 256000).then(checkNormal);
-}
-
-void checkNormal(List l) {
-  // Count how many times each byte value occurs.  Assert that the counts
-  // are all within a reasonable (six-sigma) range.
-  List<int> counts = new List<int>.filled(256, 0);
-  for (var e in l) {
-    counts[e]++;
-  }
-  new RandomArray().randomArray(18, 256000).then(checkCorrelation(counts));
-}
-
-dynamic Function(List<int>) checkCorrelation(List<int> counts) {
-  return (List<int> l) {
-    List<int> counts_2 = new List<int>.filled(256, 0);
-    for (var e in l) {
-      counts_2[e]++;
-    }
-    var product = 0;
-    for (var i = 0; i < 256; ++i) {
-      check(counts[i] < 1200, "counts[i] < 1200");
-      check(counts_2[i] < 1200, "counts_2[i] < 1200");
-      check(counts[i] > 800, "counts[i] > 800");
-      check(counts[i] > 800, "counts[i] > 800");
-
-      product += counts[i] * counts_2[i];
-    }
-    check(product < 256000000 * 1.001, "product < 256000000 * 1.001");
-    check(product > 256000000 * 0.999, "product > 256000000 * 0.999");
-  };
-}
diff --git a/samples/sample_extension/test_sample_synchronous_extension.dart b/samples/sample_extension/test_sample_synchronous_extension.dart
deleted file mode 100644
index ac17724..0000000
--- a/samples/sample_extension/test_sample_synchronous_extension.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_sample_extension;
-
-import 'sample_synchronous_extension.dart';
-
-void check(bool condition, String message) {
-  if (!condition) {
-    throw new StateError(message);
-  }
-}
-
-void checkSystemRand() {
-  systemSrand(17);
-  var x1 = systemRand();
-  var x2 = systemRand();
-  var x3 = systemRand();
-  check(x1 != x2, "x1 != x2");
-  check(x1 != x3, "x1 != x3");
-  check(x2 != x3, "x2 != x3");
-  systemSrand(17);
-  check(x1 == systemRand(), "x1 == systemRand()");
-  check(x2 == systemRand(), "x2 == systemRand()");
-  check(x3 == systemRand(), "x3 == systemRand()");
-  systemSrand(18);
-  check(x1 != systemRand(), "x1 != systemRand()");
-  check(x2 != systemRand(), "x2 != systemRand()");
-  check(x3 != systemRand(), "x3 != systemRand()");
-}
-
-void checkNoScopeSystemRand() {
-  systemSrand(17);
-  var x1 = noScopeSystemRand();
-  var x2 = noScopeSystemRand();
-  var x3 = noScopeSystemRand();
-  check(x1 != x2, "x1 != x2");
-  check(x1 != x3, "x1 != x3");
-  check(x2 != x3, "x2 != x3");
-  systemSrand(17);
-  check(x1 == noScopeSystemRand(), "x1 == noScopeSystemRand()");
-  check(x2 == noScopeSystemRand(), "x2 == noScopeSystemRand()");
-  check(x3 == noScopeSystemRand(), "x3 == noScopeSystemRand()");
-  systemSrand(18);
-  check(x1 != noScopeSystemRand(), "x1 != noScopeSystemRand()");
-  check(x2 != noScopeSystemRand(), "x2 != noScopeSystemRand()");
-  check(x3 != noScopeSystemRand(), "x3 != noScopeSystemRand()");
-}
-
-void main() {
-  checkSystemRand();
-  checkNoScopeSystemRand();
-}
diff --git a/samples_2/sample_extension/.gitignore b/samples_2/sample_extension/.gitignore
deleted file mode 100644
index 518f7dd..0000000
--- a/samples_2/sample_extension/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-/Makefile
-/*.Makefile
-/*.sln
-/*.target.mk
-/*.vcproj
-/*.vcxproj
-/*.vcxproj.filters
-/*.vcxproj.user
-/*.xcodeproj
diff --git a/samples_2/sample_extension/README.md b/samples_2/sample_extension/README.md
deleted file mode 100644
index 2e13091..0000000
--- a/samples_2/sample_extension/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-This directory contains samples of native extensions.
-
-To run the samples, first build both the Dart SDK and the runtime. For example:
-
-```
-$ ./tools/build.py create_sdk runtime
-```
-
-Then execute the sample programs. For example:
-
-```
-$ xcodebuild/ReleaseX64/dart samples/sample_extension/test/sample_extension_test.dart
-```
diff --git a/samples_2/sample_extension/sample_asynchronous_extension.dart b/samples_2/sample_extension/sample_asynchronous_extension.dart
deleted file mode 100644
index 541652d..0000000
--- a/samples_2/sample_extension/sample_asynchronous_extension.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// @dart = 2.9
-
-library sample_asynchronous_extension;
-
-import 'dart:async';
-import 'dart:isolate';
-import 'dart-ext:sample_extension';
-
-// A class caches the native port used to call an asynchronous extension.
-class RandomArray {
-  static SendPort _port;
-
-  Future<List<int>> randomArray(int seed, int length) {
-    var completer = new Completer<List<int>>();
-    var replyPort = new RawReceivePort();
-    var args = new List(3);
-    args[0] = seed;
-    args[1] = length;
-    args[2] = replyPort.sendPort;
-    _servicePort.send(args);
-    replyPort.handler = (result) {
-      replyPort.close();
-      if (result != null) {
-        completer.complete(result);
-      } else {
-        completer.completeError(new Exception("Random array creation failed"));
-      }
-    };
-    return completer.future;
-  }
-
-  SendPort get _servicePort {
-    if (_port == null) {
-      _port = _newServicePort();
-    }
-    return _port;
-  }
-
-  SendPort _newServicePort() native "RandomArray_ServicePort";
-}
diff --git a/samples_2/sample_extension/sample_extension.cc b/samples_2/sample_extension/sample_extension.cc
deleted file mode 100644
index 2e04cec..0000000
--- a/samples_2/sample_extension/sample_extension.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "include/dart_api.h"
-#include "include/dart_native_api.h"
-
-Dart_NativeFunction ResolveName(Dart_Handle name,
-                                int argc,
-                                bool* auto_setup_scope);
-
-DART_EXPORT Dart_Handle sample_extension_Init(Dart_Handle parent_library) {
-  if (Dart_IsError(parent_library)) {
-    return parent_library;
-  }
-
-  Dart_Handle result_code =
-      Dart_SetNativeResolver(parent_library, ResolveName, NULL);
-  if (Dart_IsError(result_code)) {
-    return result_code;
-  }
-
-  return Dart_Null();
-}
-
-Dart_Handle HandleError(Dart_Handle handle) {
-  if (Dart_IsError(handle)) {
-    Dart_PropagateError(handle);
-  }
-  return handle;
-}
-
-void SystemRand(Dart_NativeArguments arguments) {
-  Dart_EnterScope();
-  Dart_Handle result = HandleError(Dart_NewInteger(rand()));
-  Dart_SetReturnValue(arguments, result);
-  Dart_ExitScope();
-}
-
-void SystemSrand(Dart_NativeArguments arguments) {
-  Dart_EnterScope();
-  bool success = false;
-  Dart_Handle seed_object = HandleError(Dart_GetNativeArgument(arguments, 0));
-  if (Dart_IsInteger(seed_object)) {
-    bool fits;
-    HandleError(Dart_IntegerFitsIntoInt64(seed_object, &fits));
-    if (fits) {
-      int64_t seed;
-      HandleError(Dart_IntegerToInt64(seed_object, &seed));
-      srand(static_cast<unsigned>(seed));
-      success = true;
-    }
-  }
-  Dart_SetReturnValue(arguments, HandleError(Dart_NewBoolean(success)));
-  Dart_ExitScope();
-}
-
-uint8_t* randomArray(int seed, int length) {
-  if (length <= 0 || length > 10000000) {
-    return NULL;
-  }
-  uint8_t* values = reinterpret_cast<uint8_t*>(malloc(length));
-  if (NULL == values) {
-    return NULL;
-  }
-  srand(seed);
-  for (int i = 0; i < length; ++i) {
-    values[i] = rand() % 256;
-  }
-  return values;
-}
-
-void wrappedRandomArray(Dart_Port dest_port_id, Dart_CObject* message) {
-  Dart_Port reply_port_id = ILLEGAL_PORT;
-  if (message->type == Dart_CObject_kArray &&
-      3 == message->value.as_array.length) {
-    // Use .as_array and .as_int32 to access the data in the Dart_CObject.
-    Dart_CObject* param0 = message->value.as_array.values[0];
-    Dart_CObject* param1 = message->value.as_array.values[1];
-    Dart_CObject* param2 = message->value.as_array.values[2];
-    if (param0->type == Dart_CObject_kInt32 &&
-        param1->type == Dart_CObject_kInt32 &&
-        param2->type == Dart_CObject_kSendPort) {
-      int seed = param0->value.as_int32;
-      int length = param1->value.as_int32;
-      reply_port_id = param2->value.as_send_port.id;
-      uint8_t* values = randomArray(seed, length);
-
-      if (values != NULL) {
-        Dart_CObject result;
-        result.type = Dart_CObject_kTypedData;
-        result.value.as_typed_data.type = Dart_TypedData_kUint8;
-        result.value.as_typed_data.values = values;
-        result.value.as_typed_data.length = length;
-        if (Dart_PostCObject(reply_port_id, &result)) {
-          Dart_CObject error;
-          error.type = Dart_CObject_kNull;
-          Dart_PostCObject(reply_port_id, &error);
-        }
-        free(values);
-        // It is OK that result is destroyed when function exits.
-        // Dart_PostCObject has copied its data.
-        return;
-      }
-    }
-  }
-  fprintf(stderr,
-          "Invalid message received, cannot proceed. Aborting the process.\n");
-  abort();
-}
-
-void randomArrayServicePort(Dart_NativeArguments arguments) {
-  Dart_EnterScope();
-  Dart_SetReturnValue(arguments, Dart_Null());
-  Dart_Port service_port =
-      Dart_NewNativePort("RandomArrayService", wrappedRandomArray, true);
-  if (service_port != ILLEGAL_PORT) {
-    Dart_Handle send_port = HandleError(Dart_NewSendPort(service_port));
-    Dart_SetReturnValue(arguments, send_port);
-  }
-  Dart_ExitScope();
-}
-
-struct FunctionLookup {
-  const char* name;
-  Dart_NativeFunction function;
-};
-
-FunctionLookup function_list[] = {
-    {"SystemRand", SystemRand},
-    {"SystemSrand", SystemSrand},
-    {"RandomArray_ServicePort", randomArrayServicePort},
-    {NULL, NULL}};
-
-FunctionLookup no_scope_function_list[] = {{"NoScopeSystemRand", SystemRand},
-                                           {NULL, NULL}};
-
-Dart_NativeFunction ResolveName(Dart_Handle name,
-                                int argc,
-                                bool* auto_setup_scope) {
-  if (!Dart_IsString(name)) {
-    return NULL;
-  }
-  Dart_NativeFunction result = NULL;
-  if (auto_setup_scope == NULL) {
-    return NULL;
-  }
-
-  Dart_EnterScope();
-  const char* cname;
-  HandleError(Dart_StringToCString(name, &cname));
-
-  for (int i = 0; function_list[i].name != NULL; ++i) {
-    if (strcmp(function_list[i].name, cname) == 0) {
-      *auto_setup_scope = true;
-      result = function_list[i].function;
-      break;
-    }
-  }
-
-  if (result != NULL) {
-    Dart_ExitScope();
-    return result;
-  }
-
-  for (int i = 0; no_scope_function_list[i].name != NULL; ++i) {
-    if (strcmp(no_scope_function_list[i].name, cname) == 0) {
-      *auto_setup_scope = false;
-      result = no_scope_function_list[i].function;
-      break;
-    }
-  }
-
-  Dart_ExitScope();
-  return result;
-}
diff --git a/samples_2/sample_extension/sample_extension_dllmain_win.cc b/samples_2/sample_extension/sample_extension_dllmain_win.cc
deleted file mode 100644
index b7b7c57..0000000
--- a/samples_2/sample_extension/sample_extension_dllmain_win.cc
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-#if defined(_WIN32)
-
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-BOOL APIENTRY DllMain(HMODULE module, DWORD reason, LPVOID reserved) {
-  return true;
-}
-
-#endif  // defined(_WIN32)
diff --git a/samples_2/sample_extension/sample_synchronous_extension.dart b/samples_2/sample_extension/sample_synchronous_extension.dart
deleted file mode 100644
index e5ad660..0000000
--- a/samples_2/sample_extension/sample_synchronous_extension.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// @dart = 2.9
-
-library sample_synchronous_extension;
-
-import 'dart-ext:sample_extension';
-
-// The simplest way to call native code: top-level functions.
-int systemRand() native "SystemRand";
-int noScopeSystemRand() native "NoScopeSystemRand";
-bool systemSrand(int seed) native "SystemSrand";
diff --git a/samples_2/sample_extension/test/sample_extension_app_snapshot_test.dart b/samples_2/sample_extension/test/sample_extension_app_snapshot_test.dart
deleted file mode 100644
index b2eb204..0000000
--- a/samples_2/sample_extension/test/sample_extension_app_snapshot_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-// @dart = 2.9
-
-// OtherResources=../sample_synchronous_extension.dart
-// OtherResources=../sample_asynchronous_extension.dart
-// OtherResources=../test_sample_synchronous_extension.dart
-// OtherResources=../test_sample_asynchronous_extension.dart
-
-import 'sample_extension_test_helper.dart';
-
-void main() {
-  testNativeExtensions("app-jit");
-}
diff --git a/samples_2/sample_extension/test/sample_extension_test.dart b/samples_2/sample_extension/test/sample_extension_test.dart
deleted file mode 100644
index 393463b..0000000
--- a/samples_2/sample_extension/test/sample_extension_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-// @dart = 2.9
-
-import 'sample_extension_test_helper.dart';
-
-void main() {
-  testNativeExtensions(null /* no snapshot */);
-}
diff --git a/samples_2/sample_extension/test/sample_extension_test_helper.dart b/samples_2/sample_extension/test/sample_extension_test_helper.dart
deleted file mode 100644
index cabbb28..0000000
--- a/samples_2/sample_extension/test/sample_extension_test_helper.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-// @dart = 2.9
-
-import 'dart:async';
-import 'dart:io';
-import 'dart:isolate';
-
-import "package:expect/expect.dart";
-import "package:path/path.dart";
-
-Future copyFileToDirectory(String file, String directory) async {
-  String src = file;
-  String dst = directory;
-  ProcessResult result;
-  switch (Platform.operatingSystem) {
-    case 'linux':
-    case 'macos':
-      result = await Process.run('cp', [src, dst]);
-      break;
-    case 'windows':
-      result = await Process.run('cmd.exe', ['/C', 'copy $src $dst']);
-      break;
-    default:
-      throw 'Unknown operating system ${Platform.operatingSystem}';
-  }
-  if (result.exitCode != 0) {
-    print(result.stdout);
-    print(result.stderr);
-    throw "Failed to copy test file ($file) to temporary directory ($directory)";
-  }
-}
-
-Future run(String program, List<String> arguments) async {
-  print("+ $program ${arguments.join(' ')}");
-  ProcessResult result = await Process.run(program, arguments);
-  if (result.exitCode != 0) {
-    print('Failing process stdout: ${result.stdout}');
-    print('Failing process stderr: ${result.stderr}');
-    print('End failing process stderr');
-    Expect.fail('Test failed with exit code ${result.exitCode}');
-  }
-}
-
-Future runTests(
-    String program, String testDirectory, String snapshotKind) async {
-  for (var test in [
-    'test_sample_synchronous_extension.dart',
-    'test_sample_asynchronous_extension.dart'
-  ]) {
-    String script = join(testDirectory, test);
-    String snapshot;
-    if (snapshotKind == null) {
-      snapshot = script;
-    } else {
-      snapshot = join(testDirectory, "$test.snapshot");
-      await run(Platform.executable, <String>[
-        ...Platform.executableArguments,
-        '--snapshot=$snapshot',
-        '--snapshot-kind=$snapshotKind',
-        script
-      ]);
-    }
-
-    await run(program, <String>[...Platform.executableArguments, snapshot]);
-  }
-}
-
-Future testNativeExtensions(String snapshotKind) async {
-  String buildDirectory = dirname(Platform.executable);
-  Directory tempDirectory =
-      Directory.systemTemp.createTempSync('sample_extension_');
-  try {
-    String testDirectory = tempDirectory.path;
-    String sourceDirectory = Platform.script.resolve('..').toFilePath();
-
-    // Copy sample_extension dart files and sample_extension tests to the
-    // temporary test directory.
-    for (var file in [
-      'sample_synchronous_extension.dart',
-      'sample_asynchronous_extension.dart',
-      'test_sample_synchronous_extension.dart',
-      'test_sample_asynchronous_extension.dart'
-    ]) {
-      await copyFileToDirectory(join(sourceDirectory, file), testDirectory);
-    }
-
-    // Test native library resolution when it's next to the binary
-    await runTests(Platform.executable, testDirectory, snapshotKind);
-
-    // Test native library resolution when it's next to the source
-    await copyFileToDirectory(
-        join(
-            buildDirectory,
-            (Platform.isWindows ? '' : 'lib') +
-                'sample_extension' +
-                (Platform.isWindows
-                    ? '.dll'
-                    : Platform.isMacOS
-                        ? '.dylib'
-                        : '.so')),
-        testDirectory);
-    Directory tempBinDirectory = Directory(join(tempDirectory.path, 'dart-bin'))
-      ..createSync();
-    await copyFileToDirectory(Platform.executable, tempBinDirectory.path);
-    String copyPlatformExecutable =
-        join(tempBinDirectory.path, basename(Platform.executable));
-    await runTests(copyPlatformExecutable, testDirectory, snapshotKind);
-  } finally {
-    tempDirectory.deleteSync(recursive: true);
-  }
-}
diff --git a/samples_2/sample_extension/test_sample_asynchronous_extension.dart b/samples_2/sample_extension/test_sample_asynchronous_extension.dart
deleted file mode 100644
index 5ceb7c8..0000000
--- a/samples_2/sample_extension/test_sample_asynchronous_extension.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// @dart = 2.9
-
-library test_sample_extension;
-
-import 'sample_asynchronous_extension.dart';
-
-void check(bool condition, String message) {
-  if (!condition) {
-    throw new StateError(message);
-  }
-}
-
-void main() {
-  RandomArray r = new RandomArray();
-  r.randomArray(17, 100).then((list_100) {
-    r.randomArray(17, 200).then((list_200) {
-      for (var i = 0; i < 100; ++i) {
-        check(list_100[i] == list_200[i], "list_100[i] == list_200[i]");
-      }
-    });
-  });
-
-  // Gets a list of 256000 random uint8 values, using seed 19, and
-  // runs checkNormal on that list.
-  r.randomArray(19, 256000).then(checkNormal);
-}
-
-void checkNormal(List l) {
-  // Count how many times each byte value occurs.  Assert that the counts
-  // are all within a reasonable (six-sigma) range.
-  List counts = new List<int>.filled(256, 0);
-  for (var e in l) {
-    counts[e]++;
-  }
-  new RandomArray().randomArray(18, 256000).then(checkCorrelation(counts));
-}
-
-Function checkCorrelation(List counts) {
-  return (List l) {
-    List counts_2 = new List<int>.filled(256, 0);
-    for (var e in l) {
-      counts_2[e]++;
-    }
-    var product = 0;
-    for (var i = 0; i < 256; ++i) {
-      check(counts[i] < 1200, "counts[i] < 1200");
-      check(counts_2[i] < 1200, "counts_2[i] < 1200");
-      check(counts[i] > 800, "counts[i] > 800");
-      check(counts[i] > 800, "counts[i] > 800");
-
-      product += counts[i] * counts_2[i];
-    }
-    check(product < 256000000 * 1.001, "product < 256000000 * 1.001");
-    check(product > 256000000 * 0.999, "product > 256000000 * 0.999");
-  };
-}
diff --git a/samples_2/sample_extension/test_sample_synchronous_extension.dart b/samples_2/sample_extension/test_sample_synchronous_extension.dart
deleted file mode 100644
index 77d2fc3..0000000
--- a/samples_2/sample_extension/test_sample_synchronous_extension.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// @dart = 2.9
-
-library test_sample_extension;
-
-import 'sample_synchronous_extension.dart';
-
-void check(bool condition, String message) {
-  if (!condition) {
-    throw new StateError(message);
-  }
-}
-
-void checkSystemRand() {
-  systemSrand(17);
-  var x1 = systemRand();
-  var x2 = systemRand();
-  var x3 = systemRand();
-  check(x1 != x2, "x1 != x2");
-  check(x1 != x3, "x1 != x3");
-  check(x2 != x3, "x2 != x3");
-  systemSrand(17);
-  check(x1 == systemRand(), "x1 == systemRand()");
-  check(x2 == systemRand(), "x2 == systemRand()");
-  check(x3 == systemRand(), "x3 == systemRand()");
-  systemSrand(18);
-  check(x1 != systemRand(), "x1 != systemRand()");
-  check(x2 != systemRand(), "x2 != systemRand()");
-  check(x3 != systemRand(), "x3 != systemRand()");
-}
-
-void checkNoScopeSystemRand() {
-  systemSrand(17);
-  var x1 = noScopeSystemRand();
-  var x2 = noScopeSystemRand();
-  var x3 = noScopeSystemRand();
-  check(x1 != x2, "x1 != x2");
-  check(x1 != x3, "x1 != x3");
-  check(x2 != x3, "x2 != x3");
-  systemSrand(17);
-  check(x1 == noScopeSystemRand(), "x1 == noScopeSystemRand()");
-  check(x2 == noScopeSystemRand(), "x2 == noScopeSystemRand()");
-  check(x3 == noScopeSystemRand(), "x3 == noScopeSystemRand()");
-  systemSrand(18);
-  check(x1 != noScopeSystemRand(), "x1 != noScopeSystemRand()");
-  check(x2 != noScopeSystemRand(), "x2 != noScopeSystemRand()");
-  check(x3 != noScopeSystemRand(), "x3 != noScopeSystemRand()");
-}
-
-void main() {
-  checkSystemRand();
-  checkNoScopeSystemRand();
-}
diff --git a/sdk/lib/async/zone.dart b/sdk/lib/async/zone.dart
index fe6dcf0..8d4bdf9 100644
--- a/sdk/lib/async/zone.dart
+++ b/sdk/lib/async/zone.dart
@@ -587,8 +587,8 @@
 ///
 /// This is all handled internally by the platform code and most users don't need
 /// to worry about it. However, developers of new asynchronous operations,
-/// provided by the underlying system or through native extensions, must follow
-/// the protocol to be zone compatible.
+/// provided by the underlying system, must follow the protocol to be zone
+/// compatible.
 ///
 /// For convenience, zones provide [bindCallback] (and the corresponding
 /// [bindUnaryCallback] and [bindBinaryCallback]) to make it easier to respect
diff --git a/tests/standalone/io/test_extension.dart b/tests/standalone/io/test_extension.dart
deleted file mode 100644
index 4bd7d8f..0000000
--- a/tests/standalone/io/test_extension.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_extension;
-
-import "dart-ext:test_extension";
-
-class Cat {
-  Cat(this.x);
-
-  num x;
-
-  String toString() => 'cat $x';
-
-  // Implements (a != null) ? a : b using a native C++ function and the API.
-  static int? ifNull(a, b) native 'TestExtension_IfNull';
-
-  static int throwMeTheBall(ball) native 'TestExtension_ThrowMeTheBall';
-}
diff --git a/tests/standalone/io/test_extension_fail_test.dart b/tests/standalone/io/test_extension_fail_test.dart
deleted file mode 100644
index d6941e3..0000000
--- a/tests/standalone/io/test_extension_fail_test.dart
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-// OtherResources=test_extension.dart
-// OtherResources=test_extension_fail_tester.dart
-// OtherResources=test_relative_extension.dart
-// OtherResources=test_relative_extension_fail_tester.dart
-
-import "package:path/path.dart";
-import "dart:async";
-import "dart:io";
-
-Future copyFileToDirectory(String file, String directory) {
-  switch (Platform.operatingSystem) {
-    case 'linux':
-    case 'macos':
-      return Process.run('cp', [file, directory]);
-    case 'windows':
-      return Process.run('cmd.exe', ['/C', 'copy $file $directory']);
-    default:
-      throw new StateError(
-          'Unknown operating system ${Platform.operatingSystem}');
-  }
-}
-
-String getExtensionPath(String buildDirectory) {
-  switch (Platform.operatingSystem) {
-    case 'linux':
-      return join(buildDirectory, 'libtest_extension.so');
-    case 'macos':
-      return join(buildDirectory, 'libtest_extension.dylib');
-    case 'windows':
-      return join(buildDirectory, 'test_extension.dll');
-    default:
-      throw new StateError(
-          'Unknown operating system ${Platform.operatingSystem}');
-  }
-}
-
-bool checkExitCode(int code) {
-  return ((code == 255) || (code == 254) || (code == 253));
-}
-
-bool checkStdError(String err) {
-  return err.contains("Unhandled exception:") ||
-      err.contains(
-          "Native extension path must be absolute, or simply the file name");
-}
-
-// name is either "extension" or "relative_extension"
-Future test(String name, bool checkForBall) async {
-  String scriptDirectory = dirname(Platform.script.toFilePath());
-  String buildDirectory = dirname(Platform.executable);
-  Directory tempDirectory =
-      Directory.systemTemp.createTempSync('dart_test_${name}_fail');
-  String testDirectory = tempDirectory.path;
-
-  // Copy test_extension shared library, test_extension.dart and
-  // test_extension_fail_tester.dart to the temporary test directory.
-  try {
-    if (name == "extension") {
-      print(getExtensionPath(buildDirectory));
-      await copyFileToDirectory(
-          getExtensionPath(buildDirectory), testDirectory);
-    } else {
-      var extensionDir = testDirectory + "/extension";
-      Directory dir = await (new Directory(extensionDir).create());
-      await copyFileToDirectory(getExtensionPath(buildDirectory), extensionDir);
-    }
-    var extensionDartFile = join(scriptDirectory, 'test_${name}.dart');
-    await copyFileToDirectory(extensionDartFile, testDirectory);
-    var testExtensionTesterFile =
-        join(scriptDirectory, 'test_${name}_fail_tester.dart');
-    await copyFileToDirectory(testExtensionTesterFile, testDirectory);
-    var args = new List<String>.from(Platform.executableArguments)
-      ..add('--trace-loading')
-      ..add(join(testDirectory, 'test_${name}_fail_tester.dart'));
-    var result = await Process.run(Platform.executable, args);
-    print("ERR: ${result.stderr}\n\n");
-    print("OUT: ${result.stdout}\n\n");
-    if (!checkExitCode(result.exitCode)) {
-      throw new StateError("bad exit code: ${result.exitCode}");
-    }
-    if (!checkStdError(result.stderr)) {
-      throw new StateError("stderr doesn't contain unhandled exception.");
-    }
-    if (checkForBall) {
-      if (!result.stderr.contains("ball")) {
-        throw new StateError("stderr doesn't contain 'ball'.");
-      }
-    }
-  } finally {
-    tempDirectory.deleteSync(recursive: true);
-  }
-}
-
-main() async {
-  await test("extension", true);
-  await test("relative_extension", false);
-}
diff --git a/tests/standalone/io/test_extension_fail_tester.dart b/tests/standalone/io/test_extension_fail_tester.dart
deleted file mode 100644
index f2e72ae..0000000
--- a/tests/standalone/io/test_extension_fail_tester.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_extension_test;
-
-import "dart:async";
-import "dart:isolate";
-import "test_extension.dart";
-
-main() {
-  try {
-    Cat.throwMeTheBall("ball");
-  } on String catch (e) {
-    if (e != "ball") throw new StateError("exception not equal to 'ball'");
-  }
-  // Make sure the exception is thrown out to the event handler from C++ code.
-  // The harness expects the string "ball" to be thrown and the process to
-  // end with an unhandled exception.
-  Timer.run(() => Cat.throwMeTheBall("ball"));
-}
diff --git a/tests/standalone/io/test_extension_test.dart b/tests/standalone/io/test_extension_test.dart
deleted file mode 100644
index e2a11e6..0000000
--- a/tests/standalone/io/test_extension_test.dart
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-// OtherResources=test_extension.dart
-// OtherResources=test_extension_tester.dart
-
-import "package:expect/expect.dart";
-import "package:path/path.dart";
-import 'dart:async';
-import 'dart:io';
-import 'dart:isolate';
-
-Future copyFileToDirectory(String file, String directory) {
-  switch (Platform.operatingSystem) {
-    case 'android':
-    case 'linux':
-    case 'macos':
-      return Process.run('cp', [file, directory]);
-    case 'windows':
-      return Process.run('cmd.exe', ['/C', 'copy $file $directory']);
-    default:
-      Expect.fail('Unknown operating system ${Platform.operatingSystem}');
-  }
-  throw 'Unknown operating system ${Platform.operatingSystem}';
-}
-
-// Returns a list containing the source file name in the first element and the
-// target file name in the second element.
-List<String> getExtensionNames(String arch) {
-  switch (Platform.operatingSystem) {
-    case 'android':
-    case 'linux':
-      return ['libtest_extension.so', 'libtest_extension$arch.so'];
-    case 'macos':
-      return ['libtest_extension.dylib', 'libtest_extension$arch.dylib'];
-    case 'windows':
-      return ['test_extension.dll', 'test_extension$arch.dll'];
-    default:
-      Expect.fail('Unknown operating system ${Platform.operatingSystem}');
-  }
-  throw 'Unknown operating system ${Platform.operatingSystem}';
-}
-
-String getExtensionPath(String buildDirectory, String filename) {
-  return join(buildDirectory, filename);
-}
-
-String getArchFromBuildDir(String buildDirectory) {
-  if (buildDirectory.endsWith('SIMARM')) return '';
-  if (buildDirectory.endsWith('SIMARM64')) return '';
-  if (buildDirectory.endsWith('ARM')) return '-arm';
-  if (buildDirectory.endsWith('ARM64')) return '-arm64';
-  if (buildDirectory.endsWith('IA32')) return '-ia32';
-  if (buildDirectory.endsWith('X64')) return '-x64';
-  return 'unknown';
-}
-
-Future testExtension(bool withArchSuffix) async {
-  String scriptDirectory = dirname(Platform.script.toFilePath());
-  String buildDirectory = dirname(Platform.executable);
-  Directory tempDirectory =
-      Directory.systemTemp.createTempSync('dart_test_extension');
-  String testDirectory = tempDirectory.path;
-
-  List<String> fileNames;
-  if (withArchSuffix) {
-    String arch = getArchFromBuildDir(buildDirectory);
-    fileNames = getExtensionNames(arch);
-  } else {
-    fileNames = getExtensionNames('');
-  }
-
-  try {
-    // Copy test_extension shared library, test_extension.dart and
-    // test_extension_tester.dart to the temporary test directory.
-    await copyFileToDirectory(getExtensionPath(buildDirectory, fileNames[0]),
-        join(testDirectory, fileNames[1]));
-
-    var extensionDartFile = join(scriptDirectory, 'test_extension.dart');
-    await copyFileToDirectory(extensionDartFile, testDirectory);
-
-    var testExtensionTesterFile =
-        join(scriptDirectory, 'test_extension_tester.dart');
-    await copyFileToDirectory(testExtensionTesterFile, testDirectory);
-
-    var args = new List<String>.from(Platform.executableArguments)
-      ..add(join(testDirectory, 'test_extension_tester.dart'));
-    ProcessResult result = await Process.run(Platform.executable, args);
-
-    if (result.exitCode != 0) {
-      print('Subprocess failed with exit code ${result.exitCode}');
-      print('stdout:');
-      print('${result.stdout}');
-      print('stderr:');
-      print('${result.stderr}');
-    }
-    Expect.equals(0, result.exitCode);
-  } finally {
-    tempDirectory.deleteSync(recursive: true);
-  }
-}
-
-Future testWithArchSuffix() {
-  return testExtension(true);
-}
-
-Future testWithoutArchSuffix() {
-  return testExtension(false);
-}
-
-main() async {
-  await testWithArchSuffix();
-  await testWithoutArchSuffix();
-}
diff --git a/tests/standalone/io/test_extension_tester.dart b/tests/standalone/io/test_extension_tester.dart
deleted file mode 100644
index 7a3308c..0000000
--- a/tests/standalone/io/test_extension_tester.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// VMOptions=--enable-isolate-groups
-// VMOptions=--no-enable-isolate-groups
-
-library test_extension_test;
-
-import 'dart:isolate';
-
-import "test_extension.dart";
-
-class Expect {
-  static void equals(expected, actual, [msg]) {
-    if (expected != actual) {
-      if (msg == null) msg = "Expected: $expected. Actual: $actual";
-      throw new StateError(msg);
-    }
-  }
-
-  static void isNull(x, [msg]) {
-    if (x != null) {
-      if (msg != null) msg = "$x not null";
-      throw new StateError(msg);
-    }
-  }
-}
-
-isolateHandler(_) {}
-
-main() async {
-  Expect.equals('cat 13', new Cat(13).toString(), 'new Cat(13).toString()');
-
-  Expect.equals(3, Cat.ifNull(null, 3), 'Cat.ifNull(null, 3)');
-  Expect.equals(4, Cat.ifNull(4, null), 'Cat.ifNull(4, null)');
-  Expect.equals(5, Cat.ifNull(5, 9), 'Cat.ifNull(5, 9)');
-  Expect.isNull(Cat.ifNull(null, null), 'Cat.ifNull(null, null)');
-
-  try {
-    Cat.throwMeTheBall("ball");
-  } on String catch (e) {
-    Expect.equals("ball", e);
-  }
-
-  await Isolate.spawn(isolateHandler, []);
-}
diff --git a/tests/standalone/io/test_relative_extension.dart b/tests/standalone/io/test_relative_extension.dart
deleted file mode 100644
index 79f9489..0000000
--- a/tests/standalone/io/test_relative_extension.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library test_extension;
-
-import "dart-ext:extension/test_extension";
-
-class Cat {
-  Cat(this.x);
-
-  num x;
-
-  String toString() => 'cat $x';
-
-  // Implements (a != null) ? a : b using a native C++ function and the API.
-  static int ifNull(a, b) native 'TestExtension_IfNull';
-
-  static int throwMeTheBall(ball) native 'TestExtension_ThrowMeTheBall';
-}
diff --git a/tests/standalone_2/io/test_extension.dart b/tests/standalone_2/io/test_extension.dart
deleted file mode 100644
index 2cf249a..0000000
--- a/tests/standalone_2/io/test_extension.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// @dart = 2.9
-
-library test_extension;
-
-import "dart-ext:test_extension";
-
-class Cat {
-  Cat(this.x);
-
-  num x;
-
-  String toString() => 'cat $x';
-
-  // Implements (a != null) ? a : b using a native C++ function and the API.
-  static int ifNull(a, b) native 'TestExtension_IfNull';
-
-  static int throwMeTheBall(ball) native 'TestExtension_ThrowMeTheBall';
-}
diff --git a/tests/standalone_2/io/test_extension_fail_test.dart b/tests/standalone_2/io/test_extension_fail_test.dart
deleted file mode 100644
index e4f664c..0000000
--- a/tests/standalone_2/io/test_extension_fail_test.dart
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-// @dart = 2.9
-
-// OtherResources=test_extension.dart
-// OtherResources=test_extension_fail_tester.dart
-// OtherResources=test_relative_extension.dart
-// OtherResources=test_relative_extension_fail_tester.dart
-
-import "package:path/path.dart";
-import "dart:async";
-import "dart:io";
-
-Future copyFileToDirectory(String file, String directory) {
-  switch (Platform.operatingSystem) {
-    case 'linux':
-    case 'macos':
-      return Process.run('cp', [file, directory]);
-    case 'windows':
-      return Process.run('cmd.exe', ['/C', 'copy $file $directory']);
-    default:
-      throw new StateError(
-          'Unknown operating system ${Platform.operatingSystem}');
-  }
-}
-
-String getExtensionPath(String buildDirectory) {
-  switch (Platform.operatingSystem) {
-    case 'linux':
-      return join(buildDirectory, 'libtest_extension.so');
-    case 'macos':
-      return join(buildDirectory, 'libtest_extension.dylib');
-    case 'windows':
-      return join(buildDirectory, 'test_extension.dll');
-    default:
-      throw new StateError(
-          'Unknown operating system ${Platform.operatingSystem}');
-  }
-}
-
-bool checkExitCode(int code) {
-  return ((code == 255) || (code == 254) || (code == 253));
-}
-
-bool checkStdError(String err) {
-  return err.contains("Unhandled exception:") ||
-      err.contains(
-          "Native extension path must be absolute, or simply the file name");
-}
-
-// name is either "extension" or "relative_extension"
-Future test(String name, bool checkForBall) async {
-  String scriptDirectory = dirname(Platform.script.toFilePath());
-  String buildDirectory = dirname(Platform.executable);
-  Directory tempDirectory =
-      Directory.systemTemp.createTempSync('dart_test_${name}_fail');
-  String testDirectory = tempDirectory.path;
-
-  // Copy test_extension shared library, test_extension.dart and
-  // test_extension_fail_tester.dart to the temporary test directory.
-  try {
-    if (name == "extension") {
-      print(getExtensionPath(buildDirectory));
-      await copyFileToDirectory(
-          getExtensionPath(buildDirectory), testDirectory);
-    } else {
-      var extensionDir = testDirectory + "/extension";
-      Directory dir = await (new Directory(extensionDir).create());
-      await copyFileToDirectory(getExtensionPath(buildDirectory), extensionDir);
-    }
-    var extensionDartFile = join(scriptDirectory, 'test_${name}.dart');
-    await copyFileToDirectory(extensionDartFile, testDirectory);
-    var testExtensionTesterFile =
-        join(scriptDirectory, 'test_${name}_fail_tester.dart');
-    await copyFileToDirectory(testExtensionTesterFile, testDirectory);
-    var args = new List<String>.from(Platform.executableArguments)
-      ..add('--trace-loading')
-      ..add(join(testDirectory, 'test_${name}_fail_tester.dart'));
-    var result = await Process.run(Platform.executable, args);
-    print("ERR: ${result.stderr}\n\n");
-    print("OUT: ${result.stdout}\n\n");
-    if (!checkExitCode(result.exitCode)) {
-      throw new StateError("bad exit code: ${result.exitCode}");
-    }
-    if (!checkStdError(result.stderr)) {
-      throw new StateError("stderr doesn't contain unhandled exception.");
-    }
-    if (checkForBall) {
-      if (!result.stderr.contains("ball")) {
-        throw new StateError("stderr doesn't contain 'ball'.");
-      }
-    }
-  } finally {
-    tempDirectory.deleteSync(recursive: true);
-  }
-}
-
-main() async {
-  await test("extension", true);
-  await test("relative_extension", false);
-}
diff --git a/tests/standalone_2/io/test_extension_fail_tester.dart b/tests/standalone_2/io/test_extension_fail_tester.dart
deleted file mode 100644
index 8b80788..0000000
--- a/tests/standalone_2/io/test_extension_fail_tester.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// @dart = 2.9
-
-library test_extension_test;
-
-import "dart:async";
-import "dart:isolate";
-import "test_extension.dart";
-
-main() {
-  try {
-    Cat.throwMeTheBall("ball");
-  } on String catch (e) {
-    if (e != "ball") throw new StateError("exception not equal to 'ball'");
-  }
-  // Make sure the exception is thrown out to the event handler from C++ code.
-  // The harness expects the string "ball" to be thrown and the process to
-  // end with an unhandled exception.
-  Timer.run(() => Cat.throwMeTheBall("ball"));
-}
diff --git a/tests/standalone_2/io/test_extension_test.dart b/tests/standalone_2/io/test_extension_test.dart
deleted file mode 100644
index 9e0babad..0000000
--- a/tests/standalone_2/io/test_extension_test.dart
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-//
-// Dart test program for testing native extensions.
-
-// @dart = 2.9
-
-// OtherResources=test_extension.dart
-// OtherResources=test_extension_tester.dart
-
-import "package:expect/expect.dart";
-import "package:path/path.dart";
-import 'dart:async';
-import 'dart:io';
-import 'dart:isolate';
-
-Future copyFileToDirectory(String file, String directory) {
-  switch (Platform.operatingSystem) {
-    case 'android':
-    case 'linux':
-    case 'macos':
-      return Process.run('cp', [file, directory]);
-    case 'windows':
-      return Process.run('cmd.exe', ['/C', 'copy $file $directory']);
-    default:
-      Expect.fail('Unknown operating system ${Platform.operatingSystem}');
-  }
-  throw 'Unknown operating system ${Platform.operatingSystem}';
-}
-
-// Returns a list containing the source file name in the first element and the
-// target file name in the second element.
-List<String> getExtensionNames(String arch) {
-  switch (Platform.operatingSystem) {
-    case 'android':
-    case 'linux':
-      return ['libtest_extension.so', 'libtest_extension$arch.so'];
-    case 'macos':
-      return ['libtest_extension.dylib', 'libtest_extension$arch.dylib'];
-    case 'windows':
-      return ['test_extension.dll', 'test_extension$arch.dll'];
-    default:
-      Expect.fail('Unknown operating system ${Platform.operatingSystem}');
-  }
-  throw 'Unknown operating system ${Platform.operatingSystem}';
-}
-
-String getExtensionPath(String buildDirectory, String filename) {
-  return join(buildDirectory, filename);
-}
-
-String getArchFromBuildDir(String buildDirectory) {
-  if (buildDirectory.endsWith('SIMARM')) return '';
-  if (buildDirectory.endsWith('SIMARM64')) return '';
-  if (buildDirectory.endsWith('ARM')) return '-arm';
-  if (buildDirectory.endsWith('ARM64')) return '-arm64';
-  if (buildDirectory.endsWith('IA32')) return '-ia32';
-  if (buildDirectory.endsWith('X64')) return '-x64';
-  return 'unknown';
-}
-
-Future testExtension(bool withArchSuffix) async {
-  String scriptDirectory = dirname(Platform.script.toFilePath());
-  String buildDirectory = dirname(Platform.executable);
-  Directory tempDirectory =
-      Directory.systemTemp.createTempSync('dart_test_extension');
-  String testDirectory = tempDirectory.path;
-
-  List<String> fileNames;
-  if (withArchSuffix) {
-    String arch = getArchFromBuildDir(buildDirectory);
-    fileNames = getExtensionNames(arch);
-  } else {
-    fileNames = getExtensionNames('');
-  }
-
-  try {
-    // Copy test_extension shared library, test_extension.dart and
-    // test_extension_tester.dart to the temporary test directory.
-    await copyFileToDirectory(getExtensionPath(buildDirectory, fileNames[0]),
-        join(testDirectory, fileNames[1]));
-
-    var extensionDartFile = join(scriptDirectory, 'test_extension.dart');
-    await copyFileToDirectory(extensionDartFile, testDirectory);
-
-    var testExtensionTesterFile =
-        join(scriptDirectory, 'test_extension_tester.dart');
-    await copyFileToDirectory(testExtensionTesterFile, testDirectory);
-
-    var args = new List<String>.from(Platform.executableArguments)
-      ..add(join(testDirectory, 'test_extension_tester.dart'));
-    ProcessResult result = await Process.run(Platform.executable, args);
-
-    if (result.exitCode != 0) {
-      print('Subprocess failed with exit code ${result.exitCode}');
-      print('stdout:');
-      print('${result.stdout}');
-      print('stderr:');
-      print('${result.stderr}');
-    }
-    Expect.equals(0, result.exitCode);
-  } finally {
-    tempDirectory.deleteSync(recursive: true);
-  }
-}
-
-Future testWithArchSuffix() {
-  return testExtension(true);
-}
-
-Future testWithoutArchSuffix() {
-  return testExtension(false);
-}
-
-main() async {
-  await testWithArchSuffix();
-  await testWithoutArchSuffix();
-}
diff --git a/tests/standalone_2/io/test_extension_tester.dart b/tests/standalone_2/io/test_extension_tester.dart
deleted file mode 100644
index 7f87d13..0000000
--- a/tests/standalone_2/io/test_extension_tester.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// @dart = 2.9
-
-// VMOptions=--enable-isolate-groups
-// VMOptions=--no-enable-isolate-groups
-
-library test_extension_test;
-
-import 'dart:isolate';
-
-import "test_extension.dart";
-
-class Expect {
-  static void equals(expected, actual, [msg]) {
-    if (expected != actual) {
-      if (msg == null) msg = "Expected: $expected. Actual: $actual";
-      throw new StateError(msg);
-    }
-  }
-
-  static void isNull(x, [msg]) {
-    if (x != null) {
-      if (msg != null) msg = "$x not null";
-      throw new StateError(msg);
-    }
-  }
-}
-
-isolateHandler(_) {}
-
-main() async {
-  Expect.equals('cat 13', new Cat(13).toString(), 'new Cat(13).toString()');
-
-  Expect.equals(3, Cat.ifNull(null, 3), 'Cat.ifNull(null, 3)');
-  Expect.equals(4, Cat.ifNull(4, null), 'Cat.ifNull(4, null)');
-  Expect.equals(5, Cat.ifNull(5, 9), 'Cat.ifNull(5, 9)');
-  Expect.isNull(Cat.ifNull(null, null), 'Cat.ifNull(null, null)');
-
-  try {
-    Cat.throwMeTheBall("ball");
-  } on String catch (e) {
-    Expect.equals("ball", e);
-  }
-
-  await Isolate.spawn(isolateHandler, []);
-}
diff --git a/tests/standalone_2/io/test_relative_extension.dart b/tests/standalone_2/io/test_relative_extension.dart
deleted file mode 100644
index 85a2c37..0000000
--- a/tests/standalone_2/io/test_relative_extension.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-// @dart = 2.9
-
-library test_extension;
-
-import "dart-ext:extension/test_extension";
-
-class Cat {
-  Cat(this.x);
-
-  num x;
-
-  String toString() => 'cat $x';
-
-  // Implements (a != null) ? a : b using a native C++ function and the API.
-  static int ifNull(a, b) native 'TestExtension_IfNull';
-
-  static int throwMeTheBall(ball) native 'TestExtension_ThrowMeTheBall';
-}
diff --git a/tools/VERSION b/tools/VERSION
index 0827bed..08b82e6 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 72
+PRERELEASE 73
 PRERELEASE_PATCH 0
\ No newline at end of file
