Version 2.17.0-187.0.dev

Merge commit 'e1718d5477106c8b5a374ccc6f87e628d18e435f' into 'dev'
diff --git a/DEPS b/DEPS
index dc14ff7..ea1fd32 100644
--- a/DEPS
+++ b/DEPS
@@ -71,7 +71,7 @@
   "gn_revision": "b79031308cc878488202beb99883ec1f2efd9a6d",
 
   # Scripts that make 'git cl format' work.
-  "clang_format_scripts_rev": "c09c8deeac31f05bd801995c475e7c8070f9ecda",
+  "clang_format_scripts_rev": "bb994c6f067340c1135eb43eed84f4b33cfa7397",
 
   "gperftools_revision": "180bfa10d7cb38e8b3784d60943d50e8fcef0dcb",
 
diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md
index 261c626..5692f14 100644
--- a/pkg/analyzer/CHANGELOG.md
+++ b/pkg/analyzer/CHANGELOG.md
@@ -7,6 +7,7 @@
 * Deprecated `AnalysisDriver.getParsedLibrary`, use `getParsedLibrary2` instead.
 * Deprecated `AnalysisDriver.getParsedLibraryByUri`, use `getParsedLibraryByUri2` instead.
 * Deprecated `AnalysisDriver.parseFileSync`, use `parseFile` instead.
+* Deprecated `astFactory`, clients should not create AST nodes manually.
 
 ## 3.3.1
 * Report HintCode.OVERRIDE_ON_NON_OVERRIDING_xyz on enum.
diff --git a/pkg/analyzer/lib/dart/ast/ast_factory.dart b/pkg/analyzer/lib/dart/ast/ast_factory.dart
index 682228e..dfba96d 100644
--- a/pkg/analyzer/lib/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/dart/ast/ast_factory.dart
@@ -14,6 +14,7 @@
 /// instances of the interfaces that constitute the AST.
 ///
 /// Clients should not extend, implement or mix-in this class.
+@Deprecated('Should not be used by clients')
 abstract class AstFactory {
   /// Returns a newly created list of adjacent strings. To be syntactically
   /// valid, the list of [strings] must contain at least two elements.
diff --git a/pkg/analyzer/lib/dart/ast/standard_ast_factory.dart b/pkg/analyzer/lib/dart/ast/standard_ast_factory.dart
index 0b7a130..544346b 100644
--- a/pkg/analyzer/lib/dart/ast/standard_ast_factory.dart
+++ b/pkg/analyzer/lib/dart/ast/standard_ast_factory.dart
@@ -6,4 +6,5 @@
 import 'package:analyzer/src/dart/ast/ast_factory.dart';
 
 /// Gets an instance of [AstFactory] based on the standard AST implementation.
+@Deprecated('Should not be used by clients')
 final AstFactory astFactory = AstFactoryImpl();
diff --git a/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart b/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart
index dc054a8..3cccf58 100644
--- a/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart
+++ b/pkg/analyzer/lib/src/clients/dart_style/rewrite_cascade.dart
@@ -3,8 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/ast/ast.dart';
-import 'package:analyzer/dart/ast/standard_ast_factory.dart';
 import 'package:analyzer/dart/ast/token.dart';
+import 'package:analyzer/src/dart/ast/ast_factory.dart';
 
 /// Parenthesize the target of the [expressionStatement]'s expression (assumed
 /// to [cascadeExpression]) before removing the cascade.
diff --git a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
index e427e92..b937129 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
@@ -15,8 +15,7 @@
 /// The instance of [AstFactoryImpl].
 final AstFactoryImpl astFactory = AstFactoryImpl();
 
-/// Concrete implementation of [AstFactory] based on the standard AST
-/// implementation.
+// ignore: deprecated_member_use_from_same_package
 class AstFactoryImpl extends AstFactory {
   @override
   AdjacentStringsImpl adjacentStrings(List<StringLiteral> strings) =>
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart b/pkg/front_end/testcases/general/operator_method_not_found.dart
index 2275e69..c54c358 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 class Foo {
 }
 
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.textual_outline.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.textual_outline.expect
index ceba071..a467bf8 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {}
 
 main() {}
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.textual_outline_modelled.expect
index ceba071..a467bf8 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {}
 
 main() {}
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.expect
index eb609ae..7f39609 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -206,22 +206,12 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  self::Foo* foo = new self::Foo::•();
+  self::Foo foo = new self::Foo::•();
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:12:13: Error: The operator '<' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
@@ -242,7 +232,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^" in foo{<unresolved>}.>=(2));
-  core::print(foo =={self::Foo::==}{(dynamic) →* core::bool*} 2);
+  core::print(foo =={core::Object::==}{(core::Object) → core::bool} 2);
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:17:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
@@ -298,7 +288,7 @@
 Try correcting the operator to an existing operator, or defining a '>>' operator.
   print(foo >> 2);
             ^^" in foo{<unresolved>}.>>(2));
-  core::print(let final self::Foo* #t1 = foo in let final core::int* #t2 = 2 in let final core::int* #t3 = 2 in let final void #t4 = invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:29:12: Error: The operator '[]=' isn't defined for the class 'Foo'.
+  core::print(let final self::Foo #t1 = foo in let final core::int #t2 = 2 in let final core::int #t3 = 2 in let final void #t4 = invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:29:12: Error: The operator '[]=' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '[]=' operator.
   print(foo[2] = 2);
@@ -330,7 +320,7 @@
         ^"{<invalid>}.>=(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:40:9: Error: This couldn't be parsed.
   print(==foo);
-        ^" =={core::Object::==}{(core::Object*) →* core::bool*} foo);
+        ^" =={core::Object::==}{(core::Object) → core::bool} foo);
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:41:9: Error: This couldn't be parsed.
   print(+foo);
         ^"{<invalid>}.+(foo));
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.modular.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.modular.expect
index eb609ae..7f39609 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -206,22 +206,12 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  self::Foo* foo = new self::Foo::•();
+  self::Foo foo = new self::Foo::•();
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:12:13: Error: The operator '<' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
@@ -242,7 +232,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^" in foo{<unresolved>}.>=(2));
-  core::print(foo =={self::Foo::==}{(dynamic) →* core::bool*} 2);
+  core::print(foo =={core::Object::==}{(core::Object) → core::bool} 2);
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:17:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
@@ -298,7 +288,7 @@
 Try correcting the operator to an existing operator, or defining a '>>' operator.
   print(foo >> 2);
             ^^" in foo{<unresolved>}.>>(2));
-  core::print(let final self::Foo* #t1 = foo in let final core::int* #t2 = 2 in let final core::int* #t3 = 2 in let final void #t4 = invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:29:12: Error: The operator '[]=' isn't defined for the class 'Foo'.
+  core::print(let final self::Foo #t1 = foo in let final core::int #t2 = 2 in let final core::int #t3 = 2 in let final void #t4 = invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:29:12: Error: The operator '[]=' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '[]=' operator.
   print(foo[2] = 2);
@@ -330,7 +320,7 @@
         ^"{<invalid>}.>=(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:40:9: Error: This couldn't be parsed.
   print(==foo);
-        ^" =={core::Object::==}{(core::Object*) →* core::bool*} foo);
+        ^" =={core::Object::==}{(core::Object) → core::bool} foo);
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:41:9: Error: This couldn't be parsed.
   print(+foo);
         ^"{<invalid>}.+(foo));
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.outline.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.outline.expect
index bb0c2dc..bdd8315 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.outline.expect
@@ -1,20 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.transformed.expect b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.transformed.expect
index 13d310d..add53a6 100644
--- a/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/operator_method_not_found.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -206,22 +206,12 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  self::Foo* foo = new self::Foo::•();
+  self::Foo foo = new self::Foo::•();
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:12:13: Error: The operator '<' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '<' operator.
@@ -242,7 +232,7 @@
 Try correcting the operator to an existing operator, or defining a '>=' operator.
   print(foo >= 2);
             ^^" in foo{<unresolved>}.>=(2));
-  core::print(foo =={self::Foo::==}{(dynamic) →* core::bool*} 2);
+  core::print(foo =={core::Object::==}{(core::Object) → core::bool} 2);
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:17:13: Error: The operator '-' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '-' operator.
@@ -298,7 +288,7 @@
 Try correcting the operator to an existing operator, or defining a '>>' operator.
   print(foo >> 2);
             ^^" in foo{<unresolved>}.>>(2));
-  core::print(let final self::Foo* #t1 = foo in let final core::int* #t2 = 2 in let final core::int* #t3 = 2 in let final void #t4 = invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:29:12: Error: The operator '[]=' isn't defined for the class 'Foo'.
+  core::print(let final self::Foo #t1 = foo in let final core::int #t2 = 2 in let final core::int #t3 = 2 in let final void #t4 = invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:29:12: Error: The operator '[]=' isn't defined for the class 'Foo'.
  - 'Foo' is from 'pkg/front_end/testcases/general/operator_method_not_found.dart'.
 Try correcting the operator to an existing operator, or defining a '[]=' operator.
   print(foo[2] = 2);
@@ -330,7 +320,7 @@
         ^"{<invalid>}.>=(foo));
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:40:9: Error: This couldn't be parsed.
   print(==foo);
-        ^" =={core::Object::==}{(core::Object*) →* core::bool*} foo);
+        ^" =={core::Object::==}{(core::Object) → core::bool} foo);
   core::print(invalid-expression "pkg/front_end/testcases/general/operator_method_not_found.dart:41:9: Error: This couldn't be parsed.
   print(+foo);
         ^"{<invalid>}.+(foo));
diff --git a/pkg/front_end/testcases/general/operators.dart b/pkg/front_end/testcases/general/operators.dart
index 37b4cf3..e28636c 100644
--- a/pkg/front_end/testcases/general/operators.dart
+++ b/pkg/front_end/testcases/general/operators.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class Operators {
   operator +(other) => null;
   operator &(other) => null;
@@ -9,7 +9,7 @@
   operator |(other) => null;
   operator ^(other) => null;
   operator /(other) => null;
-  operator ==(other) => null;
+  operator ==(other) => true;
   operator >(other) => null;
   operator >=(other) => null;
   operator [](index) => null;
diff --git a/pkg/front_end/testcases/general/operators.dart.textual_outline.expect b/pkg/front_end/testcases/general/operators.dart.textual_outline.expect
index 409d968..cf978f3 100644
--- a/pkg/front_end/testcases/general/operators.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/operators.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Operators {
   operator +(other) => null;
   operator &(other) => null;
@@ -6,7 +5,7 @@
   operator |(other) => null;
   operator ^(other) => null;
   operator /(other) => null;
-  operator ==(other) => null;
+  operator ==(other) => true;
   operator >(other) => null;
   operator >=(other) => null;
   operator [](index) => null;
diff --git a/pkg/front_end/testcases/general/operators.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/operators.dart.textual_outline_modelled.expect
index 73cbab6..bab579d 100644
--- a/pkg/front_end/testcases/general/operators.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/operators.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Operators {
   operator %(other) => null;
   operator &(other) => null;
@@ -10,7 +9,7 @@
   operator <(other) => null;
   operator <<(other) => null;
   operator <=(other) => null;
-  operator ==(other) => null;
+  operator ==(other) => true;
   operator >(other) => null;
   operator >=(other) => null;
   operator >>(other) => null;
diff --git a/pkg/front_end/testcases/general/operators.dart.weak.expect b/pkg/front_end/testcases/general/operators.dart.weak.expect
index 8796e3d4..dd1cbd2 100644
--- a/pkg/front_end/testcases/general/operators.dart.weak.expect
+++ b/pkg/front_end/testcases/general/operators.dart.weak.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Operators extends core::Object {
-  synthetic constructor •() → self::Operators*
+  synthetic constructor •() → self::Operators
     : super core::Object::•()
     ;
   operator +(dynamic other) → dynamic
@@ -18,8 +18,8 @@
     return null;
   operator /(dynamic other) → dynamic
     return null;
-  operator ==(dynamic other) → core::bool*
-    return null;
+  operator ==(core::Object other) → core::bool
+    return true;
   operator >(dynamic other) → dynamic
     return null;
   operator >=(dynamic other) → dynamic
@@ -45,37 +45,28 @@
     return null;
   operator unary-() → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main(dynamic arguments) → dynamic {
-  self::Operators* a = new self::Operators::•();
-  self::Operators* b = new self::Operators::•();
-  a.{self::Operators::+}(b){(dynamic) →* dynamic};
-  a.{self::Operators::&}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~}(){() →* dynamic};
-  a.{self::Operators::|}(b){(dynamic) →* dynamic};
-  a.{self::Operators::^}(b){(dynamic) →* dynamic};
-  a.{self::Operators::/}(b){(dynamic) →* dynamic};
-  a =={self::Operators::==}{(dynamic) →* core::bool*} b;
-  a.{self::Operators::>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::[]}(0){(dynamic) →* dynamic};
-  a.{self::Operators::[]=}(0, b){(dynamic, dynamic) →* void};
-  a.{self::Operators::<<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::*}(b){(dynamic) →* dynamic};
-  a.{self::Operators::%}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::-}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~/}(b){(dynamic) →* dynamic};
-  a.{self::Operators::unary-}(){() →* dynamic};
+  self::Operators a = new self::Operators::•();
+  self::Operators b = new self::Operators::•();
+  a.{self::Operators::+}(b){(dynamic) → dynamic};
+  a.{self::Operators::&}(b){(dynamic) → dynamic};
+  a.{self::Operators::~}(){() → dynamic};
+  a.{self::Operators::|}(b){(dynamic) → dynamic};
+  a.{self::Operators::^}(b){(dynamic) → dynamic};
+  a.{self::Operators::/}(b){(dynamic) → dynamic};
+  a =={self::Operators::==}{(core::Object) → core::bool} b;
+  a.{self::Operators::>}(b){(dynamic) → dynamic};
+  a.{self::Operators::>=}(b){(dynamic) → dynamic};
+  a.{self::Operators::[]}(0){(dynamic) → dynamic};
+  a.{self::Operators::[]=}(0, b){(dynamic, dynamic) → void};
+  a.{self::Operators::<<}(b){(dynamic) → dynamic};
+  a.{self::Operators::<}(b){(dynamic) → dynamic};
+  a.{self::Operators::<=}(b){(dynamic) → dynamic};
+  a.{self::Operators::*}(b){(dynamic) → dynamic};
+  a.{self::Operators::%}(b){(dynamic) → dynamic};
+  a.{self::Operators::>>}(b){(dynamic) → dynamic};
+  a.{self::Operators::-}(b){(dynamic) → dynamic};
+  a.{self::Operators::~/}(b){(dynamic) → dynamic};
+  a.{self::Operators::unary-}(){() → dynamic};
 }
diff --git a/pkg/front_end/testcases/general/operators.dart.weak.modular.expect b/pkg/front_end/testcases/general/operators.dart.weak.modular.expect
index 8796e3d4..dd1cbd2 100644
--- a/pkg/front_end/testcases/general/operators.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/operators.dart.weak.modular.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Operators extends core::Object {
-  synthetic constructor •() → self::Operators*
+  synthetic constructor •() → self::Operators
     : super core::Object::•()
     ;
   operator +(dynamic other) → dynamic
@@ -18,8 +18,8 @@
     return null;
   operator /(dynamic other) → dynamic
     return null;
-  operator ==(dynamic other) → core::bool*
-    return null;
+  operator ==(core::Object other) → core::bool
+    return true;
   operator >(dynamic other) → dynamic
     return null;
   operator >=(dynamic other) → dynamic
@@ -45,37 +45,28 @@
     return null;
   operator unary-() → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main(dynamic arguments) → dynamic {
-  self::Operators* a = new self::Operators::•();
-  self::Operators* b = new self::Operators::•();
-  a.{self::Operators::+}(b){(dynamic) →* dynamic};
-  a.{self::Operators::&}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~}(){() →* dynamic};
-  a.{self::Operators::|}(b){(dynamic) →* dynamic};
-  a.{self::Operators::^}(b){(dynamic) →* dynamic};
-  a.{self::Operators::/}(b){(dynamic) →* dynamic};
-  a =={self::Operators::==}{(dynamic) →* core::bool*} b;
-  a.{self::Operators::>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::[]}(0){(dynamic) →* dynamic};
-  a.{self::Operators::[]=}(0, b){(dynamic, dynamic) →* void};
-  a.{self::Operators::<<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::*}(b){(dynamic) →* dynamic};
-  a.{self::Operators::%}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::-}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~/}(b){(dynamic) →* dynamic};
-  a.{self::Operators::unary-}(){() →* dynamic};
+  self::Operators a = new self::Operators::•();
+  self::Operators b = new self::Operators::•();
+  a.{self::Operators::+}(b){(dynamic) → dynamic};
+  a.{self::Operators::&}(b){(dynamic) → dynamic};
+  a.{self::Operators::~}(){() → dynamic};
+  a.{self::Operators::|}(b){(dynamic) → dynamic};
+  a.{self::Operators::^}(b){(dynamic) → dynamic};
+  a.{self::Operators::/}(b){(dynamic) → dynamic};
+  a =={self::Operators::==}{(core::Object) → core::bool} b;
+  a.{self::Operators::>}(b){(dynamic) → dynamic};
+  a.{self::Operators::>=}(b){(dynamic) → dynamic};
+  a.{self::Operators::[]}(0){(dynamic) → dynamic};
+  a.{self::Operators::[]=}(0, b){(dynamic, dynamic) → void};
+  a.{self::Operators::<<}(b){(dynamic) → dynamic};
+  a.{self::Operators::<}(b){(dynamic) → dynamic};
+  a.{self::Operators::<=}(b){(dynamic) → dynamic};
+  a.{self::Operators::*}(b){(dynamic) → dynamic};
+  a.{self::Operators::%}(b){(dynamic) → dynamic};
+  a.{self::Operators::>>}(b){(dynamic) → dynamic};
+  a.{self::Operators::-}(b){(dynamic) → dynamic};
+  a.{self::Operators::~/}(b){(dynamic) → dynamic};
+  a.{self::Operators::unary-}(){() → dynamic};
 }
diff --git a/pkg/front_end/testcases/general/operators.dart.weak.outline.expect b/pkg/front_end/testcases/general/operators.dart.weak.outline.expect
index d6c0166..9f33f6c 100644
--- a/pkg/front_end/testcases/general/operators.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/operators.dart.weak.outline.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Operators extends core::Object {
-  synthetic constructor •() → self::Operators*
+  synthetic constructor •() → self::Operators
     ;
   operator +(dynamic other) → dynamic
     ;
@@ -17,7 +17,7 @@
     ;
   operator /(dynamic other) → dynamic
     ;
-  operator ==(dynamic other) → core::bool*
+  operator ==(core::Object other) → core::bool
     ;
   operator >(dynamic other) → dynamic
     ;
@@ -45,15 +45,6 @@
     ;
   operator unary-() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main(dynamic arguments) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/operators.dart.weak.transformed.expect b/pkg/front_end/testcases/general/operators.dart.weak.transformed.expect
index 8796e3d4..dd1cbd2 100644
--- a/pkg/front_end/testcases/general/operators.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/operators.dart.weak.transformed.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Operators extends core::Object {
-  synthetic constructor •() → self::Operators*
+  synthetic constructor •() → self::Operators
     : super core::Object::•()
     ;
   operator +(dynamic other) → dynamic
@@ -18,8 +18,8 @@
     return null;
   operator /(dynamic other) → dynamic
     return null;
-  operator ==(dynamic other) → core::bool*
-    return null;
+  operator ==(core::Object other) → core::bool
+    return true;
   operator >(dynamic other) → dynamic
     return null;
   operator >=(dynamic other) → dynamic
@@ -45,37 +45,28 @@
     return null;
   operator unary-() → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main(dynamic arguments) → dynamic {
-  self::Operators* a = new self::Operators::•();
-  self::Operators* b = new self::Operators::•();
-  a.{self::Operators::+}(b){(dynamic) →* dynamic};
-  a.{self::Operators::&}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~}(){() →* dynamic};
-  a.{self::Operators::|}(b){(dynamic) →* dynamic};
-  a.{self::Operators::^}(b){(dynamic) →* dynamic};
-  a.{self::Operators::/}(b){(dynamic) →* dynamic};
-  a =={self::Operators::==}{(dynamic) →* core::bool*} b;
-  a.{self::Operators::>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::[]}(0){(dynamic) →* dynamic};
-  a.{self::Operators::[]=}(0, b){(dynamic, dynamic) →* void};
-  a.{self::Operators::<<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<}(b){(dynamic) →* dynamic};
-  a.{self::Operators::<=}(b){(dynamic) →* dynamic};
-  a.{self::Operators::*}(b){(dynamic) →* dynamic};
-  a.{self::Operators::%}(b){(dynamic) →* dynamic};
-  a.{self::Operators::>>}(b){(dynamic) →* dynamic};
-  a.{self::Operators::-}(b){(dynamic) →* dynamic};
-  a.{self::Operators::~/}(b){(dynamic) →* dynamic};
-  a.{self::Operators::unary-}(){() →* dynamic};
+  self::Operators a = new self::Operators::•();
+  self::Operators b = new self::Operators::•();
+  a.{self::Operators::+}(b){(dynamic) → dynamic};
+  a.{self::Operators::&}(b){(dynamic) → dynamic};
+  a.{self::Operators::~}(){() → dynamic};
+  a.{self::Operators::|}(b){(dynamic) → dynamic};
+  a.{self::Operators::^}(b){(dynamic) → dynamic};
+  a.{self::Operators::/}(b){(dynamic) → dynamic};
+  a =={self::Operators::==}{(core::Object) → core::bool} b;
+  a.{self::Operators::>}(b){(dynamic) → dynamic};
+  a.{self::Operators::>=}(b){(dynamic) → dynamic};
+  a.{self::Operators::[]}(0){(dynamic) → dynamic};
+  a.{self::Operators::[]=}(0, b){(dynamic, dynamic) → void};
+  a.{self::Operators::<<}(b){(dynamic) → dynamic};
+  a.{self::Operators::<}(b){(dynamic) → dynamic};
+  a.{self::Operators::<=}(b){(dynamic) → dynamic};
+  a.{self::Operators::*}(b){(dynamic) → dynamic};
+  a.{self::Operators::%}(b){(dynamic) → dynamic};
+  a.{self::Operators::>>}(b){(dynamic) → dynamic};
+  a.{self::Operators::-}(b){(dynamic) → dynamic};
+  a.{self::Operators::~/}(b){(dynamic) → dynamic};
+  a.{self::Operators::unary-}(){() → dynamic};
 }
diff --git a/pkg/front_end/testcases/general/optional.dart b/pkg/front_end/testcases/general/optional.dart
index badb36d..0d2e08a 100644
--- a/pkg/front_end/testcases/general/optional.dart
+++ b/pkg/front_end/testcases/general/optional.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class Foo {
   method(x, [y, z]) {
     return "string";
@@ -16,7 +16,7 @@
 external External createExternal();
 
 abstract class Listener {
-  void event(String input, [int x, int y]);
+  void event(String input, [int? x, int? y]);
 }
 
 class TestListener extends Listener {
diff --git a/pkg/front_end/testcases/general/optional.dart.textual_outline.expect b/pkg/front_end/testcases/general/optional.dart.textual_outline.expect
index 4ac3d19..7ca31bf 100644
--- a/pkg/front_end/testcases/general/optional.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/optional.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {
   method(x, [y, z]) {}
 }
@@ -11,7 +10,7 @@
 external External createExternal();
 
 abstract class Listener {
-  void event(String input, [int x, int y]);
+  void event(String input, [int? x, int? y]);
 }
 
 class TestListener extends Listener {
diff --git a/pkg/front_end/testcases/general/optional.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/optional.dart.textual_outline_modelled.expect
index 5c35035..79bbd86 100644
--- a/pkg/front_end/testcases/general/optional.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/optional.dart.textual_outline_modelled.expect
@@ -1,11 +1,10 @@
-// @dart = 2.9
 abstract class External {
   String externalMethod(int x, [int y, int z]);
   void listen(Listener listener);
 }
 
 abstract class Listener {
-  void event(String input, [int x, int y]);
+  void event(String input, [int? x, int? y]);
 }
 
 class ExtendedListener extends Listener {
diff --git a/pkg/front_end/testcases/general/optional.dart.weak.expect b/pkg/front_end/testcases/general/optional.dart.weak.expect
index 6ca451d..36aa8b1 100644
--- a/pkg/front_end/testcases/general/optional.dart.weak.expect
+++ b/pkg/front_end/testcases/general/optional.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -30,115 +30,75 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
   method method(dynamic x, [dynamic y = #C1, dynamic z = #C1]) → dynamic {
     return "string";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class External extends core::Object {
-  synthetic constructor •() → self::External*
+  synthetic constructor •() → self::External
     : super core::Object::•()
     ;
-  abstract method externalMethod(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → core::String*;
-  abstract method listen(self::Listener* listener) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method externalMethod(core::int x, [core::int y = #C1, core::int z = #C1]) → core::String;
+  abstract method listen(self::Listener listener) → void;
 }
 abstract class Listener extends core::Object {
-  synthetic constructor •() → self::Listener*
+  synthetic constructor •() → self::Listener
     : super core::Object::•()
     ;
-  abstract method event(core::String* input, [core::int* x = #C1, core::int* y = #C1]) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method event(core::String input, [core::int? x = #C1, core::int? y = #C1]) → void;
 }
 class TestListener extends self::Listener {
-  synthetic constructor •() → self::TestListener*
+  synthetic constructor •() → self::TestListener
     : super self::Listener::•()
     ;
-  method event(core::String* input, [core::int* x = #C1, core::int* y = #C1]) → void {}
+  method event(core::String input, [core::int? x = #C1, core::int? y = #C1]) → void {}
 }
 class ExtendedListener extends self::Listener {
-  synthetic constructor •() → self::ExtendedListener*
+  synthetic constructor •() → self::ExtendedListener
     : super self::Listener::•()
     ;
-  method event(core::String* input, [core::int* x = #C1, core::int* y = #C1, dynamic z = #C1]) → void {}
+  method event(core::String input, [core::int? x = #C1, core::int? y = #C1, dynamic z = #C1]) → void {}
 }
 class InvalidListener extends core::Object {
-  synthetic constructor •() → self::InvalidListener*
+  synthetic constructor •() → self::InvalidListener
     : super core::Object::•()
     ;
   method event(dynamic input, [dynamic x = #C1]) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-external static method createExternal() → self::External*;
+external static method createExternal() → self::External;
 static method main() → dynamic {
-  self::Foo* foo = new self::Foo::•();
-  dynamic string1 = foo.{self::Foo::method}(1){(dynamic, [dynamic, dynamic]) →* dynamic};
-  dynamic string2 = foo.{self::Foo::method}(1, 2){(dynamic, [dynamic, dynamic]) →* dynamic};
-  dynamic string3 = foo.{self::Foo::method}(1, 2, 3){(dynamic, [dynamic, dynamic]) →* dynamic};
-  self::External* extern = self::createExternal();
-  core::String* string4 = extern.{self::External::externalMethod}(1){(core::int*, [core::int*, core::int*]) →* core::String*};
-  core::String* string5 = extern.{self::External::externalMethod}(1, 2){(core::int*, [core::int*, core::int*]) →* core::String*};
-  core::String* string6 = extern.{self::External::externalMethod}(1, 2, 3){(core::int*, [core::int*, core::int*]) →* core::String*};
-  extern.{self::External::listen}(new self::TestListener::•()){(self::Listener*) →* void};
-  extern.{self::External::listen}(new self::ExtendedListener::•()){(self::Listener*) →* void};
+  self::Foo foo = new self::Foo::•();
+  dynamic string1 = foo.{self::Foo::method}(1){(dynamic, [dynamic, dynamic]) → dynamic};
+  dynamic string2 = foo.{self::Foo::method}(1, 2){(dynamic, [dynamic, dynamic]) → dynamic};
+  dynamic string3 = foo.{self::Foo::method}(1, 2, 3){(dynamic, [dynamic, dynamic]) → dynamic};
+  self::External extern = self::createExternal();
+  core::String string4 = extern.{self::External::externalMethod}(1){(core::int, [core::int, core::int]) → core::String};
+  core::String string5 = extern.{self::External::externalMethod}(1, 2){(core::int, [core::int, core::int]) → core::String};
+  core::String string6 = extern.{self::External::externalMethod}(1, 2, 3){(core::int, [core::int, core::int]) → core::String};
+  extern.{self::External::listen}(new self::TestListener::•()){(self::Listener) → void};
+  extern.{self::External::listen}(new self::ExtendedListener::•()){(self::Listener) → void};
   extern.{self::External::listen}(invalid-expression "pkg/front_end/testcases/general/optional.dart:47:21: Error: The argument type 'InvalidListener' can't be assigned to the parameter type 'Listener'.
  - 'InvalidListener' is from 'pkg/front_end/testcases/general/optional.dart'.
  - 'Listener' is from 'pkg/front_end/testcases/general/optional.dart'.
   extern.listen(new InvalidListener());
-                    ^" in new self::InvalidListener::•() as{TypeError} self::Listener*){(self::Listener*) →* void};
+                    ^" in new self::InvalidListener::•() as{TypeError,ForNonNullableByDefault} self::Listener){(self::Listener) → void};
   invalid-type nothing1 = invalid-expression "pkg/front_end/testcases/general/optional.dart:49:28: Error: Too few positional arguments: 1 required, 0 given.
   var nothing1 = foo.method();
-                           ^" in foo.{self::Foo::method}{<inapplicable>}.(){() →* invalid-type};
+                           ^" in foo.{self::Foo::method}{<inapplicable>}.(){() → invalid-type};
   invalid-type nothing2 = invalid-expression "pkg/front_end/testcases/general/optional.dart:50:28: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   var nothing2 = foo.method(1, 2, 3, 4);
-                           ^" in foo.{self::Foo::method}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) →* invalid-type};
+                           ^" in foo.{self::Foo::method}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) → invalid-type};
   invalid-type nothing3 = invalid-expression "pkg/front_end/testcases/general/optional.dart:51:39: Error: Too few positional arguments: 1 required, 0 given.
   var nothing3 = extern.externalMethod();
-                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(){() →* invalid-type};
+                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(){() → invalid-type};
   invalid-type nothing4 = invalid-expression "pkg/front_end/testcases/general/optional.dart:52:39: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   var nothing4 = extern.externalMethod(1, 2, 3, 4);
-                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) →* invalid-type};
+                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) → invalid-type};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/optional.dart.weak.modular.expect b/pkg/front_end/testcases/general/optional.dart.weak.modular.expect
index 6ca451d..36aa8b1 100644
--- a/pkg/front_end/testcases/general/optional.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/optional.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -30,115 +30,75 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
   method method(dynamic x, [dynamic y = #C1, dynamic z = #C1]) → dynamic {
     return "string";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class External extends core::Object {
-  synthetic constructor •() → self::External*
+  synthetic constructor •() → self::External
     : super core::Object::•()
     ;
-  abstract method externalMethod(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → core::String*;
-  abstract method listen(self::Listener* listener) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method externalMethod(core::int x, [core::int y = #C1, core::int z = #C1]) → core::String;
+  abstract method listen(self::Listener listener) → void;
 }
 abstract class Listener extends core::Object {
-  synthetic constructor •() → self::Listener*
+  synthetic constructor •() → self::Listener
     : super core::Object::•()
     ;
-  abstract method event(core::String* input, [core::int* x = #C1, core::int* y = #C1]) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method event(core::String input, [core::int? x = #C1, core::int? y = #C1]) → void;
 }
 class TestListener extends self::Listener {
-  synthetic constructor •() → self::TestListener*
+  synthetic constructor •() → self::TestListener
     : super self::Listener::•()
     ;
-  method event(core::String* input, [core::int* x = #C1, core::int* y = #C1]) → void {}
+  method event(core::String input, [core::int? x = #C1, core::int? y = #C1]) → void {}
 }
 class ExtendedListener extends self::Listener {
-  synthetic constructor •() → self::ExtendedListener*
+  synthetic constructor •() → self::ExtendedListener
     : super self::Listener::•()
     ;
-  method event(core::String* input, [core::int* x = #C1, core::int* y = #C1, dynamic z = #C1]) → void {}
+  method event(core::String input, [core::int? x = #C1, core::int? y = #C1, dynamic z = #C1]) → void {}
 }
 class InvalidListener extends core::Object {
-  synthetic constructor •() → self::InvalidListener*
+  synthetic constructor •() → self::InvalidListener
     : super core::Object::•()
     ;
   method event(dynamic input, [dynamic x = #C1]) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-external static method createExternal() → self::External*;
+external static method createExternal() → self::External;
 static method main() → dynamic {
-  self::Foo* foo = new self::Foo::•();
-  dynamic string1 = foo.{self::Foo::method}(1){(dynamic, [dynamic, dynamic]) →* dynamic};
-  dynamic string2 = foo.{self::Foo::method}(1, 2){(dynamic, [dynamic, dynamic]) →* dynamic};
-  dynamic string3 = foo.{self::Foo::method}(1, 2, 3){(dynamic, [dynamic, dynamic]) →* dynamic};
-  self::External* extern = self::createExternal();
-  core::String* string4 = extern.{self::External::externalMethod}(1){(core::int*, [core::int*, core::int*]) →* core::String*};
-  core::String* string5 = extern.{self::External::externalMethod}(1, 2){(core::int*, [core::int*, core::int*]) →* core::String*};
-  core::String* string6 = extern.{self::External::externalMethod}(1, 2, 3){(core::int*, [core::int*, core::int*]) →* core::String*};
-  extern.{self::External::listen}(new self::TestListener::•()){(self::Listener*) →* void};
-  extern.{self::External::listen}(new self::ExtendedListener::•()){(self::Listener*) →* void};
+  self::Foo foo = new self::Foo::•();
+  dynamic string1 = foo.{self::Foo::method}(1){(dynamic, [dynamic, dynamic]) → dynamic};
+  dynamic string2 = foo.{self::Foo::method}(1, 2){(dynamic, [dynamic, dynamic]) → dynamic};
+  dynamic string3 = foo.{self::Foo::method}(1, 2, 3){(dynamic, [dynamic, dynamic]) → dynamic};
+  self::External extern = self::createExternal();
+  core::String string4 = extern.{self::External::externalMethod}(1){(core::int, [core::int, core::int]) → core::String};
+  core::String string5 = extern.{self::External::externalMethod}(1, 2){(core::int, [core::int, core::int]) → core::String};
+  core::String string6 = extern.{self::External::externalMethod}(1, 2, 3){(core::int, [core::int, core::int]) → core::String};
+  extern.{self::External::listen}(new self::TestListener::•()){(self::Listener) → void};
+  extern.{self::External::listen}(new self::ExtendedListener::•()){(self::Listener) → void};
   extern.{self::External::listen}(invalid-expression "pkg/front_end/testcases/general/optional.dart:47:21: Error: The argument type 'InvalidListener' can't be assigned to the parameter type 'Listener'.
  - 'InvalidListener' is from 'pkg/front_end/testcases/general/optional.dart'.
  - 'Listener' is from 'pkg/front_end/testcases/general/optional.dart'.
   extern.listen(new InvalidListener());
-                    ^" in new self::InvalidListener::•() as{TypeError} self::Listener*){(self::Listener*) →* void};
+                    ^" in new self::InvalidListener::•() as{TypeError,ForNonNullableByDefault} self::Listener){(self::Listener) → void};
   invalid-type nothing1 = invalid-expression "pkg/front_end/testcases/general/optional.dart:49:28: Error: Too few positional arguments: 1 required, 0 given.
   var nothing1 = foo.method();
-                           ^" in foo.{self::Foo::method}{<inapplicable>}.(){() →* invalid-type};
+                           ^" in foo.{self::Foo::method}{<inapplicable>}.(){() → invalid-type};
   invalid-type nothing2 = invalid-expression "pkg/front_end/testcases/general/optional.dart:50:28: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   var nothing2 = foo.method(1, 2, 3, 4);
-                           ^" in foo.{self::Foo::method}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) →* invalid-type};
+                           ^" in foo.{self::Foo::method}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) → invalid-type};
   invalid-type nothing3 = invalid-expression "pkg/front_end/testcases/general/optional.dart:51:39: Error: Too few positional arguments: 1 required, 0 given.
   var nothing3 = extern.externalMethod();
-                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(){() →* invalid-type};
+                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(){() → invalid-type};
   invalid-type nothing4 = invalid-expression "pkg/front_end/testcases/general/optional.dart:52:39: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   var nothing4 = extern.externalMethod(1, 2, 3, 4);
-                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) →* invalid-type};
+                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) → invalid-type};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/optional.dart.weak.outline.expect b/pkg/front_end/testcases/general/optional.dart.weak.outline.expect
index 319a00f..0d055ce 100644
--- a/pkg/front_end/testcases/general/optional.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/optional.dart.weak.outline.expect
@@ -1,82 +1,42 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     ;
   method method(dynamic x, [dynamic y, dynamic z]) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class External extends core::Object {
-  synthetic constructor •() → self::External*
+  synthetic constructor •() → self::External
     ;
-  abstract method externalMethod(core::int* x, [core::int* y, core::int* z]) → core::String*;
-  abstract method listen(self::Listener* listener) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method externalMethod(core::int x, [core::int y, core::int z]) → core::String;
+  abstract method listen(self::Listener listener) → void;
 }
 abstract class Listener extends core::Object {
-  synthetic constructor •() → self::Listener*
+  synthetic constructor •() → self::Listener
     ;
-  abstract method event(core::String* input, [core::int* x, core::int* y]) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method event(core::String input, [core::int? x, core::int? y]) → void;
 }
 class TestListener extends self::Listener {
-  synthetic constructor •() → self::TestListener*
+  synthetic constructor •() → self::TestListener
     ;
-  method event(core::String* input, [core::int* x, core::int* y]) → void
+  method event(core::String input, [core::int? x, core::int? y]) → void
     ;
 }
 class ExtendedListener extends self::Listener {
-  synthetic constructor •() → self::ExtendedListener*
+  synthetic constructor •() → self::ExtendedListener
     ;
-  method event(core::String* input, [core::int* x, core::int* y, dynamic z]) → void
+  method event(core::String input, [core::int? x, core::int? y, dynamic z]) → void
     ;
 }
 class InvalidListener extends core::Object {
-  synthetic constructor •() → self::InvalidListener*
+  synthetic constructor •() → self::InvalidListener
     ;
   method event(dynamic input, [dynamic x]) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-external static method createExternal() → self::External*;
+external static method createExternal() → self::External;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/optional.dart.weak.transformed.expect b/pkg/front_end/testcases/general/optional.dart.weak.transformed.expect
index 6ca451d..36aa8b1 100644
--- a/pkg/front_end/testcases/general/optional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/optional.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -30,115 +30,75 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
   method method(dynamic x, [dynamic y = #C1, dynamic z = #C1]) → dynamic {
     return "string";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class External extends core::Object {
-  synthetic constructor •() → self::External*
+  synthetic constructor •() → self::External
     : super core::Object::•()
     ;
-  abstract method externalMethod(core::int* x, [core::int* y = #C1, core::int* z = #C1]) → core::String*;
-  abstract method listen(self::Listener* listener) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method externalMethod(core::int x, [core::int y = #C1, core::int z = #C1]) → core::String;
+  abstract method listen(self::Listener listener) → void;
 }
 abstract class Listener extends core::Object {
-  synthetic constructor •() → self::Listener*
+  synthetic constructor •() → self::Listener
     : super core::Object::•()
     ;
-  abstract method event(core::String* input, [core::int* x = #C1, core::int* y = #C1]) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method event(core::String input, [core::int? x = #C1, core::int? y = #C1]) → void;
 }
 class TestListener extends self::Listener {
-  synthetic constructor •() → self::TestListener*
+  synthetic constructor •() → self::TestListener
     : super self::Listener::•()
     ;
-  method event(core::String* input, [core::int* x = #C1, core::int* y = #C1]) → void {}
+  method event(core::String input, [core::int? x = #C1, core::int? y = #C1]) → void {}
 }
 class ExtendedListener extends self::Listener {
-  synthetic constructor •() → self::ExtendedListener*
+  synthetic constructor •() → self::ExtendedListener
     : super self::Listener::•()
     ;
-  method event(core::String* input, [core::int* x = #C1, core::int* y = #C1, dynamic z = #C1]) → void {}
+  method event(core::String input, [core::int? x = #C1, core::int? y = #C1, dynamic z = #C1]) → void {}
 }
 class InvalidListener extends core::Object {
-  synthetic constructor •() → self::InvalidListener*
+  synthetic constructor •() → self::InvalidListener
     : super core::Object::•()
     ;
   method event(dynamic input, [dynamic x = #C1]) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-external static method createExternal() → self::External*;
+external static method createExternal() → self::External;
 static method main() → dynamic {
-  self::Foo* foo = new self::Foo::•();
-  dynamic string1 = foo.{self::Foo::method}(1){(dynamic, [dynamic, dynamic]) →* dynamic};
-  dynamic string2 = foo.{self::Foo::method}(1, 2){(dynamic, [dynamic, dynamic]) →* dynamic};
-  dynamic string3 = foo.{self::Foo::method}(1, 2, 3){(dynamic, [dynamic, dynamic]) →* dynamic};
-  self::External* extern = self::createExternal();
-  core::String* string4 = extern.{self::External::externalMethod}(1){(core::int*, [core::int*, core::int*]) →* core::String*};
-  core::String* string5 = extern.{self::External::externalMethod}(1, 2){(core::int*, [core::int*, core::int*]) →* core::String*};
-  core::String* string6 = extern.{self::External::externalMethod}(1, 2, 3){(core::int*, [core::int*, core::int*]) →* core::String*};
-  extern.{self::External::listen}(new self::TestListener::•()){(self::Listener*) →* void};
-  extern.{self::External::listen}(new self::ExtendedListener::•()){(self::Listener*) →* void};
+  self::Foo foo = new self::Foo::•();
+  dynamic string1 = foo.{self::Foo::method}(1){(dynamic, [dynamic, dynamic]) → dynamic};
+  dynamic string2 = foo.{self::Foo::method}(1, 2){(dynamic, [dynamic, dynamic]) → dynamic};
+  dynamic string3 = foo.{self::Foo::method}(1, 2, 3){(dynamic, [dynamic, dynamic]) → dynamic};
+  self::External extern = self::createExternal();
+  core::String string4 = extern.{self::External::externalMethod}(1){(core::int, [core::int, core::int]) → core::String};
+  core::String string5 = extern.{self::External::externalMethod}(1, 2){(core::int, [core::int, core::int]) → core::String};
+  core::String string6 = extern.{self::External::externalMethod}(1, 2, 3){(core::int, [core::int, core::int]) → core::String};
+  extern.{self::External::listen}(new self::TestListener::•()){(self::Listener) → void};
+  extern.{self::External::listen}(new self::ExtendedListener::•()){(self::Listener) → void};
   extern.{self::External::listen}(invalid-expression "pkg/front_end/testcases/general/optional.dart:47:21: Error: The argument type 'InvalidListener' can't be assigned to the parameter type 'Listener'.
  - 'InvalidListener' is from 'pkg/front_end/testcases/general/optional.dart'.
  - 'Listener' is from 'pkg/front_end/testcases/general/optional.dart'.
   extern.listen(new InvalidListener());
-                    ^" in new self::InvalidListener::•() as{TypeError} self::Listener*){(self::Listener*) →* void};
+                    ^" in new self::InvalidListener::•() as{TypeError,ForNonNullableByDefault} self::Listener){(self::Listener) → void};
   invalid-type nothing1 = invalid-expression "pkg/front_end/testcases/general/optional.dart:49:28: Error: Too few positional arguments: 1 required, 0 given.
   var nothing1 = foo.method();
-                           ^" in foo.{self::Foo::method}{<inapplicable>}.(){() →* invalid-type};
+                           ^" in foo.{self::Foo::method}{<inapplicable>}.(){() → invalid-type};
   invalid-type nothing2 = invalid-expression "pkg/front_end/testcases/general/optional.dart:50:28: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   var nothing2 = foo.method(1, 2, 3, 4);
-                           ^" in foo.{self::Foo::method}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) →* invalid-type};
+                           ^" in foo.{self::Foo::method}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) → invalid-type};
   invalid-type nothing3 = invalid-expression "pkg/front_end/testcases/general/optional.dart:51:39: Error: Too few positional arguments: 1 required, 0 given.
   var nothing3 = extern.externalMethod();
-                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(){() →* invalid-type};
+                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(){() → invalid-type};
   invalid-type nothing4 = invalid-expression "pkg/front_end/testcases/general/optional.dart:52:39: Error: Too many positional arguments: 3 allowed, but 4 found.
 Try removing the extra positional arguments.
   var nothing4 = extern.externalMethod(1, 2, 3, 4);
-                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) →* invalid-type};
+                                      ^" in extern.{self::External::externalMethod}{<inapplicable>}.(1, 2, 3, 4){(invalid-type, invalid-type, invalid-type, invalid-type) → invalid-type};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/override.dart b/pkg/front_end/testcases/general/override.dart
index 0b4421a..03f9c9f 100644
--- a/pkg/front_end/testcases/general/override.dart
+++ b/pkg/front_end/testcases/general/override.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class Foo {}
 
 class Bar extends Foo {}
diff --git a/pkg/front_end/testcases/general/override.dart.textual_outline.expect b/pkg/front_end/testcases/general/override.dart.textual_outline.expect
index 081b011..272b930 100644
--- a/pkg/front_end/testcases/general/override.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {}
 
 class Bar extends Foo {}
diff --git a/pkg/front_end/testcases/general/override.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override.dart.textual_outline_modelled.expect
index 5d96ffa..ef2c070 100644
--- a/pkg/front_end/testcases/general/override.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Bar extends Foo {}
 
 class Base {
diff --git a/pkg/front_end/testcases/general/override.dart.weak.expect b/pkg/front_end/testcases/general/override.dart.weak.expect
index 2ce1243..7991685 100644
--- a/pkg/front_end/testcases/general/override.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override.dart.weak.expect
@@ -1,55 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Bar extends self::Foo {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super self::Foo::•()
     ;
 }
 class Base extends core::Object {
-  synthetic constructor •() → self::Base*
+  synthetic constructor •() → self::Base
     : super core::Object::•()
     ;
-  method method() → self::Foo* {
+  method method() → self::Foo {
     return new self::Foo::•();
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Sub extends self::Base {
-  synthetic constructor •() → self::Sub*
+  synthetic constructor •() → self::Sub
     : super self::Base::•()
     ;
-  method method() → self::Foo* {
+  method method() → self::Foo {
     return new self::Bar::•();
   }
 }
-static method main(core::List<core::String*>* args) → dynamic {
-  self::Base* object = args.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{self::Base*} new self::Base::•() : new self::Sub::•();
-  self::Foo* a = object.{self::Base::method}(){() →* self::Foo*};
+static method main(core::List<core::String> args) → dynamic {
+  self::Base object = args.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} 0 ?{self::Base} new self::Base::•() : new self::Sub::•();
+  self::Foo a = object.{self::Base::method}(){() → self::Foo};
   core::print(a);
 }
diff --git a/pkg/front_end/testcases/general/override.dart.weak.modular.expect b/pkg/front_end/testcases/general/override.dart.weak.modular.expect
index 2ce1243..7991685 100644
--- a/pkg/front_end/testcases/general/override.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override.dart.weak.modular.expect
@@ -1,55 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Bar extends self::Foo {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super self::Foo::•()
     ;
 }
 class Base extends core::Object {
-  synthetic constructor •() → self::Base*
+  synthetic constructor •() → self::Base
     : super core::Object::•()
     ;
-  method method() → self::Foo* {
+  method method() → self::Foo {
     return new self::Foo::•();
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Sub extends self::Base {
-  synthetic constructor •() → self::Sub*
+  synthetic constructor •() → self::Sub
     : super self::Base::•()
     ;
-  method method() → self::Foo* {
+  method method() → self::Foo {
     return new self::Bar::•();
   }
 }
-static method main(core::List<core::String*>* args) → dynamic {
-  self::Base* object = args.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{self::Base*} new self::Base::•() : new self::Sub::•();
-  self::Foo* a = object.{self::Base::method}(){() →* self::Foo*};
+static method main(core::List<core::String> args) → dynamic {
+  self::Base object = args.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} 0 ?{self::Base} new self::Base::•() : new self::Sub::•();
+  self::Foo a = object.{self::Base::method}(){() → self::Foo};
   core::print(a);
 }
diff --git a/pkg/front_end/testcases/general/override.dart.weak.outline.expect b/pkg/front_end/testcases/general/override.dart.weak.outline.expect
index d64628d..71c62cc 100644
--- a/pkg/front_end/testcases/general/override.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override.dart.weak.outline.expect
@@ -1,46 +1,26 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Bar extends self::Foo {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     ;
 }
 class Base extends core::Object {
-  synthetic constructor •() → self::Base*
+  synthetic constructor •() → self::Base
     ;
-  method method() → self::Foo*
+  method method() → self::Foo
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Sub extends self::Base {
-  synthetic constructor •() → self::Sub*
+  synthetic constructor •() → self::Sub
     ;
-  method method() → self::Foo*
+  method method() → self::Foo
     ;
 }
-static method main(core::List<core::String*>* args) → dynamic
+static method main(core::List<core::String> args) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/override.dart.weak.transformed.expect b/pkg/front_end/testcases/general/override.dart.weak.transformed.expect
index 2ce1243..7991685 100644
--- a/pkg/front_end/testcases/general/override.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/override.dart.weak.transformed.expect
@@ -1,55 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Bar extends self::Foo {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super self::Foo::•()
     ;
 }
 class Base extends core::Object {
-  synthetic constructor •() → self::Base*
+  synthetic constructor •() → self::Base
     : super core::Object::•()
     ;
-  method method() → self::Foo* {
+  method method() → self::Foo {
     return new self::Foo::•();
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Sub extends self::Base {
-  synthetic constructor •() → self::Sub*
+  synthetic constructor •() → self::Sub
     : super self::Base::•()
     ;
-  method method() → self::Foo* {
+  method method() → self::Foo {
     return new self::Bar::•();
   }
 }
-static method main(core::List<core::String*>* args) → dynamic {
-  self::Base* object = args.{core::List::length}{core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 0 ?{self::Base*} new self::Base::•() : new self::Sub::•();
-  self::Foo* a = object.{self::Base::method}(){() →* self::Foo*};
+static method main(core::List<core::String> args) → dynamic {
+  self::Base object = args.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} 0 ?{self::Base} new self::Base::•() : new self::Sub::•();
+  self::Foo a = object.{self::Base::method}(){() → self::Foo};
   core::print(a);
 }
diff --git a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart
index 1aabd7e..a855dd5 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart
+++ b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart
@@ -1,29 +1,29 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class A {}
 
 class B extends A {}
 
 class C {
   void set x(A value) {}
-  B get y => null;
+  B get y => throw '';
 }
 
 class D extends C {
   void set x(value) {} // Inferred type: A
-  get y => null; // Inferred type: B
+  get y => throw ''; // Inferred type: B
 }
 
 class E extends D {
   void set x(A value) {} // Ok
-  B get y => null; // Ok
+  B get y => throw ''; // Ok
 }
 
 class F extends D {
   void set x(B value) {}
-  A get y => null;
+  A get y => throw '';
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.textual_outline.expect
index 905b367..777dc0b 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.textual_outline.expect
@@ -1,26 +1,25 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
 
 class C {
   void set x(A value) {}
-  B get y => null;
+  B get y => throw '';
 }
 
 class D extends C {
   void set x(value) {}
-  get y => null;
+  get y => throw '';
 }
 
 class E extends D {
   void set x(A value) {}
-  B get y => null;
+  B get y => throw '';
 }
 
 class F extends D {
   void set x(B value) {}
-  A get y => null;
+  A get y => throw '';
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.textual_outline_modelled.expect
index e6a1048..a9ea376 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.textual_outline_modelled.expect
@@ -1,25 +1,24 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
 
 class C {
-  B get y => null;
+  B get y => throw '';
   void set x(A value) {}
 }
 
 class D extends C {
-  get y => null;
+  get y => throw '';
   void set x(value) {}
 }
 
 class E extends D {
-  B get y => null;
+  B get y => throw '';
   void set x(A value) {}
 }
 
 class F extends D {
-  A get y => null;
+  A get y => throw '';
   void set x(B value) {}
 }
 
diff --git a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.expect b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.expect
index 181c1db..aac1b94 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -6,10 +6,10 @@
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_accessor_after_inference.dart'.
 //  - 'B' is from 'pkg/front_end/testcases/general/override_check_accessor_after_inference.dart'.
 // Change to a subtype of 'B'.
-//   A get y => null;
+//   A get y => throw '';
 //         ^
 // pkg/front_end/testcases/general/override_check_accessor_after_inference.dart:16:7: Context: This is the overridden method ('y').
-//   get y => null; // Inferred type: B
+//   get y => throw ''; // Inferred type: B
 //       ^
 //
 // pkg/front_end/testcases/general/override_check_accessor_after_inference.dart:25:16: Error: The parameter 'value' of the method 'F.x' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'D.x'.
@@ -26,65 +26,45 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  set x(self::A* value) → void {}
-  get y() → self::B*
-    return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set x(self::A value) → void {}
+  get y() → self::B
+    return throw "";
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  set x(self::A* value) → void {}
-  get y() → self::B*
-    return null;
+  set x(self::A value) → void {}
+  get y() → self::B
+    return throw "";
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
-  set x(self::A* value) → void {}
-  get y() → self::B*
-    return null;
+  set x(self::A value) → void {}
+  get y() → self::B
+    return throw "";
 }
 class F extends self::D {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super self::D::•()
     ;
-  set x(self::B* value) → void {}
-  get y() → self::A*
-    return null;
+  set x(self::B value) → void {}
+  get y() → self::A
+    return throw "";
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.modular.expect
index 181c1db..aac1b94 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -6,10 +6,10 @@
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_accessor_after_inference.dart'.
 //  - 'B' is from 'pkg/front_end/testcases/general/override_check_accessor_after_inference.dart'.
 // Change to a subtype of 'B'.
-//   A get y => null;
+//   A get y => throw '';
 //         ^
 // pkg/front_end/testcases/general/override_check_accessor_after_inference.dart:16:7: Context: This is the overridden method ('y').
-//   get y => null; // Inferred type: B
+//   get y => throw ''; // Inferred type: B
 //       ^
 //
 // pkg/front_end/testcases/general/override_check_accessor_after_inference.dart:25:16: Error: The parameter 'value' of the method 'F.x' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'D.x'.
@@ -26,65 +26,45 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  set x(self::A* value) → void {}
-  get y() → self::B*
-    return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set x(self::A value) → void {}
+  get y() → self::B
+    return throw "";
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  set x(self::A* value) → void {}
-  get y() → self::B*
-    return null;
+  set x(self::A value) → void {}
+  get y() → self::B
+    return throw "";
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
-  set x(self::A* value) → void {}
-  get y() → self::B*
-    return null;
+  set x(self::A value) → void {}
+  get y() → self::B
+    return throw "";
 }
 class F extends self::D {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super self::D::•()
     ;
-  set x(self::B* value) → void {}
-  get y() → self::A*
-    return null;
+  set x(self::B value) → void {}
+  get y() → self::A
+    return throw "";
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.outline.expect
index 8d25095..9d8be24 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_after_inference.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -6,10 +6,10 @@
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_accessor_after_inference.dart'.
 //  - 'B' is from 'pkg/front_end/testcases/general/override_check_accessor_after_inference.dart'.
 // Change to a subtype of 'B'.
-//   A get y => null;
+//   A get y => throw '';
 //         ^
 // pkg/front_end/testcases/general/override_check_accessor_after_inference.dart:16:7: Context: This is the overridden method ('y').
-//   get y => null; // Inferred type: B
+//   get y => throw ''; // Inferred type: B
 //       ^
 //
 // pkg/front_end/testcases/general/override_check_accessor_after_inference.dart:25:16: Error: The parameter 'value' of the method 'F.x' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'D.x'.
@@ -26,63 +26,43 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  set x(self::A* value) → void
+  set x(self::A value) → void
     ;
-  get y() → self::B*
+  get y() → self::B
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  set x(self::A* value) → void
+  set x(self::A value) → void
     ;
-  get y() → self::B*
+  get y() → self::B
     ;
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
-  set x(self::A* value) → void
+  set x(self::A value) → void
     ;
-  get y() → self::B*
+  get y() → self::B
     ;
 }
 class F extends self::D {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     ;
-  set x(self::B* value) → void
+  set x(self::B value) → void
     ;
-  get y() → self::A*
+  get y() → self::A
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/override_check_accessor_basic.dart b/pkg/front_end/testcases/general/override_check_accessor_basic.dart
index a68326b..2157464 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_basic.dart
+++ b/pkg/front_end/testcases/general/override_check_accessor_basic.dart
@@ -1,24 +1,24 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class A {}
 
 class B extends A {}
 
 class C {
   void set x(A value) {}
-  A get y => null;
+  A get y => throw '';
 }
 
 class D extends C {
   void set x(Object value) {} // Ok
-  B get y => null; // Ok
+  B get y => throw ''; // Ok
 }
 
 class E extends C {
   void set x(B value) {}
-  Object get y => null;
+  Object get y => throw '';
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.textual_outline.expect
index af6849d..13b6a43 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.textual_outline.expect
@@ -1,21 +1,20 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
 
 class C {
   void set x(A value) {}
-  A get y => null;
+  A get y => throw '';
 }
 
 class D extends C {
   void set x(Object value) {}
-  B get y => null;
+  B get y => throw '';
 }
 
 class E extends C {
   void set x(B value) {}
-  Object get y => null;
+  Object get y => throw '';
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.textual_outline_modelled.expect
index 2e4ff3e..0e700d4 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.textual_outline_modelled.expect
@@ -1,20 +1,19 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
 
 class C {
-  A get y => null;
+  A get y => throw '';
   void set x(A value) {}
 }
 
 class D extends C {
-  B get y => null;
+  B get y => throw '';
   void set x(Object value) {}
 }
 
 class E extends C {
-  Object get y => null;
+  Object get y => throw '';
   void set x(B value) {}
 }
 
diff --git a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.expect b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.expect
index d576b70..7f32945 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -6,10 +6,10 @@
 //  - 'Object' is from 'dart:core'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_accessor_basic.dart'.
 // Change to a subtype of 'A'.
-//   Object get y => null;
+//   Object get y => throw '';
 //              ^
 // pkg/front_end/testcases/general/override_check_accessor_basic.dart:11:9: Context: This is the overridden method ('y').
-//   A get y => null;
+//   A get y => throw '';
 //         ^
 //
 // pkg/front_end/testcases/general/override_check_accessor_basic.dart:20:16: Error: The parameter 'value' of the method 'E.x' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.x'.
@@ -26,57 +26,37 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  set x(self::A* value) → void {}
-  get y() → self::A*
-    return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set x(self::A value) → void {}
+  get y() → self::A
+    return throw "";
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  set x(core::Object* value) → void {}
-  get y() → self::B*
-    return null;
+  set x(core::Object value) → void {}
+  get y() → self::B
+    return throw "";
 }
 class E extends self::C {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::C::•()
     ;
-  set x(self::B* value) → void {}
-  get y() → core::Object*
-    return null;
+  set x(self::B value) → void {}
+  get y() → core::Object
+    return throw "";
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.modular.expect
index d576b70..7f32945 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -6,10 +6,10 @@
 //  - 'Object' is from 'dart:core'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_accessor_basic.dart'.
 // Change to a subtype of 'A'.
-//   Object get y => null;
+//   Object get y => throw '';
 //              ^
 // pkg/front_end/testcases/general/override_check_accessor_basic.dart:11:9: Context: This is the overridden method ('y').
-//   A get y => null;
+//   A get y => throw '';
 //         ^
 //
 // pkg/front_end/testcases/general/override_check_accessor_basic.dart:20:16: Error: The parameter 'value' of the method 'E.x' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.x'.
@@ -26,57 +26,37 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  set x(self::A* value) → void {}
-  get y() → self::A*
-    return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set x(self::A value) → void {}
+  get y() → self::A
+    return throw "";
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  set x(core::Object* value) → void {}
-  get y() → self::B*
-    return null;
+  set x(core::Object value) → void {}
+  get y() → self::B
+    return throw "";
 }
 class E extends self::C {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::C::•()
     ;
-  set x(self::B* value) → void {}
-  get y() → core::Object*
-    return null;
+  set x(self::B value) → void {}
+  get y() → core::Object
+    return throw "";
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.outline.expect
index dc600f1..a6651d0 100644
--- a/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_accessor_basic.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -6,10 +6,10 @@
 //  - 'Object' is from 'dart:core'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_accessor_basic.dart'.
 // Change to a subtype of 'A'.
-//   Object get y => null;
+//   Object get y => throw '';
 //              ^
 // pkg/front_end/testcases/general/override_check_accessor_basic.dart:11:9: Context: This is the overridden method ('y').
-//   A get y => null;
+//   A get y => throw '';
 //         ^
 //
 // pkg/front_end/testcases/general/override_check_accessor_basic.dart:20:16: Error: The parameter 'value' of the method 'E.x' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.x'.
@@ -26,55 +26,35 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  set x(self::A* value) → void
+  set x(self::A value) → void
     ;
-  get y() → self::A*
+  get y() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  set x(core::Object* value) → void
+  set x(core::Object value) → void
     ;
-  get y() → self::B*
+  get y() → self::B
     ;
 }
 class E extends self::C {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
-  set x(self::B* value) → void
+  set x(self::B value) → void
     ;
-  get y() → core::Object*
+  get y() → core::Object
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/override_check_after_inference.dart b/pkg/front_end/testcases/general/override_check_after_inference.dart
index 91a39cb..e818940 100644
--- a/pkg/front_end/testcases/general/override_check_after_inference.dart
+++ b/pkg/front_end/testcases/general/override_check_after_inference.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class A {}
 
 class B extends A {}
diff --git a/pkg/front_end/testcases/general/override_check_after_inference.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_check_after_inference.dart.textual_outline.expect
index 3566c9f..b2c8457 100644
--- a/pkg/front_end/testcases/general/override_check_after_inference.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_check_after_inference.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
diff --git a/pkg/front_end/testcases/general/override_check_after_inference.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_check_after_inference.dart.textual_outline_modelled.expect
index 3566c9f..b2c8457 100644
--- a/pkg/front_end/testcases/general/override_check_after_inference.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_check_after_inference.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
diff --git a/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.expect b/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.expect
index f6a987f..827bd7e 100644
--- a/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -16,57 +16,37 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method f(self::A* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f(self::A x) → void {}
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  method f(self::A* x) → void {}
+  method f(self::A x) → void {}
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
-  method f(self::A* x) → void {}
+  method f(self::A x) → void {}
 }
 class F extends self::D {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super self::D::•()
     ;
-  method f(self::B* x) → void {}
+  method f(self::B x) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.modular.expect
index f6a987f..827bd7e 100644
--- a/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -16,57 +16,37 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method f(self::A* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f(self::A x) → void {}
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  method f(self::A* x) → void {}
+  method f(self::A x) → void {}
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
-  method f(self::A* x) → void {}
+  method f(self::A x) → void {}
 }
 class F extends self::D {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super self::D::•()
     ;
-  method f(self::B* x) → void {}
+  method f(self::B x) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.outline.expect
index 8b53cde..30f23cf 100644
--- a/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_after_inference.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -16,55 +16,35 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  method f(self::A* x) → void
+  method f(self::A x) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  method f(self::A* x) → void
+  method f(self::A x) → void
     ;
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
-  method f(self::A* x) → void
+  method f(self::A x) → void
     ;
 }
 class F extends self::D {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     ;
-  method f(self::B* x) → void
+  method f(self::B x) → void
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/override_check_basic.dart b/pkg/front_end/testcases/general/override_check_basic.dart
index acc74f9..04774f6 100644
--- a/pkg/front_end/testcases/general/override_check_basic.dart
+++ b/pkg/front_end/testcases/general/override_check_basic.dart
@@ -1,30 +1,30 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class A {}
 
 class B extends A {}
 
 class C {
   void f1(A x) {}
-  void f2([A x]) {}
-  void f3({A x}) {}
-  A f4() {}
+  void f2([A? x]) {}
+  void f3({A? x}) {}
+  A? f4() {}
 }
 
 class D extends C {
   void f1(Object x) {} // Ok
-  void f2([Object x]) {} // Ok
-  void f3({Object x}) {} // Ok
-  B f4() {} // Ok
+  void f2([Object? x]) {} // Ok
+  void f3({Object? x}) {} // Ok
+  B? f4() {} // Ok
 }
 
 class E extends C {
   void f1(B x) {}
-  void f2([B x]) {}
-  void f3({B x}) {}
-  Object f4() {}
+  void f2([B? x]) {}
+  void f3({B? x}) {}
+  Object? f4() {}
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_check_basic.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_check_basic.dart.textual_outline.expect
index 1b10878..aca06e2 100644
--- a/pkg/front_end/testcases/general/override_check_basic.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_check_basic.dart.textual_outline.expect
@@ -1,27 +1,26 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
 
 class C {
   void f1(A x) {}
-  void f2([A x]) {}
-  void f3({A x}) {}
-  A f4() {}
+  void f2([A? x]) {}
+  void f3({A? x}) {}
+  A? f4() {}
 }
 
 class D extends C {
   void f1(Object x) {}
-  void f2([Object x]) {}
-  void f3({Object x}) {}
-  B f4() {}
+  void f2([Object? x]) {}
+  void f3({Object? x}) {}
+  B? f4() {}
 }
 
 class E extends C {
   void f1(B x) {}
-  void f2([B x]) {}
-  void f3({B x}) {}
-  Object f4() {}
+  void f2([B? x]) {}
+  void f3({B? x}) {}
+  Object? f4() {}
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_check_basic.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_check_basic.dart.textual_outline_modelled.expect
index 91af33b..7b3ae98 100644
--- a/pkg/front_end/testcases/general/override_check_basic.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_check_basic.dart.textual_outline_modelled.expect
@@ -1,27 +1,26 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
 
 class C {
-  A f4() {}
+  A? f4() {}
   void f1(A x) {}
-  void f2([A x]) {}
-  void f3({A x}) {}
+  void f2([A? x]) {}
+  void f3({A? x}) {}
 }
 
 class D extends C {
-  B f4() {}
+  B? f4() {}
   void f1(Object x) {}
-  void f2([Object x]) {}
-  void f3({Object x}) {}
+  void f2([Object? x]) {}
+  void f3({Object? x}) {}
 }
 
 class E extends C {
-  Object f4() {}
+  Object? f4() {}
   void f1(B x) {}
-  void f2([B x]) {}
-  void f3({B x}) {}
+  void f2([B? x]) {}
+  void f3({B? x}) {}
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_check_basic.dart.weak.expect b/pkg/front_end/testcases/general/override_check_basic.dart.weak.expect
index e19c0a4..01ec495 100644
--- a/pkg/front_end/testcases/general/override_check_basic.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_check_basic.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -12,95 +12,75 @@
 //   void f1(A x) {}
 //        ^
 //
-// pkg/front_end/testcases/general/override_check_basic.dart:25:14: Error: The parameter 'x' of the method 'E.f2' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.f2'.
+// pkg/front_end/testcases/general/override_check_basic.dart:25:15: Error: The parameter 'x' of the method 'E.f2' has type 'B?', which does not match the corresponding type, 'A?', in the overridden method, 'C.f2'.
 //  - 'B' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
-// Change to a supertype of 'A', or, for a covariant parameter, a subtype.
-//   void f2([B x]) {}
-//              ^
+// Change to a supertype of 'A?', or, for a covariant parameter, a subtype.
+//   void f2([B? x]) {}
+//               ^
 // pkg/front_end/testcases/general/override_check_basic.dart:11:8: Context: This is the overridden method ('f2').
-//   void f2([A x]) {}
+//   void f2([A? x]) {}
 //        ^
 //
-// pkg/front_end/testcases/general/override_check_basic.dart:26:14: Error: The parameter 'x' of the method 'E.f3' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.f3'.
+// pkg/front_end/testcases/general/override_check_basic.dart:26:15: Error: The parameter 'x' of the method 'E.f3' has type 'B?', which does not match the corresponding type, 'A?', in the overridden method, 'C.f3'.
 //  - 'B' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
-// Change to a supertype of 'A', or, for a covariant parameter, a subtype.
-//   void f3({B x}) {}
-//              ^
+// Change to a supertype of 'A?', or, for a covariant parameter, a subtype.
+//   void f3({B? x}) {}
+//               ^
 // pkg/front_end/testcases/general/override_check_basic.dart:12:8: Context: This is the overridden method ('f3').
-//   void f3({A x}) {}
+//   void f3({A? x}) {}
 //        ^
 //
-// pkg/front_end/testcases/general/override_check_basic.dart:27:10: Error: The return type of the method 'E.f4' is 'Object', which does not match the return type, 'A', of the overridden method, 'C.f4'.
+// pkg/front_end/testcases/general/override_check_basic.dart:27:11: Error: The return type of the method 'E.f4' is 'Object?', which does not match the return type, 'A?', of the overridden method, 'C.f4'.
 //  - 'Object' is from 'dart:core'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
-// Change to a subtype of 'A'.
-//   Object f4() {}
-//          ^
-// pkg/front_end/testcases/general/override_check_basic.dart:13:5: Context: This is the overridden method ('f4').
-//   A f4() {}
-//     ^
+// Change to a subtype of 'A?'.
+//   Object? f4() {}
+//           ^
+// pkg/front_end/testcases/general/override_check_basic.dart:13:6: Context: This is the overridden method ('f4').
+//   A? f4() {}
+//      ^
 //
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method f1(self::A* x) → void {}
-  method f2([self::A* x = #C1]) → void {}
-  method f3({self::A* x = #C1}) → void {}
-  method f4() → self::A* {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f1(self::A x) → void {}
+  method f2([self::A? x = #C1]) → void {}
+  method f3({self::A? x = #C1}) → void {}
+  method f4() → self::A? {}
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  method f1(core::Object* x) → void {}
-  method f2([core::Object* x = #C1]) → void {}
-  method f3({core::Object* x = #C1}) → void {}
-  method f4() → self::B* {}
+  method f1(core::Object x) → void {}
+  method f2([core::Object? x = #C1]) → void {}
+  method f3({core::Object? x = #C1}) → void {}
+  method f4() → self::B? {}
 }
 class E extends self::C {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::C::•()
     ;
-  method f1(self::B* x) → void {}
-  method f2([self::B* x = #C1]) → void {}
-  method f3({self::B* x = #C1}) → void {}
-  method f4() → core::Object* {}
+  method f1(self::B x) → void {}
+  method f2([self::B? x = #C1]) → void {}
+  method f3({self::B? x = #C1}) → void {}
+  method f4() → core::Object? {}
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/override_check_basic.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_check_basic.dart.weak.modular.expect
index e19c0a4..01ec495 100644
--- a/pkg/front_end/testcases/general/override_check_basic.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_check_basic.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -12,95 +12,75 @@
 //   void f1(A x) {}
 //        ^
 //
-// pkg/front_end/testcases/general/override_check_basic.dart:25:14: Error: The parameter 'x' of the method 'E.f2' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.f2'.
+// pkg/front_end/testcases/general/override_check_basic.dart:25:15: Error: The parameter 'x' of the method 'E.f2' has type 'B?', which does not match the corresponding type, 'A?', in the overridden method, 'C.f2'.
 //  - 'B' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
-// Change to a supertype of 'A', or, for a covariant parameter, a subtype.
-//   void f2([B x]) {}
-//              ^
+// Change to a supertype of 'A?', or, for a covariant parameter, a subtype.
+//   void f2([B? x]) {}
+//               ^
 // pkg/front_end/testcases/general/override_check_basic.dart:11:8: Context: This is the overridden method ('f2').
-//   void f2([A x]) {}
+//   void f2([A? x]) {}
 //        ^
 //
-// pkg/front_end/testcases/general/override_check_basic.dart:26:14: Error: The parameter 'x' of the method 'E.f3' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.f3'.
+// pkg/front_end/testcases/general/override_check_basic.dart:26:15: Error: The parameter 'x' of the method 'E.f3' has type 'B?', which does not match the corresponding type, 'A?', in the overridden method, 'C.f3'.
 //  - 'B' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
-// Change to a supertype of 'A', or, for a covariant parameter, a subtype.
-//   void f3({B x}) {}
-//              ^
+// Change to a supertype of 'A?', or, for a covariant parameter, a subtype.
+//   void f3({B? x}) {}
+//               ^
 // pkg/front_end/testcases/general/override_check_basic.dart:12:8: Context: This is the overridden method ('f3').
-//   void f3({A x}) {}
+//   void f3({A? x}) {}
 //        ^
 //
-// pkg/front_end/testcases/general/override_check_basic.dart:27:10: Error: The return type of the method 'E.f4' is 'Object', which does not match the return type, 'A', of the overridden method, 'C.f4'.
+// pkg/front_end/testcases/general/override_check_basic.dart:27:11: Error: The return type of the method 'E.f4' is 'Object?', which does not match the return type, 'A?', of the overridden method, 'C.f4'.
 //  - 'Object' is from 'dart:core'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
-// Change to a subtype of 'A'.
-//   Object f4() {}
-//          ^
-// pkg/front_end/testcases/general/override_check_basic.dart:13:5: Context: This is the overridden method ('f4').
-//   A f4() {}
-//     ^
+// Change to a subtype of 'A?'.
+//   Object? f4() {}
+//           ^
+// pkg/front_end/testcases/general/override_check_basic.dart:13:6: Context: This is the overridden method ('f4').
+//   A? f4() {}
+//      ^
 //
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method f1(self::A* x) → void {}
-  method f2([self::A* x = #C1]) → void {}
-  method f3({self::A* x = #C1}) → void {}
-  method f4() → self::A* {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f1(self::A x) → void {}
+  method f2([self::A? x = #C1]) → void {}
+  method f3({self::A? x = #C1}) → void {}
+  method f4() → self::A? {}
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  method f1(core::Object* x) → void {}
-  method f2([core::Object* x = #C1]) → void {}
-  method f3({core::Object* x = #C1}) → void {}
-  method f4() → self::B* {}
+  method f1(core::Object x) → void {}
+  method f2([core::Object? x = #C1]) → void {}
+  method f3({core::Object? x = #C1}) → void {}
+  method f4() → self::B? {}
 }
 class E extends self::C {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::C::•()
     ;
-  method f1(self::B* x) → void {}
-  method f2([self::B* x = #C1]) → void {}
-  method f3({self::B* x = #C1}) → void {}
-  method f4() → core::Object* {}
+  method f1(self::B x) → void {}
+  method f2([self::B? x = #C1]) → void {}
+  method f3({self::B? x = #C1}) → void {}
+  method f4() → core::Object? {}
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/override_check_basic.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_check_basic.dart.weak.outline.expect
index 6cf4efa..50f0b43 100644
--- a/pkg/front_end/testcases/general/override_check_basic.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_basic.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -12,101 +12,81 @@
 //   void f1(A x) {}
 //        ^
 //
-// pkg/front_end/testcases/general/override_check_basic.dart:25:14: Error: The parameter 'x' of the method 'E.f2' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.f2'.
+// pkg/front_end/testcases/general/override_check_basic.dart:25:15: Error: The parameter 'x' of the method 'E.f2' has type 'B?', which does not match the corresponding type, 'A?', in the overridden method, 'C.f2'.
 //  - 'B' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
-// Change to a supertype of 'A', or, for a covariant parameter, a subtype.
-//   void f2([B x]) {}
-//              ^
+// Change to a supertype of 'A?', or, for a covariant parameter, a subtype.
+//   void f2([B? x]) {}
+//               ^
 // pkg/front_end/testcases/general/override_check_basic.dart:11:8: Context: This is the overridden method ('f2').
-//   void f2([A x]) {}
+//   void f2([A? x]) {}
 //        ^
 //
-// pkg/front_end/testcases/general/override_check_basic.dart:26:14: Error: The parameter 'x' of the method 'E.f3' has type 'B', which does not match the corresponding type, 'A', in the overridden method, 'C.f3'.
+// pkg/front_end/testcases/general/override_check_basic.dart:26:15: Error: The parameter 'x' of the method 'E.f3' has type 'B?', which does not match the corresponding type, 'A?', in the overridden method, 'C.f3'.
 //  - 'B' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
-// Change to a supertype of 'A', or, for a covariant parameter, a subtype.
-//   void f3({B x}) {}
-//              ^
+// Change to a supertype of 'A?', or, for a covariant parameter, a subtype.
+//   void f3({B? x}) {}
+//               ^
 // pkg/front_end/testcases/general/override_check_basic.dart:12:8: Context: This is the overridden method ('f3').
-//   void f3({A x}) {}
+//   void f3({A? x}) {}
 //        ^
 //
-// pkg/front_end/testcases/general/override_check_basic.dart:27:10: Error: The return type of the method 'E.f4' is 'Object', which does not match the return type, 'A', of the overridden method, 'C.f4'.
+// pkg/front_end/testcases/general/override_check_basic.dart:27:11: Error: The return type of the method 'E.f4' is 'Object?', which does not match the return type, 'A?', of the overridden method, 'C.f4'.
 //  - 'Object' is from 'dart:core'.
 //  - 'A' is from 'pkg/front_end/testcases/general/override_check_basic.dart'.
-// Change to a subtype of 'A'.
-//   Object f4() {}
-//          ^
-// pkg/front_end/testcases/general/override_check_basic.dart:13:5: Context: This is the overridden method ('f4').
-//   A f4() {}
-//     ^
+// Change to a subtype of 'A?'.
+//   Object? f4() {}
+//           ^
+// pkg/front_end/testcases/general/override_check_basic.dart:13:6: Context: This is the overridden method ('f4').
+//   A? f4() {}
+//      ^
 //
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  method f1(self::A* x) → void
+  method f1(self::A x) → void
     ;
-  method f2([self::A* x]) → void
+  method f2([self::A? x]) → void
     ;
-  method f3({self::A* x}) → void
+  method f3({self::A? x}) → void
     ;
-  method f4() → self::A*
+  method f4() → self::A?
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  method f1(core::Object* x) → void
+  method f1(core::Object x) → void
     ;
-  method f2([core::Object* x]) → void
+  method f2([core::Object? x]) → void
     ;
-  method f3({core::Object* x}) → void
+  method f3({core::Object? x}) → void
     ;
-  method f4() → self::B*
+  method f4() → self::B?
     ;
 }
 class E extends self::C {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
-  method f1(self::B* x) → void
+  method f1(self::B x) → void
     ;
-  method f2([self::B* x]) → void
+  method f2([self::B? x]) → void
     ;
-  method f3({self::B* x}) → void
+  method f3({self::B? x}) → void
     ;
-  method f4() → core::Object*
+  method f4() → core::Object?
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart
index 3813c09..3058fbf 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // This test checks that an override of a generic method is allowed in case of
 // correctly defined f-bounded type variables.
 
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.textual_outline.expect
index 6c7d0ca..eaac90c 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo<T extends Foo<T>> {}
 
 abstract class Bar {
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.textual_outline_modelled.expect
index 7d0123c..cdebc76 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Bar {
   void fisk<S extends Foo<S>>();
 }
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.expect b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.expect
index ed9f7b4..3f2545a 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.expect
@@ -1,54 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class Foo<T extends self::Foo<self::Foo::T*>* = self::Foo<dynamic>*> extends core::Object {
-  synthetic constructor •() → self::Foo<self::Foo::T*>*
+class Foo<T extends self::Foo<self::Foo::T> = self::Foo<dynamic>> extends core::Object {
+  synthetic constructor •() → self::Foo<self::Foo::T>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Bar extends core::Object {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method fisk<S extends self::Foo<self::Bar::fisk::S> = self::Foo<dynamic>>() → void;
 }
 class Hest extends core::Object implements self::Bar {
-  synthetic constructor •() → self::Hest*
+  synthetic constructor •() → self::Hest
     : super core::Object::•()
     ;
   @#C1
-  method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method fisk<U extends self::Foo<self::Hest::fisk::U> = self::Foo<dynamic>>() → void {}
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.modular.expect
index ed9f7b4..3f2545a 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.modular.expect
@@ -1,54 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class Foo<T extends self::Foo<self::Foo::T*>* = self::Foo<dynamic>*> extends core::Object {
-  synthetic constructor •() → self::Foo<self::Foo::T*>*
+class Foo<T extends self::Foo<self::Foo::T> = self::Foo<dynamic>> extends core::Object {
+  synthetic constructor •() → self::Foo<self::Foo::T>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Bar extends core::Object {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method fisk<S extends self::Foo<self::Bar::fisk::S> = self::Foo<dynamic>>() → void;
 }
 class Hest extends core::Object implements self::Bar {
-  synthetic constructor •() → self::Hest*
+  synthetic constructor •() → self::Hest
     : super core::Object::•()
     ;
   @#C1
-  method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method fisk<U extends self::Foo<self::Hest::fisk::U> = self::Foo<dynamic>>() → void {}
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.outline.expect
index 0242ff5..4da40e5 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.outline.expect
@@ -1,52 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class Foo<T extends self::Foo<self::Foo::T*>* = self::Foo<dynamic>*> extends core::Object {
-  synthetic constructor •() → self::Foo<self::Foo::T*>*
+class Foo<T extends self::Foo<self::Foo::T> = self::Foo<dynamic>> extends core::Object {
+  synthetic constructor •() → self::Foo<self::Foo::T>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Bar extends core::Object {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     ;
-  abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method fisk<S extends self::Foo<self::Bar::fisk::S> = self::Foo<dynamic>>() → void;
 }
 class Hest extends core::Object implements self::Bar {
-  synthetic constructor •() → self::Hest*
+  synthetic constructor •() → self::Hest
     ;
   @core::override
-  method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void
+  method fisk<U extends self::Foo<self::Hest::fisk::U> = self::Foo<dynamic>>() → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.transformed.expect b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.transformed.expect
index ed9f7b4..3f2545a 100644
--- a/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/override_check_generic_method_f_bounded.dart.weak.transformed.expect
@@ -1,54 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class Foo<T extends self::Foo<self::Foo::T*>* = self::Foo<dynamic>*> extends core::Object {
-  synthetic constructor •() → self::Foo<self::Foo::T*>*
+class Foo<T extends self::Foo<self::Foo::T> = self::Foo<dynamic>> extends core::Object {
+  synthetic constructor •() → self::Foo<self::Foo::T>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Bar extends core::Object {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  abstract method fisk<S extends self::Foo<self::Bar::fisk::S*>* = self::Foo<dynamic>*>() → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method fisk<S extends self::Foo<self::Bar::fisk::S> = self::Foo<dynamic>>() → void;
 }
 class Hest extends core::Object implements self::Bar {
-  synthetic constructor •() → self::Hest*
+  synthetic constructor •() → self::Hest
     : super core::Object::•()
     ;
   @#C1
-  method fisk<U extends self::Foo<self::Hest::fisk::U*>* = self::Foo<dynamic>*>() → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method fisk<U extends self::Foo<self::Hest::fisk::U> = self::Foo<dynamic>>() → void {}
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart b/pkg/front_end/testcases/general/override_check_two_substitutions.dart
index 096bff7..5f5ea0f 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class A<T> {
   void f<U>(Map<T, U> m) {}
 }
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.textual_outline.expect
index b13a767..9548980 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<T> {
   void f<U>(Map<T, U> m) {}
 }
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.textual_outline_modelled.expect
index b13a767..9548980 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<T> {
   void f<U>(Map<T, U> m) {}
 }
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.expect b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.expect
index 54a4764..6f82627 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::T%>
     : super core::Object::•()
     ;
-  method f<U extends core::Object* = dynamic>(covariant-by-class core::Map<self::A::T*, self::A::f::U*>* m) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f<U extends core::Object? = dynamic>(covariant-by-class core::Map<self::A::T%, self::A::f::U%> m) → void {}
 }
-class B extends self::A<core::String*> {
-  synthetic constructor •() → self::B*
+class B extends self::A<core::String> {
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  method f<V extends core::Object* = dynamic>(covariant-by-class core::Map<core::String*, self::B::f::V*>* m) → void {}
+  method f<V extends core::Object? = dynamic>(covariant-by-class core::Map<core::String, self::B::f::V%> m) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.modular.expect
index 54a4764..6f82627 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.modular.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::T%>
     : super core::Object::•()
     ;
-  method f<U extends core::Object* = dynamic>(covariant-by-class core::Map<self::A::T*, self::A::f::U*>* m) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f<U extends core::Object? = dynamic>(covariant-by-class core::Map<self::A::T%, self::A::f::U%> m) → void {}
 }
-class B extends self::A<core::String*> {
-  synthetic constructor •() → self::B*
+class B extends self::A<core::String> {
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  method f<V extends core::Object* = dynamic>(covariant-by-class core::Map<core::String*, self::B::f::V*>* m) → void {}
+  method f<V extends core::Object? = dynamic>(covariant-by-class core::Map<core::String, self::B::f::V%> m) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.outline.expect
index cf3b6b2..458fe57 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.outline.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::T%>
     ;
-  method f<U extends core::Object* = dynamic>(covariant-by-class core::Map<self::A::T*, self::A::f::U*>* m) → void
+  method f<U extends core::Object? = dynamic>(covariant-by-class core::Map<self::A::T%, self::A::f::U%> m) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class B extends self::A<core::String*> {
-  synthetic constructor •() → self::B*
+class B extends self::A<core::String> {
+  synthetic constructor •() → self::B
     ;
-  method f<V extends core::Object* = dynamic>(covariant-by-class core::Map<core::String*, self::B::f::V*>* m) → void
+  method f<V extends core::Object? = dynamic>(covariant-by-class core::Map<core::String, self::B::f::V%> m) → void
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.transformed.expect b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.transformed.expect
index 54a4764..6f82627 100644
--- a/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/override_check_two_substitutions.dart.weak.transformed.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::T%>
     : super core::Object::•()
     ;
-  method f<U extends core::Object* = dynamic>(covariant-by-class core::Map<self::A::T*, self::A::f::U*>* m) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f<U extends core::Object? = dynamic>(covariant-by-class core::Map<self::A::T%, self::A::f::U%> m) → void {}
 }
-class B extends self::A<core::String*> {
-  synthetic constructor •() → self::B*
+class B extends self::A<core::String> {
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  method f<V extends core::Object* = dynamic>(covariant-by-class core::Map<core::String*, self::B::f::V*>* m) → void {}
+  method f<V extends core::Object? = dynamic>(covariant-by-class core::Map<core::String, self::B::f::V%> m) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart
index 4f7466b..09df2e39 100644
--- a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart
+++ b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class A {}
 
 class B extends A {}
diff --git a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.textual_outline.expect
index f024389..1c8bfe2 100644
--- a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
diff --git a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.textual_outline_modelled.expect
index f024389..1c8bfe2 100644
--- a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
diff --git a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.expect b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.expect
index ceabd22..36b4cca 100644
--- a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -25,55 +25,35 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method f1(covariant-by-declaration self::A* x) → void {}
-  method f2(self::A* x) → void {}
-  method f3(covariant-by-declaration self::A* x) → void {}
-  method f4(self::A* x) → void {}
-  method f5(covariant-by-declaration self::A* x) → void {}
-  method f6(covariant-by-declaration self::B* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f1(covariant-by-declaration self::A x) → void {}
+  method f2(self::A x) → void {}
+  method f3(covariant-by-declaration self::A x) → void {}
+  method f4(self::A x) → void {}
+  method f5(covariant-by-declaration self::A x) → void {}
+  method f6(covariant-by-declaration self::B x) → void {}
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  method f1(covariant-by-declaration self::B* x) → void {}
-  method f2(covariant-by-declaration self::B* x) → void {}
-  method f3(covariant-by-declaration self::B* x) → void {}
-  method f4(self::B* x) → void {}
-  method f5(covariant-by-declaration core::String* x) → void {}
-  method f6(covariant-by-declaration self::A* x) → void {}
+  method f1(covariant-by-declaration self::B x) → void {}
+  method f2(covariant-by-declaration self::B x) → void {}
+  method f3(covariant-by-declaration self::B x) → void {}
+  method f4(self::B x) → void {}
+  method f5(covariant-by-declaration core::String x) → void {}
+  method f6(covariant-by-declaration self::A x) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.modular.expect
index ceabd22..36b4cca 100644
--- a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -25,55 +25,35 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method f1(covariant-by-declaration self::A* x) → void {}
-  method f2(self::A* x) → void {}
-  method f3(covariant-by-declaration self::A* x) → void {}
-  method f4(self::A* x) → void {}
-  method f5(covariant-by-declaration self::A* x) → void {}
-  method f6(covariant-by-declaration self::B* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f1(covariant-by-declaration self::A x) → void {}
+  method f2(self::A x) → void {}
+  method f3(covariant-by-declaration self::A x) → void {}
+  method f4(self::A x) → void {}
+  method f5(covariant-by-declaration self::A x) → void {}
+  method f6(covariant-by-declaration self::B x) → void {}
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  method f1(covariant-by-declaration self::B* x) → void {}
-  method f2(covariant-by-declaration self::B* x) → void {}
-  method f3(covariant-by-declaration self::B* x) → void {}
-  method f4(self::B* x) → void {}
-  method f5(covariant-by-declaration core::String* x) → void {}
-  method f6(covariant-by-declaration self::A* x) → void {}
+  method f1(covariant-by-declaration self::B x) → void {}
+  method f2(covariant-by-declaration self::B x) → void {}
+  method f3(covariant-by-declaration self::B x) → void {}
+  method f4(self::B x) → void {}
+  method f5(covariant-by-declaration core::String x) → void {}
+  method f6(covariant-by-declaration self::A x) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.outline.expect
index 4d18123..a77e8b4 100644
--- a/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_check_with_covariant_modifier.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -25,63 +25,43 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  method f1(covariant-by-declaration self::A* x) → void
+  method f1(covariant-by-declaration self::A x) → void
     ;
-  method f2(self::A* x) → void
+  method f2(self::A x) → void
     ;
-  method f3(covariant-by-declaration self::A* x) → void
+  method f3(covariant-by-declaration self::A x) → void
     ;
-  method f4(self::A* x) → void
+  method f4(self::A x) → void
     ;
-  method f5(covariant-by-declaration self::A* x) → void
+  method f5(covariant-by-declaration self::A x) → void
     ;
-  method f6(covariant-by-declaration self::B* x) → void
+  method f6(covariant-by-declaration self::B x) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  method f1(covariant-by-declaration self::B* x) → void
+  method f1(covariant-by-declaration self::B x) → void
     ;
-  method f2(covariant-by-declaration self::B* x) → void
+  method f2(covariant-by-declaration self::B x) → void
     ;
-  method f3(covariant-by-declaration self::B* x) → void
+  method f3(covariant-by-declaration self::B x) → void
     ;
-  method f4(self::B* x) → void
+  method f4(self::B x) → void
     ;
-  method f5(covariant-by-declaration core::String* x) → void
+  method f5(covariant-by-declaration core::String x) → void
     ;
-  method f6(covariant-by-declaration self::A* x) → void
+  method f6(covariant-by-declaration self::A x) → void
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart
index f15fb92..8035f1d 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. 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
+
 abstract class A {
   num get getterFromGetter;
 
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.textual_outline.expect
index d64503e..d720f29 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class A {
   num get getterFromGetter;
   set setterFromSetter(num value);
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.textual_outline_modelled.expect
index cda97df..81cac22 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class A {
   num get getterFromGetter;
   num get getterFromGetterWithSetterConflict;
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.expect b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.expect
index a188410..f8ad4ec 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.expect
@@ -1,117 +1,77 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract set getterFromSetter(core::num* value) → void;
-  abstract get setterFromGetter() → core::num*;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract set getterFromSetter(core::num value) → void;
+  abstract get setterFromGetter() → core::num;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set getterFromGetterWithSetterConflict(dynamic num) → void;
-  abstract get setterFromSetterWithGetterConflict() → core::num*;
+  abstract get setterFromSetterWithGetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic num) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::int* value) → void;
-  abstract get setterFromGetter() → core::int*;
-  abstract get setterFromSetterWithGetterConflict() → core::int*;
-  abstract set getterFromGetterWithSetterConflict(core::int* value) → void;
-  abstract set getterFromSetter(core::int* value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::int value) → void;
+  abstract get setterFromGetter() → core::int;
+  abstract get setterFromSetterWithGetterConflict() → core::int;
+  abstract set getterFromGetterWithSetterConflict(core::int value) → void;
+  abstract set getterFromSetter(core::int value) → void;
 }
 abstract class C extends self::A {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::A::•()
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::num* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::num value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
 }
 abstract class D extends self::A implements self::B {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::A::•()
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::int* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::int value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get setterFromGetter() → core::int*; -> self::B::setterFromGetter
-  abstract member-signature get setterFromSetterWithGetterConflict() → core::int*; -> self::B::setterFromSetterWithGetterConflict
+  abstract member-signature get setterFromGetter() → core::int; -> self::B::setterFromGetter
+  abstract member-signature get setterFromSetterWithGetterConflict() → core::int; -> self::B::setterFromSetterWithGetterConflict
 }
 abstract class E extends core::Object implements self::A {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::num* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::num value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class F extends core::Object implements self::A, self::B {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::int* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::int value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get setterFromGetter() → core::int*; -> self::B::setterFromGetter
-  abstract member-signature get setterFromSetterWithGetterConflict() → core::int*; -> self::B::setterFromSetterWithGetterConflict
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract member-signature get setterFromGetter() → core::int; -> self::B::setterFromGetter
+  abstract member-signature get setterFromSetterWithGetterConflict() → core::int; -> self::B::setterFromSetterWithGetterConflict
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.modular.expect
index a188410..f8ad4ec 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.modular.expect
@@ -1,117 +1,77 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract set getterFromSetter(core::num* value) → void;
-  abstract get setterFromGetter() → core::num*;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract set getterFromSetter(core::num value) → void;
+  abstract get setterFromGetter() → core::num;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set getterFromGetterWithSetterConflict(dynamic num) → void;
-  abstract get setterFromSetterWithGetterConflict() → core::num*;
+  abstract get setterFromSetterWithGetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic num) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::int* value) → void;
-  abstract get setterFromGetter() → core::int*;
-  abstract get setterFromSetterWithGetterConflict() → core::int*;
-  abstract set getterFromGetterWithSetterConflict(core::int* value) → void;
-  abstract set getterFromSetter(core::int* value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::int value) → void;
+  abstract get setterFromGetter() → core::int;
+  abstract get setterFromSetterWithGetterConflict() → core::int;
+  abstract set getterFromGetterWithSetterConflict(core::int value) → void;
+  abstract set getterFromSetter(core::int value) → void;
 }
 abstract class C extends self::A {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::A::•()
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::num* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::num value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
 }
 abstract class D extends self::A implements self::B {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::A::•()
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::int* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::int value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get setterFromGetter() → core::int*; -> self::B::setterFromGetter
-  abstract member-signature get setterFromSetterWithGetterConflict() → core::int*; -> self::B::setterFromSetterWithGetterConflict
+  abstract member-signature get setterFromGetter() → core::int; -> self::B::setterFromGetter
+  abstract member-signature get setterFromSetterWithGetterConflict() → core::int; -> self::B::setterFromSetterWithGetterConflict
 }
 abstract class E extends core::Object implements self::A {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::num* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::num value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class F extends core::Object implements self::A, self::B {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::int* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::int value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get setterFromGetter() → core::int*; -> self::B::setterFromGetter
-  abstract member-signature get setterFromSetterWithGetterConflict() → core::int*; -> self::B::setterFromSetterWithGetterConflict
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract member-signature get setterFromGetter() → core::int; -> self::B::setterFromGetter
+  abstract member-signature get setterFromSetterWithGetterConflict() → core::int; -> self::B::setterFromSetterWithGetterConflict
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.outline.expect
index 0cc2e71..3a91293 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.outline.expect
@@ -1,112 +1,72 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract set getterFromSetter(core::num* value) → void;
-  abstract get setterFromGetter() → core::num*;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract set getterFromSetter(core::num value) → void;
+  abstract get setterFromGetter() → core::num;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set getterFromGetterWithSetterConflict(dynamic num) → void;
-  abstract get setterFromSetterWithGetterConflict() → core::num*;
+  abstract get setterFromSetterWithGetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic num) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::int* value) → void;
-  abstract get setterFromGetter() → core::int*;
-  abstract get setterFromSetterWithGetterConflict() → core::int*;
-  abstract set getterFromGetterWithSetterConflict(core::int* value) → void;
-  abstract set getterFromSetter(core::int* value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::int value) → void;
+  abstract get setterFromGetter() → core::int;
+  abstract get setterFromSetterWithGetterConflict() → core::int;
+  abstract set getterFromGetterWithSetterConflict(core::int value) → void;
+  abstract set getterFromSetter(core::int value) → void;
 }
 abstract class C extends self::A {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::num* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::num value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
 }
 abstract class D extends self::A implements self::B {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::int* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::int value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get setterFromGetter() → core::int*; -> self::B::setterFromGetter
-  abstract member-signature get setterFromSetterWithGetterConflict() → core::int*; -> self::B::setterFromSetterWithGetterConflict
+  abstract member-signature get setterFromGetter() → core::int; -> self::B::setterFromGetter
+  abstract member-signature get setterFromSetterWithGetterConflict() → core::int; -> self::B::setterFromSetterWithGetterConflict
 }
 abstract class E extends core::Object implements self::A {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::num* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::num value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class F extends core::Object implements self::A, self::B {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::int* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::int value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get setterFromGetter() → core::int*; -> self::B::setterFromGetter
-  abstract member-signature get setterFromSetterWithGetterConflict() → core::int*; -> self::B::setterFromSetterWithGetterConflict
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract member-signature get setterFromGetter() → core::int; -> self::B::setterFromGetter
+  abstract member-signature get setterFromSetterWithGetterConflict() → core::int; -> self::B::setterFromSetterWithGetterConflict
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.transformed.expect b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.transformed.expect
index a188410..f8ad4ec 100644
--- a/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_getters_and_setters.dart.weak.transformed.expect
@@ -1,117 +1,77 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract set getterFromSetter(core::num* value) → void;
-  abstract get setterFromGetter() → core::num*;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract set getterFromSetter(core::num value) → void;
+  abstract get setterFromGetter() → core::num;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set getterFromGetterWithSetterConflict(dynamic num) → void;
-  abstract get setterFromSetterWithGetterConflict() → core::num*;
+  abstract get setterFromSetterWithGetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic num) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::int* value) → void;
-  abstract get setterFromGetter() → core::int*;
-  abstract get setterFromSetterWithGetterConflict() → core::int*;
-  abstract set getterFromGetterWithSetterConflict(core::int* value) → void;
-  abstract set getterFromSetter(core::int* value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::int value) → void;
+  abstract get setterFromGetter() → core::int;
+  abstract get setterFromSetterWithGetterConflict() → core::int;
+  abstract set getterFromGetterWithSetterConflict(core::int value) → void;
+  abstract set getterFromSetter(core::int value) → void;
 }
 abstract class C extends self::A {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::A::•()
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::num* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::num value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
 }
 abstract class D extends self::A implements self::B {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::A::•()
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::int* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::int value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get setterFromGetter() → core::int*; -> self::B::setterFromGetter
-  abstract member-signature get setterFromSetterWithGetterConflict() → core::int*; -> self::B::setterFromSetterWithGetterConflict
+  abstract member-signature get setterFromGetter() → core::int; -> self::B::setterFromGetter
+  abstract member-signature get setterFromSetterWithGetterConflict() → core::int; -> self::B::setterFromSetterWithGetterConflict
 }
 abstract class E extends core::Object implements self::A {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::num*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::num* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::num;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::num value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class F extends core::Object implements self::A, self::B {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super core::Object::•()
     ;
-  abstract get getterFromGetter() → core::int*;
-  abstract set setterFromSetter(core::num* value) → void;
-  abstract get getterFromSetter() → core::num*;
-  abstract set setterFromGetter(core::int* value) → void;
-  abstract get getterFromGetterWithSetterConflict() → core::num*;
+  abstract get getterFromGetter() → core::int;
+  abstract set setterFromSetter(core::num value) → void;
+  abstract get getterFromSetter() → core::num;
+  abstract set setterFromGetter(core::int value) → void;
+  abstract get getterFromGetterWithSetterConflict() → core::num;
   abstract set setterFromSetterWithGetterConflict(dynamic value) → void;
-  abstract member-signature get setterFromGetter() → core::int*; -> self::B::setterFromGetter
-  abstract member-signature get setterFromSetterWithGetterConflict() → core::int*; -> self::B::setterFromSetterWithGetterConflict
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract member-signature get setterFromGetter() → core::int; -> self::B::setterFromGetter
+  abstract member-signature get setterFromSetterWithGetterConflict() → core::int; -> self::B::setterFromSetterWithGetterConflict
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart b/pkg/front_end/testcases/general/override_inference_for_setters.dart
index 97ffd7f..f93d2f8 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart
@@ -1,9 +1,9 @@
 // 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.
-// @dart=2.9
+
 class B {
-  num get foo => null;
+  num get foo => throw '';
   set foo(dynamic newFoo) {}
 }
 
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_inference_for_setters.dart.textual_outline.expect
index 7fc47a9..79021a6 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart.textual_outline.expect
@@ -1,6 +1,5 @@
-// @dart = 2.9
 class B {
-  num get foo => null;
+  num get foo => throw '';
   set foo(dynamic newFoo) {}
 }
 
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_inference_for_setters.dart.textual_outline_modelled.expect
index fcd1a6e..d8b60cf 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart.textual_outline_modelled.expect
@@ -1,10 +1,9 @@
-// @dart = 2.9
 class A extends B {
   set foo(newFoo) {}
 }
 
 class B {
-  num get foo => null;
+  num get foo => throw '';
   set foo(dynamic newFoo) {}
 }
 
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.expect b/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.expect
index 845e3fb..fbc6483 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  get foo() → core::num*
-    return null;
+  get foo() → core::num
+    return throw "";
   set foo(dynamic newFoo) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class A extends self::B {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super self::B::•()
     ;
   set foo(dynamic newFoo) → void {}
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.modular.expect
index 845e3fb..fbc6483 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.modular.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  get foo() → core::num*
-    return null;
+  get foo() → core::num
+    return throw "";
   set foo(dynamic newFoo) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class A extends self::B {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super self::B::•()
     ;
   set foo(dynamic newFoo) → void {}
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.outline.expect
index 77549aa..b3cbd65 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.outline.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  get foo() → core::num*
+  get foo() → core::num
     ;
   set foo(dynamic newFoo) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class A extends self::B {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
   set foo(dynamic newFoo) → void
     ;
diff --git a/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.transformed.expect b/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.transformed.expect
index 845e3fb..fbc6483 100644
--- a/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/override_inference_for_setters.dart.weak.transformed.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  get foo() → core::num*
-    return null;
+  get foo() → core::num
+    return throw "";
   set foo(dynamic newFoo) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class A extends self::B {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super self::B::•()
     ;
   set foo(dynamic newFoo) → void {}
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart
index 54278d0..b2e98ef 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart
@@ -1,35 +1,35 @@
 // 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.
-// @dart=2.9
+
 // The test checks that override-based inference for named parameters isn't
 // affected by the name-based ordering of the parameters.
 
 class A {
-  foo({bool c = true, bool a}) {}
+  foo({bool? c = true, bool? a}) {}
 }
 
 class B extends A {
-  foo({c = true, bool a}) {}
+  foo({c = true, bool? a}) {}
 }
 
 class C extends B {
-  foo({bool c = true, bool a}) {}
+  foo({bool? c = true, bool? a}) {}
 }
 
 // A1, B1, and C1 are similar to A, B, and C, only they have the names of the
 // named parameters swapped, to test that the alternative ordering works.
 
 class A1 {
-  foo({bool a = true, bool c}) {}
+  foo({bool? a = true, bool? c}) {}
 }
 
 class B1 extends A1 {
-  foo({a = true, bool c}) {}
+  foo({a = true, bool? c}) {}
 }
 
 class C1 extends B1 {
-  foo({bool a = true, bool c}) {}
+  foo({bool? a = true, bool? c}) {}
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.textual_outline.expect
index c73e09b..5585831 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.textual_outline.expect
@@ -1,26 +1,25 @@
-// @dart = 2.9
 class A {
-  foo({bool c = true, bool a}) {}
+  foo({bool? c = true, bool? a}) {}
 }
 
 class B extends A {
-  foo({c = true, bool a}) {}
+  foo({c = true, bool? a}) {}
 }
 
 class C extends B {
-  foo({bool c = true, bool a}) {}
+  foo({bool? c = true, bool? a}) {}
 }
 
 class A1 {
-  foo({bool a = true, bool c}) {}
+  foo({bool? a = true, bool? c}) {}
 }
 
 class B1 extends A1 {
-  foo({a = true, bool c}) {}
+  foo({a = true, bool? c}) {}
 }
 
 class C1 extends B1 {
-  foo({bool a = true, bool c}) {}
+  foo({bool? a = true, bool? c}) {}
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.textual_outline_modelled.expect
index f418728..683b2b2 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.textual_outline_modelled.expect
@@ -1,26 +1,25 @@
-// @dart = 2.9
 class A {
-  foo({bool c = true, bool a}) {}
+  foo({bool? c = true, bool? a}) {}
 }
 
 class A1 {
-  foo({bool a = true, bool c}) {}
+  foo({bool? a = true, bool? c}) {}
 }
 
 class B extends A {
-  foo({c = true, bool a}) {}
+  foo({c = true, bool? a}) {}
 }
 
 class B1 extends A1 {
-  foo({a = true, bool c}) {}
+  foo({a = true, bool? c}) {}
 }
 
 class C extends B {
-  foo({bool c = true, bool a}) {}
+  foo({bool? c = true, bool? a}) {}
 }
 
 class C1 extends B1 {
-  foo({bool a = true, bool c}) {}
+  foo({bool? a = true, bool? c}) {}
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.expect
index 6e67b60..bca16bc 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.expect
@@ -1,62 +1,42 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo({core::bool? c = #C1, core::bool? a = #C2}) → dynamic {}
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  method foo({core::bool? c = #C1, core::bool? a = #C2}) → dynamic {}
 }
 class C extends self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::B::•()
     ;
-  method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  method foo({core::bool? c = #C1, core::bool? a = #C2}) → dynamic {}
 }
 class A1 extends core::Object {
-  synthetic constructor •() → self::A1*
+  synthetic constructor •() → self::A1
     : super core::Object::•()
     ;
-  method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo({core::bool? a = #C1, core::bool? c = #C2}) → dynamic {}
 }
 class B1 extends self::A1 {
-  synthetic constructor •() → self::B1*
+  synthetic constructor •() → self::B1
     : super self::A1::•()
     ;
-  method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  method foo({core::bool? a = #C1, core::bool? c = #C2}) → dynamic {}
 }
 class C1 extends self::B1 {
-  synthetic constructor •() → self::C1*
+  synthetic constructor •() → self::C1
     : super self::B1::•()
     ;
-  method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  method foo({core::bool? a = #C1, core::bool? c = #C2}) → dynamic {}
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.modular.expect
index 6e67b60..bca16bc 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.modular.expect
@@ -1,62 +1,42 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo({core::bool? c = #C1, core::bool? a = #C2}) → dynamic {}
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  method foo({core::bool? c = #C1, core::bool? a = #C2}) → dynamic {}
 }
 class C extends self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::B::•()
     ;
-  method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  method foo({core::bool? c = #C1, core::bool? a = #C2}) → dynamic {}
 }
 class A1 extends core::Object {
-  synthetic constructor •() → self::A1*
+  synthetic constructor •() → self::A1
     : super core::Object::•()
     ;
-  method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo({core::bool? a = #C1, core::bool? c = #C2}) → dynamic {}
 }
 class B1 extends self::A1 {
-  synthetic constructor •() → self::B1*
+  synthetic constructor •() → self::B1
     : super self::A1::•()
     ;
-  method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  method foo({core::bool? a = #C1, core::bool? c = #C2}) → dynamic {}
 }
 class C1 extends self::B1 {
-  synthetic constructor •() → self::C1*
+  synthetic constructor •() → self::C1
     : super self::B1::•()
     ;
-  method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  method foo({core::bool? a = #C1, core::bool? c = #C2}) → dynamic {}
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.outline.expect
index f3f9552..17f1de7 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.outline.expect
@@ -1,61 +1,41 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  method foo({core::bool* c = true, core::bool* a}) → dynamic
+  method foo({core::bool? c = true, core::bool? a}) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  method foo({core::bool* c = true, core::bool* a}) → dynamic
+  method foo({core::bool? c = true, core::bool? a}) → dynamic
     ;
 }
 class C extends self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  method foo({core::bool* c = true, core::bool* a}) → dynamic
+  method foo({core::bool? c = true, core::bool? a}) → dynamic
     ;
 }
 class A1 extends core::Object {
-  synthetic constructor •() → self::A1*
+  synthetic constructor •() → self::A1
     ;
-  method foo({core::bool* a = true, core::bool* c}) → dynamic
+  method foo({core::bool? a = true, core::bool? c}) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B1 extends self::A1 {
-  synthetic constructor •() → self::B1*
+  synthetic constructor •() → self::B1
     ;
-  method foo({core::bool* a = true, core::bool* c}) → dynamic
+  method foo({core::bool? a = true, core::bool? c}) → dynamic
     ;
 }
 class C1 extends self::B1 {
-  synthetic constructor •() → self::C1*
+  synthetic constructor •() → self::C1
     ;
-  method foo({core::bool* a = true, core::bool* c}) → dynamic
+  method foo({core::bool? a = true, core::bool? c}) → dynamic
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.transformed.expect b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.transformed.expect
index 6e67b60..bca16bc 100644
--- a/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/override_inference_named_parameters_ordering.dart.weak.transformed.expect
@@ -1,62 +1,42 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo({core::bool? c = #C1, core::bool? a = #C2}) → dynamic {}
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  method foo({core::bool? c = #C1, core::bool? a = #C2}) → dynamic {}
 }
 class C extends self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::B::•()
     ;
-  method foo({core::bool* c = #C1, core::bool* a = #C2}) → dynamic {}
+  method foo({core::bool? c = #C1, core::bool? a = #C2}) → dynamic {}
 }
 class A1 extends core::Object {
-  synthetic constructor •() → self::A1*
+  synthetic constructor •() → self::A1
     : super core::Object::•()
     ;
-  method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo({core::bool? a = #C1, core::bool? c = #C2}) → dynamic {}
 }
 class B1 extends self::A1 {
-  synthetic constructor •() → self::B1*
+  synthetic constructor •() → self::B1
     : super self::A1::•()
     ;
-  method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  method foo({core::bool? a = #C1, core::bool? c = #C2}) → dynamic {}
 }
 class C1 extends self::B1 {
-  synthetic constructor •() → self::C1*
+  synthetic constructor •() → self::C1
     : super self::B1::•()
     ;
-  method foo({core::bool* a = #C1, core::bool* c = #C2}) → dynamic {}
+  method foo({core::bool? a = #C1, core::bool? c = #C2}) → dynamic {}
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/override_setter_with_field.dart b/pkg/front_end/testcases/general/override_setter_with_field.dart
index 28626d7..1f52173 100644
--- a/pkg/front_end/testcases/general/override_setter_with_field.dart
+++ b/pkg/front_end/testcases/general/override_setter_with_field.dart
@@ -2,14 +2,12 @@
 // for details. 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
-
 abstract class A {
-  void set x(Object y);
+  void set x(Object? y);
 }
 
 class B implements A {
-  int x;
+  int? x;
 }
 
 main() {
diff --git a/pkg/front_end/testcases/general/override_setter_with_field.dart.textual_outline.expect b/pkg/front_end/testcases/general/override_setter_with_field.dart.textual_outline.expect
index cdfa723..bff631c 100644
--- a/pkg/front_end/testcases/general/override_setter_with_field.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/override_setter_with_field.dart.textual_outline.expect
@@ -1,10 +1,9 @@
-// @dart = 2.9
 abstract class A {
-  void set x(Object y);
+  void set x(Object? y);
 }
 
 class B implements A {
-  int x;
+  int? x;
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_setter_with_field.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/override_setter_with_field.dart.textual_outline_modelled.expect
index cdfa723..bff631c 100644
--- a/pkg/front_end/testcases/general/override_setter_with_field.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/override_setter_with_field.dart.textual_outline_modelled.expect
@@ -1,10 +1,9 @@
-// @dart = 2.9
 abstract class A {
-  void set x(Object y);
+  void set x(Object? y);
 }
 
 class B implements A {
-  int x;
+  int? x;
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.expect b/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.expect
index 765d23f..2178ddb 100644
--- a/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.expect
+++ b/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.expect
@@ -1,49 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/override_setter_with_field.dart:12:7: Error: The field 'B.x' has type 'int', which does not match the corresponding type, 'Object', in the overridden setter, 'A.x'.
+// pkg/front_end/testcases/general/override_setter_with_field.dart:10:8: Error: The field 'B.x' has type 'int?', which does not match the corresponding type, 'Object?', in the overridden setter, 'A.x'.
 //  - 'Object' is from 'dart:core'.
-//   int x;
-//       ^
-// pkg/front_end/testcases/general/override_setter_with_field.dart:8:12: Context: This is the overridden method ('x').
-//   void set x(Object y);
+//   int? x;
+//        ^
+// pkg/front_end/testcases/general/override_setter_with_field.dart:6:12: Context: This is the overridden method ('x').
+//   void set x(Object? y);
 //            ^
 //
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract set x(core::Object* y) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set x(core::Object? y) → void;
 }
 class B extends core::Object implements self::A {
-  field core::int* x = null;
-  synthetic constructor •() → self::B*
+  field core::int? x = null;
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   new self::B::•().{self::B::x} = 5;
diff --git a/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.modular.expect b/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.modular.expect
index 765d23f..2178ddb 100644
--- a/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.modular.expect
@@ -1,49 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/override_setter_with_field.dart:12:7: Error: The field 'B.x' has type 'int', which does not match the corresponding type, 'Object', in the overridden setter, 'A.x'.
+// pkg/front_end/testcases/general/override_setter_with_field.dart:10:8: Error: The field 'B.x' has type 'int?', which does not match the corresponding type, 'Object?', in the overridden setter, 'A.x'.
 //  - 'Object' is from 'dart:core'.
-//   int x;
-//       ^
-// pkg/front_end/testcases/general/override_setter_with_field.dart:8:12: Context: This is the overridden method ('x').
-//   void set x(Object y);
+//   int? x;
+//        ^
+// pkg/front_end/testcases/general/override_setter_with_field.dart:6:12: Context: This is the overridden method ('x').
+//   void set x(Object? y);
 //            ^
 //
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract set x(core::Object* y) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set x(core::Object? y) → void;
 }
 class B extends core::Object implements self::A {
-  field core::int* x = null;
-  synthetic constructor •() → self::B*
+  field core::int? x = null;
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   new self::B::•().{self::B::x} = 5;
diff --git a/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.outline.expect b/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.outline.expect
index f7419b7..9a21541 100644
--- a/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/override_setter_with_field.dart.weak.outline.expect
@@ -1,47 +1,27 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/override_setter_with_field.dart:12:7: Error: The field 'B.x' has type 'int', which does not match the corresponding type, 'Object', in the overridden setter, 'A.x'.
+// pkg/front_end/testcases/general/override_setter_with_field.dart:10:8: Error: The field 'B.x' has type 'int?', which does not match the corresponding type, 'Object?', in the overridden setter, 'A.x'.
 //  - 'Object' is from 'dart:core'.
-//   int x;
-//       ^
-// pkg/front_end/testcases/general/override_setter_with_field.dart:8:12: Context: This is the overridden method ('x').
-//   void set x(Object y);
+//   int? x;
+//        ^
+// pkg/front_end/testcases/general/override_setter_with_field.dart:6:12: Context: This is the overridden method ('x').
+//   void set x(Object? y);
 //            ^
 //
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract set x(core::Object* y) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set x(core::Object? y) → void;
 }
 class B extends core::Object implements self::A {
-  field core::int* x;
-  synthetic constructor •() → self::B*
+  field core::int? x;
+  synthetic constructor •() → self::B
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/part_as_entry_point.dart b/pkg/front_end/testcases/general/part_as_entry_point.dart
index e8acce1..0b9dc66 100644
--- a/pkg/front_end/testcases/general/part_as_entry_point.dart
+++ b/pkg/front_end/testcases/general/part_as_entry_point.dart
@@ -1,5 +1,5 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 part of "part_as_entry_point_lib.dart";
diff --git a/pkg/front_end/testcases/general/part_as_entry_point.dart.textual_outline.expect b/pkg/front_end/testcases/general/part_as_entry_point.dart.textual_outline.expect
index 18055f6..07ab488 100644
--- a/pkg/front_end/testcases/general/part_as_entry_point.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/part_as_entry_point.dart.textual_outline.expect
@@ -1,2 +1 @@
-// @dart = 2.9
 part of "part_as_entry_point_lib.dart";
diff --git a/pkg/front_end/testcases/general/part_as_entry_point.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/part_as_entry_point.dart.textual_outline_modelled.expect
index 18055f6..07ab488 100644
--- a/pkg/front_end/testcases/general/part_as_entry_point.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/part_as_entry_point.dart.textual_outline_modelled.expect
@@ -1,2 +1 @@
-// @dart = 2.9
 part of "part_as_entry_point_lib.dart";
diff --git a/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.expect b/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.expect
index b77b0c2..23f6859 100644
--- a/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.expect
+++ b/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.modular.expect b/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.modular.expect
index b77b0c2..23f6859 100644
--- a/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.outline.expect b/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.outline.expect
index 1d93518..37da5bf 100644
--- a/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 part part_as_entry_point.dart;
diff --git a/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.transformed.expect b/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.transformed.expect
index b77b0c2..23f6859 100644
--- a/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/part_as_entry_point.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/general/part_as_entry_point_lib.dart b/pkg/front_end/testcases/general/part_as_entry_point_lib.dart
index 9c9cfeb..a2f5430 100644
--- a/pkg/front_end/testcases/general/part_as_entry_point_lib.dart
+++ b/pkg/front_end/testcases/general/part_as_entry_point_lib.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 part "part_as_entry_point.dart";
 
 main() {
diff --git a/pkg/front_end/testcases/general/part_not_part_of.dart b/pkg/front_end/testcases/general/part_not_part_of.dart
index bea2751..a4d4873 100644
--- a/pkg/front_end/testcases/general/part_not_part_of.dart
+++ b/pkg/front_end/testcases/general/part_not_part_of.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 import 'part_not_part_of_lib2.dart';
 
 @override
diff --git a/pkg/front_end/testcases/general/part_not_part_of.dart.textual_outline.expect b/pkg/front_end/testcases/general/part_not_part_of.dart.textual_outline.expect
index fbc4b33..d7c7da3 100644
--- a/pkg/front_end/testcases/general/part_not_part_of.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'part_not_part_of_lib2.dart';
 @override
 part 'part_not_part_of_lib1.dart';
diff --git a/pkg/front_end/testcases/general/part_not_part_of.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/part_not_part_of.dart.textual_outline_modelled.expect
index fbc4b33..d7c7da3 100644
--- a/pkg/front_end/testcases/general/part_not_part_of.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'part_not_part_of_lib2.dart';
 @override
 part 'part_not_part_of_lib1.dart';
diff --git a/pkg/front_end/testcases/general/part_not_part_of.dart.weak.expect b/pkg/front_end/testcases/general/part_not_part_of.dart.weak.expect
index f22e87e..9a38cd5 100644
--- a/pkg/front_end/testcases/general/part_not_part_of.dart.weak.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 part part_not_part_of_lib1.dart;
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 import "part_not_part_of_lib1.dart" as par;
 
@@ -25,7 +25,7 @@
   par::methodFromLib1();
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as par;
 
 static method methodFromLib1() → dynamic {}
diff --git a/pkg/front_end/testcases/general/part_not_part_of.dart.weak.modular.expect b/pkg/front_end/testcases/general/part_not_part_of.dart.weak.modular.expect
index f22e87e..9a38cd5 100644
--- a/pkg/front_end/testcases/general/part_not_part_of.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 part part_not_part_of_lib1.dart;
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 import "part_not_part_of_lib1.dart" as par;
 
@@ -25,7 +25,7 @@
   par::methodFromLib1();
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as par;
 
 static method methodFromLib1() → dynamic {}
diff --git a/pkg/front_end/testcases/general/part_not_part_of.dart.weak.outline.expect b/pkg/front_end/testcases/general/part_not_part_of.dart.weak.outline.expect
index 022180b..fceafb0 100644
--- a/pkg/front_end/testcases/general/part_not_part_of.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,7 +14,7 @@
 static method main() → dynamic
   ;
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 
 import "org-dartlang-testcase:///part_not_part_of_lib1.dart";
@@ -22,7 +22,7 @@
 static method methodFromLib2() → dynamic
   ;
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self3;
 
 static method methodFromLib1() → dynamic
diff --git a/pkg/front_end/testcases/general/part_not_part_of.dart.weak.transformed.expect b/pkg/front_end/testcases/general/part_not_part_of.dart.weak.transformed.expect
index f22e87e..9a38cd5 100644
--- a/pkg/front_end/testcases/general/part_not_part_of.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 part part_not_part_of_lib1.dart;
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 import "part_not_part_of_lib1.dart" as par;
 
@@ -25,7 +25,7 @@
   par::methodFromLib1();
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as par;
 
 static method methodFromLib1() → dynamic {}
diff --git a/pkg/front_end/testcases/general/part_not_part_of_lib1.dart b/pkg/front_end/testcases/general/part_not_part_of_lib1.dart
index 8701d03..90bd84b 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_lib1.dart
+++ b/pkg/front_end/testcases/general/part_not_part_of_lib1.dart
@@ -1,5 +1,5 @@
 // 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.
-// @dart=2.9
+
 methodFromLib1() {}
diff --git a/pkg/front_end/testcases/general/part_not_part_of_lib2.dart b/pkg/front_end/testcases/general/part_not_part_of_lib2.dart
index 46ab23d..1dfb49c 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_lib2.dart
+++ b/pkg/front_end/testcases/general/part_not_part_of_lib2.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 import "part_not_part_of_lib1.dart";
 
 methodFromLib2() {
diff --git a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart
index e34f76d..e7efc6c 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart
+++ b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 import 'part_not_part_of_same_named_library_lib2.dart';
 
 @override
diff --git a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.textual_outline.expect b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.textual_outline.expect
index fa5241c..bf4aa7d 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'part_not_part_of_same_named_library_lib2.dart';
 @override
 part 'part_not_part_of_same_named_library_lib1.dart';
diff --git a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.textual_outline_modelled.expect
index fa5241c..bf4aa7d 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'part_not_part_of_same_named_library_lib2.dart';
 @override
 part 'part_not_part_of_same_named_library_lib1.dart';
diff --git a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.expect b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.expect
index 2048308..15322a0 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -16,7 +16,7 @@
 part part_not_part_of_same_named_library_lib1.dart;
 static method main() → dynamic {}
 
-library foo;
+library foo /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_not_part_of_same_named_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.modular.expect b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.modular.expect
index 2048308..15322a0 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -16,7 +16,7 @@
 part part_not_part_of_same_named_library_lib1.dart;
 static method main() → dynamic {}
 
-library foo;
+library foo /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_not_part_of_same_named_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.outline.expect b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.outline.expect
index 65071a6..881d153 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 static method main() → dynamic
   ;
 
-library foo;
+library foo /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_not_part_of_same_named_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.transformed.expect b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.transformed.expect
index 2048308..15322a0 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/part_not_part_of_same_named_library.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -16,7 +16,7 @@
 part part_not_part_of_same_named_library_lib1.dart;
 static method main() → dynamic {}
 
-library foo;
+library foo /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_not_part_of_same_named_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_not_part_of_same_named_library_lib1.dart b/pkg/front_end/testcases/general/part_not_part_of_same_named_library_lib1.dart
index e2df909..1e32330 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_same_named_library_lib1.dart
+++ b/pkg/front_end/testcases/general/part_not_part_of_same_named_library_lib1.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 part of foo;
 
 methodFromLib1() {}
diff --git a/pkg/front_end/testcases/general/part_not_part_of_same_named_library_lib2.dart b/pkg/front_end/testcases/general/part_not_part_of_same_named_library_lib2.dart
index e7861ee..11ce0fa 100644
--- a/pkg/front_end/testcases/general/part_not_part_of_same_named_library_lib2.dart
+++ b/pkg/front_end/testcases/general/part_not_part_of_same_named_library_lib2.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 library foo;
 
 part "part_not_part_of_same_named_library_lib1.dart";
diff --git a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart
index c16dbf3..07ccc7a 100644
--- a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart
+++ b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 import 'part_part_of_different_unnamed_library_lib2.dart';
 
 @override
diff --git a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.textual_outline.expect b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.textual_outline.expect
index a2beef6..a400a31 100644
--- a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'part_part_of_different_unnamed_library_lib2.dart';
 @override
 part 'part_part_of_different_unnamed_library_lib1.dart';
diff --git a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.textual_outline_modelled.expect
index a2beef6..a400a31 100644
--- a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'part_part_of_different_unnamed_library_lib2.dart';
 @override
 part 'part_part_of_different_unnamed_library_lib1.dart';
diff --git a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.expect b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.expect
index 693c671..ba85695 100644
--- a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.expect
+++ b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 part part_part_of_different_unnamed_library_lib1.dart;
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_part_of_different_unnamed_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.modular.expect b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.modular.expect
index 693c671..ba85695 100644
--- a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 part part_part_of_different_unnamed_library_lib1.dart;
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_part_of_different_unnamed_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.outline.expect b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.outline.expect
index bcd74cd..3283da8 100644
--- a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,7 +14,7 @@
 static method main() → dynamic
   ;
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_part_of_different_unnamed_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.transformed.expect b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.transformed.expect
index 693c671..ba85695 100644
--- a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 part part_part_of_different_unnamed_library_lib1.dart;
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_part_of_different_unnamed_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library_lib1.dart b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library_lib1.dart
index 7068275..d507d77 100644
--- a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library_lib1.dart
+++ b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library_lib1.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 part of "part_part_of_different_unnamed_library_lib2.dart";
 
 methodFromLib1() {}
diff --git a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library_lib2.dart b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library_lib2.dart
index 3c777f7..e7e7b29 100644
--- a/pkg/front_end/testcases/general/part_part_of_different_unnamed_library_lib2.dart
+++ b/pkg/front_end/testcases/general/part_part_of_different_unnamed_library_lib2.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 part "part_part_of_different_unnamed_library_lib1.dart";
 
 methodFromLib2() {
diff --git a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart
index f1ecf5a..c084850 100644
--- a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart
+++ b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 library foo;
 
 import 'part_part_of_differently_named_library_lib2.dart';
diff --git a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.textual_outline.expect b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.textual_outline.expect
index e806f6d..2897172 100644
--- a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library foo;
 
 import 'part_part_of_differently_named_library_lib2.dart';
diff --git a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.textual_outline_modelled.expect
index e806f6d..2897172 100644
--- a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library foo;
 
 import 'part_part_of_differently_named_library_lib2.dart';
diff --git a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.expect b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.expect
index 0ec56bd..246fe04 100644
--- a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.expect
+++ b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.expect
@@ -1,4 +1,4 @@
-library foo;
+library foo /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 part part_part_of_differently_named_library_lib1.dart;
 static method main() → dynamic {}
 
-library bar;
+library bar /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_part_of_differently_named_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.modular.expect b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.modular.expect
index 0ec56bd..246fe04 100644
--- a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library foo;
+library foo /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 part part_part_of_differently_named_library_lib1.dart;
 static method main() → dynamic {}
 
-library bar;
+library bar /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_part_of_differently_named_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.outline.expect b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.outline.expect
index 4f277c37..6802243 100644
--- a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library foo;
+library foo /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,7 +14,7 @@
 static method main() → dynamic
   ;
 
-library bar;
+library bar /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_part_of_differently_named_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.transformed.expect b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.transformed.expect
index 0ec56bd..246fe04 100644
--- a/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/part_part_of_differently_named_library.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library foo;
+library foo /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,7 +15,7 @@
 part part_part_of_differently_named_library_lib1.dart;
 static method main() → dynamic {}
 
-library bar;
+library bar /*isNonNullableByDefault*/;
 import self as self2;
 
 part part_part_of_differently_named_library_lib1.dart;
diff --git a/pkg/front_end/testcases/general/part_part_of_differently_named_library_lib1.dart b/pkg/front_end/testcases/general/part_part_of_differently_named_library_lib1.dart
index 4d7357d..2b7c83b 100644
--- a/pkg/front_end/testcases/general/part_part_of_differently_named_library_lib1.dart
+++ b/pkg/front_end/testcases/general/part_part_of_differently_named_library_lib1.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 part of bar;
 
 methodFromLib1() {}
diff --git a/pkg/front_end/testcases/general/part_part_of_differently_named_library_lib2.dart b/pkg/front_end/testcases/general/part_part_of_differently_named_library_lib2.dart
index a702ba3..cccf8e2 100644
--- a/pkg/front_end/testcases/general/part_part_of_differently_named_library_lib2.dart
+++ b/pkg/front_end/testcases/general/part_part_of_differently_named_library_lib2.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 library bar;
 
 part "part_part_of_differently_named_library_lib1.dart";
diff --git a/pkg/front_end/testcases/general/platform.dart b/pkg/front_end/testcases/general/platform.dart
index 2951246..0d4cc33 100644
--- a/pkg/front_end/testcases/general/platform.dart
+++ b/pkg/front_end/testcases/general/platform.dart
@@ -1,5 +1,5 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 main() {}
diff --git a/pkg/front_end/testcases/general/platform.dart.textual_outline.expect b/pkg/front_end/testcases/general/platform.dart.textual_outline.expect
index 7c126a2..bae895a 100644
--- a/pkg/front_end/testcases/general/platform.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/platform.dart.textual_outline.expect
@@ -1,2 +1 @@
-// @dart = 2.9
 main() {}
diff --git a/pkg/front_end/testcases/general/platform.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/platform.dart.textual_outline_modelled.expect
index 7c126a2..bae895a 100644
--- a/pkg/front_end/testcases/general/platform.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/platform.dart.textual_outline_modelled.expect
@@ -1,2 +1 @@
-// @dart = 2.9
 main() {}
diff --git a/pkg/front_end/testcases/general/platform.dart.weak.expect b/pkg/front_end/testcases/general/platform.dart.weak.expect
index bef6d48..500f9de 100644
--- a/pkg/front_end/testcases/general/platform.dart.weak.expect
+++ b/pkg/front_end/testcases/general/platform.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/platform.dart.weak.modular.expect b/pkg/front_end/testcases/general/platform.dart.weak.modular.expect
index bef6d48..500f9de 100644
--- a/pkg/front_end/testcases/general/platform.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/platform.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/platform.dart.weak.outline.expect b/pkg/front_end/testcases/general/platform.dart.weak.outline.expect
index 6a28c0d..e2cba6b 100644
--- a/pkg/front_end/testcases/general/platform.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/platform.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/platform.dart.weak.transformed.expect b/pkg/front_end/testcases/general/platform.dart.weak.transformed.expect
index bef6d48..500f9de 100644
--- a/pkg/front_end/testcases/general/platform.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/platform.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart b/pkg/front_end/testcases/general/prefer_baseclass.dart
index 49eeb46..394322b 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class A {}
 
 class B {}
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart.textual_outline.expect b/pkg/front_end/testcases/general/prefer_baseclass.dart.textual_outline.expect
index 969d47c..27c1d98 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {}
 
 class B {}
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/prefer_baseclass.dart.textual_outline_modelled.expect
index 4e0cebf..47e2b29 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {}
 
 class AB1 extends A implements B {}
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.expect b/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.expect
index 8785424..1634b2d 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.expect
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.expect
@@ -1,54 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class AB1 extends self::A implements self::B {
-  synthetic constructor •() → self::AB1*
+  synthetic constructor •() → self::AB1
     : super self::A::•()
     ;
 }
 class AB2 extends self::A implements self::B {
-  synthetic constructor •() → self::AB2*
+  synthetic constructor •() → self::AB2
     : super self::A::•()
     ;
 }
 class BA1 extends self::B implements self::A {
-  synthetic constructor •() → self::BA1*
+  synthetic constructor •() → self::BA1
     : super self::B::•()
     ;
 }
 class BA2 extends self::B implements self::A {
-  synthetic constructor •() → self::BA2*
+  synthetic constructor •() → self::BA2
     : super self::B::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.modular.expect b/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.modular.expect
index 8785424..1634b2d 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.modular.expect
@@ -1,54 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class AB1 extends self::A implements self::B {
-  synthetic constructor •() → self::AB1*
+  synthetic constructor •() → self::AB1
     : super self::A::•()
     ;
 }
 class AB2 extends self::A implements self::B {
-  synthetic constructor •() → self::AB2*
+  synthetic constructor •() → self::AB2
     : super self::A::•()
     ;
 }
 class BA1 extends self::B implements self::A {
-  synthetic constructor •() → self::BA1*
+  synthetic constructor •() → self::BA1
     : super self::B::•()
     ;
 }
 class BA2 extends self::B implements self::A {
-  synthetic constructor •() → self::BA2*
+  synthetic constructor •() → self::BA2
     : super self::B::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.outline.expect b/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.outline.expect
index 1d5764a..32f946c 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.outline.expect
@@ -1,49 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class AB1 extends self::A implements self::B {
-  synthetic constructor •() → self::AB1*
+  synthetic constructor •() → self::AB1
     ;
 }
 class AB2 extends self::A implements self::B {
-  synthetic constructor •() → self::AB2*
+  synthetic constructor •() → self::AB2
     ;
 }
 class BA1 extends self::B implements self::A {
-  synthetic constructor •() → self::BA1*
+  synthetic constructor •() → self::BA1
     ;
 }
 class BA2 extends self::B implements self::A {
-  synthetic constructor •() → self::BA2*
+  synthetic constructor •() → self::BA2
     ;
 }
 static method takeSubclassOfA(dynamic obj) → dynamic
diff --git a/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.transformed.expect b/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.transformed.expect
index 8785424..1634b2d 100644
--- a/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/prefer_baseclass.dart.weak.transformed.expect
@@ -1,54 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class AB1 extends self::A implements self::B {
-  synthetic constructor •() → self::AB1*
+  synthetic constructor •() → self::AB1
     : super self::A::•()
     ;
 }
 class AB2 extends self::A implements self::B {
-  synthetic constructor •() → self::AB2*
+  synthetic constructor •() → self::AB2
     : super self::A::•()
     ;
 }
 class BA1 extends self::B implements self::A {
-  synthetic constructor •() → self::BA1*
+  synthetic constructor •() → self::BA1
     : super self::B::•()
     ;
 }
 class BA2 extends self::B implements self::A {
-  synthetic constructor •() → self::BA2*
+  synthetic constructor •() → self::BA2
     : super self::B::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart b/pkg/front_end/testcases/general/private_method_tearoff.dart
index 4bf35bc..71b8217 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart=2.9
-
 import './private_method_tearoff_lib.dart';
 
 // `Bar' contains a private method `_f'. The function `baz' is declared in the
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.textual_outline.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.textual_outline.expect
index 359b608..929342c 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import './private_method_tearoff_lib.dart';
 
 class Foo implements Bar {}
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.textual_outline_modelled.expect
index 3ba34a1..2092d9c 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import './private_method_tearoff_lib.dart';
 
 class Baz extends Foo {}
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect
index ca1fea0..74f9325 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "private_method_tearoff_lib.dart" as pri;
@@ -6,24 +6,14 @@
 import "org-dartlang-testcase:///private_method_tearoff_lib.dart";
 
 class Foo extends core::Object implements pri::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class Baz extends self::Foo {
-  synthetic constructor •() → self::Baz*
+  synthetic constructor •() → self::Baz
     : super self::Foo::•()
     ;
 }
@@ -31,28 +21,18 @@
   pri::baz(new self::Foo::•());
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as pri;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  synthetic constructor •() → pri::Bar*
+  synthetic constructor •() → pri::Bar
     : super core::Object::•()
     ;
   method _f() → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(pri::Bar* bar) → void {
-  core::print("${bar.{pri::Bar::_f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+static method baz(pri::Bar bar) → void {
+  core::print("${bar.{pri::Bar::_f}{() → void}.{core::Object::runtimeType}{core::Type}}");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.modular.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.modular.expect
index ca1fea0..74f9325 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "private_method_tearoff_lib.dart" as pri;
@@ -6,24 +6,14 @@
 import "org-dartlang-testcase:///private_method_tearoff_lib.dart";
 
 class Foo extends core::Object implements pri::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class Baz extends self::Foo {
-  synthetic constructor •() → self::Baz*
+  synthetic constructor •() → self::Baz
     : super self::Foo::•()
     ;
 }
@@ -31,28 +21,18 @@
   pri::baz(new self::Foo::•());
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as pri;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  synthetic constructor •() → pri::Bar*
+  synthetic constructor •() → pri::Bar
     : super core::Object::•()
     ;
   method _f() → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(pri::Bar* bar) → void {
-  core::print("${bar.{pri::Bar::_f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+static method baz(pri::Bar bar) → void {
+  core::print("${bar.{pri::Bar::_f}{() → void}.{core::Object::runtimeType}{core::Type}}");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect
index 384c64d..a8acd44 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "private_method_tearoff_lib.dart" as pri;
@@ -6,49 +6,29 @@
 import "org-dartlang-testcase:///private_method_tearoff_lib.dart";
 
 class Foo extends core::Object implements pri::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_f, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
 }
 class Baz extends self::Foo {
-  synthetic constructor •() → self::Baz*
+  synthetic constructor •() → self::Baz
     ;
 }
 static method main() → dynamic
   ;
 
-library;
+library /*isNonNullableByDefault*/;
 import self as pri;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  synthetic constructor •() → pri::Bar*
+  synthetic constructor •() → pri::Bar
     ;
   method _f() → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(pri::Bar* bar) → void
+static method baz(pri::Bar bar) → void
   ;
 
 
diff --git a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect
index ca1fea0..74f9325 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/private_method_tearoff.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "private_method_tearoff_lib.dart" as pri;
@@ -6,24 +6,14 @@
 import "org-dartlang-testcase:///private_method_tearoff_lib.dart";
 
 class Foo extends core::Object implements pri::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 class Baz extends self::Foo {
-  synthetic constructor •() → self::Baz*
+  synthetic constructor •() → self::Baz
     : super self::Foo::•()
     ;
 }
@@ -31,28 +21,18 @@
   pri::baz(new self::Foo::•());
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as pri;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  synthetic constructor •() → pri::Bar*
+  synthetic constructor •() → pri::Bar
     : super core::Object::•()
     ;
   method _f() → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(pri::Bar* bar) → void {
-  core::print("${bar.{pri::Bar::_f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+static method baz(pri::Bar bar) → void {
+  core::print("${bar.{pri::Bar::_f}{() → void}.{core::Object::runtimeType}{core::Type}}");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/private_method_tearoff_lib.dart b/pkg/front_end/testcases/general/private_method_tearoff_lib.dart
index a2a6594..0cbfb17 100644
--- a/pkg/front_end/testcases/general/private_method_tearoff_lib.dart
+++ b/pkg/front_end/testcases/general/private_method_tearoff_lib.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // Companion library for private_method_tearoff.dart.
 
 class Bar {
diff --git a/pkg/front_end/testcases/general/promoted_access.dart b/pkg/front_end/testcases/general/promoted_access.dart
index 841f79f..fc2e133 100644
--- a/pkg/front_end/testcases/general/promoted_access.dart
+++ b/pkg/front_end/testcases/general/promoted_access.dart
@@ -1,7 +1,9 @@
 // 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.
+
 // @dart=2.9
+
 class Class<T> {
   method(T o) {
     if (o is Class) {
diff --git a/pkg/front_end/testcases/general/promoted_null_aware_access.dart b/pkg/front_end/testcases/general/promoted_null_aware_access.dart
index 3e023f0..b5eb8f3 100644
--- a/pkg/front_end/testcases/general/promoted_null_aware_access.dart
+++ b/pkg/front_end/testcases/general/promoted_null_aware_access.dart
@@ -1,7 +1,9 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. 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
+
 method<T>(T o) {
   if (o is String) {
     o?.length;
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart b/pkg/front_end/testcases/general/public_method_tearoff.dart
index 6130e86..1d304cc 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 import './public_method_tearoff_lib.dart';
 
 // `Bar' contains a public method `f'. The function `baz' is declared in the
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.textual_outline.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.textual_outline.expect
index 6aee2c2..e266da1 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import './public_method_tearoff_lib.dart';
 
 class Foo extends Bar {}
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.textual_outline_modelled.expect
index 6aee2c2..e266da1 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import './public_method_tearoff_lib.dart';
 
 class Foo extends Bar {}
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.expect
index 6fc1a72..be0c9bc 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.expect
@@ -1,11 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "public_method_tearoff_lib.dart" as pub;
 
 import "org-dartlang-testcase:///public_method_tearoff_lib.dart";
 
 class Foo extends pub::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super pub::Bar::•()
     ;
 }
@@ -13,26 +13,16 @@
   pub::baz(new self::Foo::•());
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as pub;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  synthetic constructor •() → pub::Bar*
+  synthetic constructor •() → pub::Bar
     : super core::Object::•()
     ;
   method f() → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(pub::Bar* bar) → void {
-  core::print("${bar.{pub::Bar::f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+static method baz(pub::Bar bar) → void {
+  core::print("${bar.{pub::Bar::f}{() → void}.{core::Object::runtimeType}{core::Type}}");
 }
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.modular.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.modular.expect
index 6fc1a72..be0c9bc 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.modular.expect
@@ -1,11 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "public_method_tearoff_lib.dart" as pub;
 
 import "org-dartlang-testcase:///public_method_tearoff_lib.dart";
 
 class Foo extends pub::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super pub::Bar::•()
     ;
 }
@@ -13,26 +13,16 @@
   pub::baz(new self::Foo::•());
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as pub;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  synthetic constructor •() → pub::Bar*
+  synthetic constructor •() → pub::Bar
     : super core::Object::•()
     ;
   method f() → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(pub::Bar* bar) → void {
-  core::print("${bar.{pub::Bar::f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+static method baz(pub::Bar bar) → void {
+  core::print("${bar.{pub::Bar::f}{() → void}.{core::Object::runtimeType}{core::Type}}");
 }
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.outline.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.outline.expect
index db658c6..26864eb 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.outline.expect
@@ -1,35 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "public_method_tearoff_lib.dart" as pub;
 
 import "org-dartlang-testcase:///public_method_tearoff_lib.dart";
 
 class Foo extends pub::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     ;
 }
 static method main() → void
   ;
 
-library;
+library /*isNonNullableByDefault*/;
 import self as pub;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  synthetic constructor •() → pub::Bar*
+  synthetic constructor •() → pub::Bar
     ;
   method f() → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(pub::Bar* bar) → void
+static method baz(pub::Bar bar) → void
   ;
diff --git a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.transformed.expect b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.transformed.expect
index 6fc1a72..be0c9bc 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/public_method_tearoff.dart.weak.transformed.expect
@@ -1,11 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "public_method_tearoff_lib.dart" as pub;
 
 import "org-dartlang-testcase:///public_method_tearoff_lib.dart";
 
 class Foo extends pub::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super pub::Bar::•()
     ;
 }
@@ -13,26 +13,16 @@
   pub::baz(new self::Foo::•());
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as pub;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  synthetic constructor •() → pub::Bar*
+  synthetic constructor •() → pub::Bar
     : super core::Object::•()
     ;
   method f() → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(pub::Bar* bar) → void {
-  core::print("${bar.{pub::Bar::f}{() →* void}.{core::Object::runtimeType}{core::Type*}}");
+static method baz(pub::Bar bar) → void {
+  core::print("${bar.{pub::Bar::f}{() → void}.{core::Object::runtimeType}{core::Type}}");
 }
diff --git a/pkg/front_end/testcases/general/public_method_tearoff_lib.dart b/pkg/front_end/testcases/general/public_method_tearoff_lib.dart
index 529518e..ceaf0ca 100644
--- a/pkg/front_end/testcases/general/public_method_tearoff_lib.dart
+++ b/pkg/front_end/testcases/general/public_method_tearoff_lib.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // Companion library for public_method_tearoff.dart.
 
 class Bar {
diff --git a/pkg/front_end/testcases/general/pure_index_expressions.dart b/pkg/front_end/testcases/general/pure_index_expressions.dart
index 89c6ab9..975089a 100644
--- a/pkg/front_end/testcases/general/pure_index_expressions.dart
+++ b/pkg/front_end/testcases/general/pure_index_expressions.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
 // for details. 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
+
 // @dart=2.9
 
 extension Extension on int {
diff --git a/pkg/front_end/testcases/general/pure_index_expressions.dart.textual_outline.expect b/pkg/front_end/testcases/general/pure_index_expressions.dart.textual_outline.expect
index cf0da0c..a529cd5 100644
--- a/pkg/front_end/testcases/general/pure_index_expressions.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/pure_index_expressions.dart.textual_outline.expect
@@ -1,5 +1,4 @@
 // @dart = 2.9
-// @dart = 2.9
 extension Extension on int {
   Class operator [](Class cls) => new Class();
   void operator []=(Class cls, Class value) {}
diff --git a/pkg/front_end/testcases/general/pure_index_expressions.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/pure_index_expressions.dart.textual_outline_modelled.expect
index 312c040..f0fb925 100644
--- a/pkg/front_end/testcases/general/pure_index_expressions.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/pure_index_expressions.dart.textual_outline_modelled.expect
@@ -1,5 +1,4 @@
 // @dart = 2.9
-// @dart = 2.9
 class Class {
   Class operator +(Class cls) => cls;
   Class operator [](Class cls) => new Class();
diff --git a/pkg/front_end/testcases/general/qualified.dart b/pkg/front_end/testcases/general/qualified.dart
index d6e418b..d347bca 100644
--- a/pkg/front_end/testcases/general/qualified.dart
+++ b/pkg/front_end/testcases/general/qualified.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 library test.qualified.main;
 
 import "qualified_lib.dart" as lib;
@@ -10,7 +10,7 @@
 
 class Bad extends lib.Missing {
   lib.Missing method() {}
-  factory WrongName() {}
+  factory WrongName() => throw '';
 }
 
 class WithMixin extends lib.Supertype with lib.Mixin {}
diff --git a/pkg/front_end/testcases/general/qualified.dart.textual_outline.expect b/pkg/front_end/testcases/general/qualified.dart.textual_outline.expect
index a0263ec..e2cbafa 100644
--- a/pkg/front_end/testcases/general/qualified.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library test.qualified.main;
 
 import "qualified_lib.dart" as lib;
@@ -6,7 +5,7 @@
 
 class Bad extends lib.Missing {
   lib.Missing method() {}
-  factory WrongName() {}
+  factory WrongName() => throw '';
 }
 
 class WithMixin extends lib.Supertype with lib.Mixin {}
diff --git a/pkg/front_end/testcases/general/qualified.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/qualified.dart.textual_outline_modelled.expect
index 5840afa..27a6e23 100644
--- a/pkg/front_end/testcases/general/qualified.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.textual_outline_modelled.expect
@@ -1,11 +1,10 @@
-// @dart = 2.9
 library test.qualified.main;
 
 import "qualified_lib.dart" as lib;
 part "qualified_part.dart";
 
 class Bad extends lib.Missing {
-  factory WrongName() {}
+  factory WrongName() => throw '';
   lib.Missing method() {}
 }
 
diff --git a/pkg/front_end/testcases/general/qualified.dart.weak.expect b/pkg/front_end/testcases/general/qualified.dart.weak.expect
index 59d3ddb..31a30f6 100644
--- a/pkg/front_end/testcases/general/qualified.dart.weak.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.weak.expect
@@ -1,9 +1,9 @@
-library test.qualified.main;
+library test.qualified.main /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/qualified.dart:13:11: Error: The name of a constructor must match the name of the enclosing class.
-//   factory WrongName() {}
+//   factory WrongName() => throw '';
 //           ^^^^^^^^^
 // pkg/front_end/testcases/general/qualified.dart:11:7: Context: The name of the enclosing class is 'Bad'.
 // class Bad extends lib.Missing {
@@ -33,132 +33,83 @@
 part qualified_part.dart;
 class Bad extends core::Object {
   method method() → invalid-type {}
-  static factory WrongName() → self::Bad* {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory WrongName() → self::Bad
+    return throw "";
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
+  synthetic constructor •() → self::_WithMixin&Supertype&Mixin
     : super lib::Supertype::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{lib::Mixin::foo}();
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
-  synthetic constructor •() → self::WithMixin*
+  synthetic constructor •() → self::WithMixin
     : super self::_WithMixin&Supertype&Mixin::•()
     ;
 }
 class IllegalSupertype extends core::Object {
-  synthetic constructor •() → self::IllegalSupertype*
+  synthetic constructor •() → self::IllegalSupertype
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  constructor a() → self::C<self::C::T*>*
+  constructor a() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
-    return lib::C::b<self::C::b::T*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory b<T extends core::Object? = dynamic>() → self::C<self::C::b::T%>
+    return lib::C::b<self::C::b::T%>();
 }
 static method main() → dynamic {
-  new self::C::•<core::String*>();
-  new self::C::a<core::String*>();
-  new lib::C::a<core::String*>();
-  new lib::C::•<core::String*>();
-  new lib::C::a<core::String*>();
-  new lib::C::a<core::String*>();
-  new self::WithMixin::•().{lib::Supertype::supertypeMethod}(){() →* dynamic};
-  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}(){() →* dynamic};
+  new self::C::•<core::String>();
+  new self::C::a<core::String>();
+  new lib::C::a<core::String>();
+  new lib::C::•<core::String>();
+  new lib::C::a<core::String>();
+  new lib::C::a<core::String>();
+  new self::WithMixin::•().{lib::Supertype::supertypeMethod}(){() → dynamic};
+  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}(){() → dynamic};
   new self::IllegalSupertype::•();
 }
 
-library test.qualified.lib;
+library test.qualified.lib /*isNonNullableByDefault*/;
 import self as lib;
 import "dart:core" as core;
 import "qualified.dart" as self;
 
 import "org-dartlang-testcase:///qualified.dart" as main;
 
-typedef VoidFunction = () →* void;
-class C<T extends core::Object* = dynamic> extends self::C<lib::C::T*> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  constructor •() → lib::C<lib::C::T*>*
+typedef VoidFunction = () → void;
+class C<T extends core::Object? = dynamic> extends self::C<lib::C::T%> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  constructor •() → lib::C<lib::C::T%>
     : super self::C::•()
     ;
-  constructor a() → lib::C<lib::C::T*>*
+  constructor a() → lib::C<lib::C::T%>
     : super self::C::•()
     ;
-  static factory b<T extends core::Object* = dynamic>() → lib::C<lib::C::b::T*>*
-    return new lib::C::a<lib::C::b::T*>();
+  static factory b<T extends core::Object? = dynamic>() → lib::C<lib::C::b::T%>
+    return new lib::C::a<lib::C::b::T%>();
 }
 class Supertype extends core::Object {
-  synthetic constructor •() → lib::Supertype*
+  synthetic constructor •() → lib::Supertype
     : super core::Object::•()
     ;
   method supertypeMethod() → dynamic {
     core::print("I'm supertypeMethod form lib.Supertype");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Mixin extends core::Object {
-  synthetic constructor •() → lib::Mixin*
+  synthetic constructor •() → lib::Mixin
     : super core::Object::•()
     ;
   method foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/qualified.dart.weak.modular.expect b/pkg/front_end/testcases/general/qualified.dart.weak.modular.expect
index 59d3ddb..31a30f6 100644
--- a/pkg/front_end/testcases/general/qualified.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.weak.modular.expect
@@ -1,9 +1,9 @@
-library test.qualified.main;
+library test.qualified.main /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/qualified.dart:13:11: Error: The name of a constructor must match the name of the enclosing class.
-//   factory WrongName() {}
+//   factory WrongName() => throw '';
 //           ^^^^^^^^^
 // pkg/front_end/testcases/general/qualified.dart:11:7: Context: The name of the enclosing class is 'Bad'.
 // class Bad extends lib.Missing {
@@ -33,132 +33,83 @@
 part qualified_part.dart;
 class Bad extends core::Object {
   method method() → invalid-type {}
-  static factory WrongName() → self::Bad* {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory WrongName() → self::Bad
+    return throw "";
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
+  synthetic constructor •() → self::_WithMixin&Supertype&Mixin
     : super lib::Supertype::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{lib::Mixin::foo}();
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
-  synthetic constructor •() → self::WithMixin*
+  synthetic constructor •() → self::WithMixin
     : super self::_WithMixin&Supertype&Mixin::•()
     ;
 }
 class IllegalSupertype extends core::Object {
-  synthetic constructor •() → self::IllegalSupertype*
+  synthetic constructor •() → self::IllegalSupertype
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  constructor a() → self::C<self::C::T*>*
+  constructor a() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
-    return lib::C::b<self::C::b::T*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory b<T extends core::Object? = dynamic>() → self::C<self::C::b::T%>
+    return lib::C::b<self::C::b::T%>();
 }
 static method main() → dynamic {
-  new self::C::•<core::String*>();
-  new self::C::a<core::String*>();
-  new lib::C::a<core::String*>();
-  new lib::C::•<core::String*>();
-  new lib::C::a<core::String*>();
-  new lib::C::a<core::String*>();
-  new self::WithMixin::•().{lib::Supertype::supertypeMethod}(){() →* dynamic};
-  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}(){() →* dynamic};
+  new self::C::•<core::String>();
+  new self::C::a<core::String>();
+  new lib::C::a<core::String>();
+  new lib::C::•<core::String>();
+  new lib::C::a<core::String>();
+  new lib::C::a<core::String>();
+  new self::WithMixin::•().{lib::Supertype::supertypeMethod}(){() → dynamic};
+  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}(){() → dynamic};
   new self::IllegalSupertype::•();
 }
 
-library test.qualified.lib;
+library test.qualified.lib /*isNonNullableByDefault*/;
 import self as lib;
 import "dart:core" as core;
 import "qualified.dart" as self;
 
 import "org-dartlang-testcase:///qualified.dart" as main;
 
-typedef VoidFunction = () →* void;
-class C<T extends core::Object* = dynamic> extends self::C<lib::C::T*> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  constructor •() → lib::C<lib::C::T*>*
+typedef VoidFunction = () → void;
+class C<T extends core::Object? = dynamic> extends self::C<lib::C::T%> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  constructor •() → lib::C<lib::C::T%>
     : super self::C::•()
     ;
-  constructor a() → lib::C<lib::C::T*>*
+  constructor a() → lib::C<lib::C::T%>
     : super self::C::•()
     ;
-  static factory b<T extends core::Object* = dynamic>() → lib::C<lib::C::b::T*>*
-    return new lib::C::a<lib::C::b::T*>();
+  static factory b<T extends core::Object? = dynamic>() → lib::C<lib::C::b::T%>
+    return new lib::C::a<lib::C::b::T%>();
 }
 class Supertype extends core::Object {
-  synthetic constructor •() → lib::Supertype*
+  synthetic constructor •() → lib::Supertype
     : super core::Object::•()
     ;
   method supertypeMethod() → dynamic {
     core::print("I'm supertypeMethod form lib.Supertype");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Mixin extends core::Object {
-  synthetic constructor •() → lib::Mixin*
+  synthetic constructor •() → lib::Mixin
     : super core::Object::•()
     ;
   method foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/qualified.dart.weak.outline.expect b/pkg/front_end/testcases/general/qualified.dart.weak.outline.expect
index 57448e6..a9d4036 100644
--- a/pkg/front_end/testcases/general/qualified.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.weak.outline.expect
@@ -1,9 +1,9 @@
-library test.qualified.main;
+library test.qualified.main /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/qualified.dart:13:11: Error: The name of a constructor must match the name of the enclosing class.
-//   factory WrongName() {}
+//   factory WrongName() => throw '';
 //           ^^^^^^^^^
 // pkg/front_end/testcases/general/qualified.dart:11:7: Context: The name of the enclosing class is 'Bad'.
 // class Bad extends lib.Missing {
@@ -34,114 +34,64 @@
 class Bad extends core::Object {
   method method() → invalid-type
     ;
-  static factory WrongName() → self::Bad*
+  static factory WrongName() → self::Bad
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
+  synthetic constructor •() → self::_WithMixin&Supertype&Mixin
     : super lib::Supertype::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{lib::Mixin::foo}();
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
-  synthetic constructor •() → self::WithMixin*
+  synthetic constructor •() → self::WithMixin
     ;
 }
 class IllegalSupertype extends core::Object {
-  synthetic constructor •() → self::IllegalSupertype*
+  synthetic constructor •() → self::IllegalSupertype
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
-  static final field dynamic _redirecting# = <dynamic>[self::C::b];
-  constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
+  static final field dynamic _redirecting# = <dynamic>[self::C::b]/*isLegacy*/;
+  constructor •() → self::C<self::C::T%>
     ;
-  constructor a() → self::C<self::C::T*>*
+  constructor a() → self::C<self::C::T%>
     ;
-  static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
-    return lib::C::b<self::C::b::T*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory b<T extends core::Object? = dynamic>() → self::C<self::C::b::T%>
+    return lib::C::b<self::C::b::T%>();
 }
 static method main() → dynamic
   ;
 
-library test.qualified.lib;
+library test.qualified.lib /*isNonNullableByDefault*/;
 import self as lib;
 import "dart:core" as core;
 import "qualified.dart" as self;
 
 import "org-dartlang-testcase:///qualified.dart" as main;
 
-typedef VoidFunction = () →* void;
-class C<T extends core::Object* = dynamic> extends self::C<lib::C::T*> {
-  static final field dynamic _redirecting# = <dynamic>[lib::C::b];
-  constructor •() → lib::C<lib::C::T*>*
+typedef VoidFunction = () → void;
+class C<T extends core::Object? = dynamic> extends self::C<lib::C::T%> {
+  static final field dynamic _redirecting# = <dynamic>[lib::C::b]/*isLegacy*/;
+  constructor •() → lib::C<lib::C::T%>
     ;
-  constructor a() → lib::C<lib::C::T*>*
+  constructor a() → lib::C<lib::C::T%>
     ;
-  static factory b<T extends core::Object* = dynamic>() → lib::C<lib::C::b::T*>*
-    return new lib::C::a<lib::C::b::T*>();
+  static factory b<T extends core::Object? = dynamic>() → lib::C<lib::C::b::T%>
+    return new lib::C::a<lib::C::b::T%>();
 }
 class Supertype extends core::Object {
-  synthetic constructor •() → lib::Supertype*
+  synthetic constructor •() → lib::Supertype
     ;
   method supertypeMethod() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Mixin extends core::Object {
-  synthetic constructor •() → lib::Mixin*
+  synthetic constructor •() → lib::Mixin
     ;
   method foo() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 
 
diff --git a/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect b/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect
index 83dac20..04ffa8c 100644
--- a/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/qualified.dart.weak.transformed.expect
@@ -1,9 +1,9 @@
-library test.qualified.main;
+library test.qualified.main /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/qualified.dart:13:11: Error: The name of a constructor must match the name of the enclosing class.
-//   factory WrongName() {}
+//   factory WrongName() => throw '';
 //           ^^^^^^^^^
 // pkg/front_end/testcases/general/qualified.dart:11:7: Context: The name of the enclosing class is 'Bad'.
 // class Bad extends lib.Missing {
@@ -33,20 +33,11 @@
 part qualified_part.dart;
 class Bad extends core::Object {
   method method() → invalid-type {}
-  static factory WrongName() → self::Bad* {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory WrongName() → self::Bad
+    return throw "";
 }
 abstract class _WithMixin&Supertype&Mixin extends lib::Supertype implements lib::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •() → self::_WithMixin&Supertype&Mixin*
+  synthetic constructor •() → self::_WithMixin&Supertype&Mixin
     : super lib::Supertype::•()
     ;
   method /* from org-dartlang-testcase:///qualified_lib.dart */ foo() → dynamic {
@@ -54,112 +45,72 @@
   }
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
-  synthetic constructor •() → self::WithMixin*
+  synthetic constructor •() → self::WithMixin
     : super self::_WithMixin&Supertype&Mixin::•()
     ;
 }
 class IllegalSupertype extends core::Object {
-  synthetic constructor •() → self::IllegalSupertype*
+  synthetic constructor •() → self::IllegalSupertype
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class C<T extends core::Object* = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object { // from org-dartlang-testcase:///qualified_part.dart
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  constructor a() → self::C<self::C::T*>*
+  constructor a() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  static factory b<T extends core::Object* = dynamic>() → self::C<self::C::b::T*>*
-    return lib::C::b<self::C::b::T*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory b<T extends core::Object? = dynamic>() → self::C<self::C::b::T%>
+    return lib::C::b<self::C::b::T%>();
 }
 static method main() → dynamic {
-  new self::C::•<core::String*>();
-  new self::C::a<core::String*>();
-  new lib::C::a<core::String*>();
-  new lib::C::•<core::String*>();
-  new lib::C::a<core::String*>();
-  new lib::C::a<core::String*>();
-  new self::WithMixin::•().{lib::Supertype::supertypeMethod}(){() →* dynamic};
-  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}(){() →* dynamic};
+  new self::C::•<core::String>();
+  new self::C::a<core::String>();
+  new lib::C::a<core::String>();
+  new lib::C::•<core::String>();
+  new lib::C::a<core::String>();
+  new lib::C::a<core::String>();
+  new self::WithMixin::•().{lib::Supertype::supertypeMethod}(){() → dynamic};
+  new self::WithMixin::•().{self::_WithMixin&Supertype&Mixin::foo}(){() → dynamic};
   new self::IllegalSupertype::•();
 }
 
-library test.qualified.lib;
+library test.qualified.lib /*isNonNullableByDefault*/;
 import self as lib;
 import "dart:core" as core;
 import "qualified.dart" as self;
 
 import "org-dartlang-testcase:///qualified.dart" as main;
 
-typedef VoidFunction = () →* void;
-class C<T extends core::Object* = dynamic> extends self::C<lib::C::T*> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  constructor •() → lib::C<lib::C::T*>*
+typedef VoidFunction = () → void;
+class C<T extends core::Object? = dynamic> extends self::C<lib::C::T%> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  constructor •() → lib::C<lib::C::T%>
     : super self::C::•()
     ;
-  constructor a() → lib::C<lib::C::T*>*
+  constructor a() → lib::C<lib::C::T%>
     : super self::C::•()
     ;
-  static factory b<T extends core::Object* = dynamic>() → lib::C<lib::C::b::T*>*
-    return new lib::C::a<lib::C::b::T*>();
+  static factory b<T extends core::Object? = dynamic>() → lib::C<lib::C::b::T%>
+    return new lib::C::a<lib::C::b::T%>();
 }
 class Supertype extends core::Object {
-  synthetic constructor •() → lib::Supertype*
+  synthetic constructor •() → lib::Supertype
     : super core::Object::•()
     ;
   method supertypeMethod() → dynamic {
     core::print("I'm supertypeMethod form lib.Supertype");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Mixin extends core::Object {
-  synthetic constructor •() → lib::Mixin*
+  synthetic constructor •() → lib::Mixin
     : super core::Object::•()
     ;
   method foo() → dynamic {
     core::print("I'm Mixin.foo");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/qualified_lib.dart b/pkg/front_end/testcases/general/qualified_lib.dart
index abeef31..ae00a71 100644
--- a/pkg/front_end/testcases/general/qualified_lib.dart
+++ b/pkg/front_end/testcases/general/qualified_lib.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 library test.qualified.lib;
 
 import "qualified.dart" as main;
diff --git a/pkg/front_end/testcases/general/qualified_part.dart b/pkg/front_end/testcases/general/qualified_part.dart
index 70ec895..370335a 100644
--- a/pkg/front_end/testcases/general/qualified_part.dart
+++ b/pkg/front_end/testcases/general/qualified_part.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 part of test.qualified.main;
 
 class C<T> {
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart b/pkg/front_end/testcases/general/redirecting_constructor.dart
index d993dc3..72b53b6 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class A {
   A();
   factory A.fisk() = B;
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.textual_outline.expect
index 16cde0a..2e2eb1f 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   A();
   factory A.fisk() = B;
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.textual_outline_modelled.expect
index 16cde0a..2e2eb1f 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   A();
   factory A.fisk() = B;
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.expect
index 293f8a2..5f462b3 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory fisk() → self::A*
+  static factory fisk() → self::A
     return new self::B::•();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.modular.expect
index 293f8a2..5f462b3 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.modular.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory fisk() → self::A*
+  static factory fisk() → self::A
     return new self::B::•();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.outline.expect
index 2ae8aaa..51530bf 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.outline.expect
@@ -1,26 +1,16 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::A::fisk];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[self::A::fisk]/*isLegacy*/;
+  constructor •() → self::A
     ;
-  static factory fisk() → self::A*
+  static factory fisk() → self::A
     return new self::B::•();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.transformed.expect
index 293f8a2..5f462b3 100644
--- a/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_constructor.dart.weak.transformed.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory fisk() → self::A*
+  static factory fisk() → self::A
     return new self::B::•();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart b/pkg/front_end/testcases/general/redirecting_factory.dart
index 6e8e39c..af4e16d 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 abstract class FooBase<Tf> {
   int get x;
   factory FooBase(int x) = Foo<Tf>;
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.textual_outline.expect
index d84ae38..b6e0d0a 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class FooBase<Tf> {
   int get x;
   factory FooBase(int x) = Foo<Tf>;
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.textual_outline_modelled.expect
index 5fa0044..3f02151 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Foo<T> implements FooBase {
   factory Foo(int x) = Bar<String, T>;
 }
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect
index ba2466c..27e2e84 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -11,60 +11,30 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class FooBase<Tf extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  abstract get x() → core::int*;
-  static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
+abstract class FooBase<Tf extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  abstract get x() → core::int;
+  static factory •<Tf extends core::Object? = dynamic>(core::int x) → self::FooBase<self::FooBase::•::Tf%>
     return invalid-expression "pkg/front_end/testcases/general/redirecting_factory.dart:7:28: Error: The constructor function type 'Foo<Tf> Function(int)' isn't a subtype of 'FooBase<Tf> Function(int)'.
  - 'Foo' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
  - 'FooBase' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
   factory FooBase(int x) = Foo<Tf>;
                            ^";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
-    return new self::Bar::•<core::String*, self::Foo::•::T*>(x);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+abstract class Foo<T extends core::Object? = dynamic> extends core::Object implements self::FooBase<dynamic> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>(core::int x) → self::Foo<self::Foo::•::T%>
+    return new self::Bar::•<core::String, self::Foo::•::T%>(x);
 }
-class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
-  field core::int* x;
-  constructor •(core::int* x) → self::Bar<self::Bar::Sb*, self::Bar::Tb*>*
+class Bar<Sb extends core::Object? = dynamic, Tb extends core::Object? = dynamic> extends core::Object implements self::Foo<self::Bar::Tb%> {
+  field core::int x;
+  constructor •(core::int x) → self::Bar<self::Bar::Sb%, self::Bar::Tb%>
     : self::Bar::x = x, super core::Object::•() {
-    core::print("Bar<${self::Bar::Sb*},${self::Bar::Tb*}>");
+    core::print("Bar<${self::Bar::Sb%},${self::Bar::Tb%}>");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Builder<X extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Builder<self::Builder::X*>*
+class Builder<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Builder<self::Builder::X%>
     : super core::Object::•()
     ;
   method method() → dynamic {
@@ -74,94 +44,34 @@
   factory FooBase(int x) = Foo<Tf>;
                            ^";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C3];
-  static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
-    return self::SimpleCaseImpl::•<self::SimpleCase::•::A*, self::SimpleCase::•::B*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class SimpleCase<A extends core::Object? = dynamic, B extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
+  static factory •<A extends core::Object? = dynamic, B extends core::Object? = dynamic>() → self::SimpleCase<self::SimpleCase::•::A%, self::SimpleCase::•::B%>
+    return self::SimpleCaseImpl::•<self::SimpleCase::•::A%, self::SimpleCase::•::B%>();
 }
-class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
-  static final field dynamic _redirecting# = <dynamic>[#C4];
-  static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
-    return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class SimpleCaseImpl<Ai extends core::Object? = dynamic, Bi extends core::Object? = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai%, self::SimpleCaseImpl::Bi%> {
+  static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+  static factory •<Ai extends core::Object? = dynamic, Bi extends core::Object? = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai%, self::SimpleCaseImpl::•::Bi%>
+    return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai%, self::SimpleCaseImpl::•::Bi%>();
 }
-class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
-  synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
+class SimpleCaseImpl2<Ai2 extends core::Object? = dynamic, Bi2 extends core::Object? = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2%, self::SimpleCaseImpl2::Bi2%> {
+  synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2%, self::SimpleCaseImpl2::Bi2%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Base<M extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Base<self::Base::M*>*
+class Base<M extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Base<self::Base::M%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Mixin<M extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Mixin<self::Mixin::M*>*
+class Mixin<M extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Mixin<self::Mixin::M%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Mix<M extends core::Object* = dynamic> = self::Base<self::Mix::M*> with self::Mixin<self::Mix::M*> {
-  synthetic constructor •() → self::Mix<self::Mix::M*>*
+class Mix<M extends core::Object? = dynamic> = self::Base<self::Mix::M%> with self::Mixin<self::Mix::M%> {
+  synthetic constructor •() → self::Mix<self::Mix::M%>
     : super self::Base::•()
     ;
 }
@@ -170,9 +80,9 @@
  - 'Foo' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
  - 'FooBase' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
   factory FooBase(int x) = Foo<Tf>;
-                           ^".{self::FooBase::x}{core::int*});
-  new self::SimpleCaseImpl2::•<core::int*, core::double*>();
-  new self::Mix::•<core::double*>();
+                           ^".{self::FooBase::x}{core::int});
+  new self::SimpleCaseImpl2::•<core::int, core::double>();
+  new self::Mix::•<core::double>();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.modular.expect
index ba2466c..27e2e84 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -11,60 +11,30 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class FooBase<Tf extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  abstract get x() → core::int*;
-  static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
+abstract class FooBase<Tf extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  abstract get x() → core::int;
+  static factory •<Tf extends core::Object? = dynamic>(core::int x) → self::FooBase<self::FooBase::•::Tf%>
     return invalid-expression "pkg/front_end/testcases/general/redirecting_factory.dart:7:28: Error: The constructor function type 'Foo<Tf> Function(int)' isn't a subtype of 'FooBase<Tf> Function(int)'.
  - 'Foo' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
  - 'FooBase' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
   factory FooBase(int x) = Foo<Tf>;
                            ^";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
-    return new self::Bar::•<core::String*, self::Foo::•::T*>(x);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+abstract class Foo<T extends core::Object? = dynamic> extends core::Object implements self::FooBase<dynamic> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>(core::int x) → self::Foo<self::Foo::•::T%>
+    return new self::Bar::•<core::String, self::Foo::•::T%>(x);
 }
-class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
-  field core::int* x;
-  constructor •(core::int* x) → self::Bar<self::Bar::Sb*, self::Bar::Tb*>*
+class Bar<Sb extends core::Object? = dynamic, Tb extends core::Object? = dynamic> extends core::Object implements self::Foo<self::Bar::Tb%> {
+  field core::int x;
+  constructor •(core::int x) → self::Bar<self::Bar::Sb%, self::Bar::Tb%>
     : self::Bar::x = x, super core::Object::•() {
-    core::print("Bar<${self::Bar::Sb*},${self::Bar::Tb*}>");
+    core::print("Bar<${self::Bar::Sb%},${self::Bar::Tb%}>");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Builder<X extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Builder<self::Builder::X*>*
+class Builder<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Builder<self::Builder::X%>
     : super core::Object::•()
     ;
   method method() → dynamic {
@@ -74,94 +44,34 @@
   factory FooBase(int x) = Foo<Tf>;
                            ^";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C3];
-  static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
-    return self::SimpleCaseImpl::•<self::SimpleCase::•::A*, self::SimpleCase::•::B*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class SimpleCase<A extends core::Object? = dynamic, B extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
+  static factory •<A extends core::Object? = dynamic, B extends core::Object? = dynamic>() → self::SimpleCase<self::SimpleCase::•::A%, self::SimpleCase::•::B%>
+    return self::SimpleCaseImpl::•<self::SimpleCase::•::A%, self::SimpleCase::•::B%>();
 }
-class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
-  static final field dynamic _redirecting# = <dynamic>[#C4];
-  static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
-    return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class SimpleCaseImpl<Ai extends core::Object? = dynamic, Bi extends core::Object? = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai%, self::SimpleCaseImpl::Bi%> {
+  static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+  static factory •<Ai extends core::Object? = dynamic, Bi extends core::Object? = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai%, self::SimpleCaseImpl::•::Bi%>
+    return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai%, self::SimpleCaseImpl::•::Bi%>();
 }
-class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
-  synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
+class SimpleCaseImpl2<Ai2 extends core::Object? = dynamic, Bi2 extends core::Object? = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2%, self::SimpleCaseImpl2::Bi2%> {
+  synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2%, self::SimpleCaseImpl2::Bi2%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Base<M extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Base<self::Base::M*>*
+class Base<M extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Base<self::Base::M%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Mixin<M extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Mixin<self::Mixin::M*>*
+class Mixin<M extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Mixin<self::Mixin::M%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Mix<M extends core::Object* = dynamic> = self::Base<self::Mix::M*> with self::Mixin<self::Mix::M*> {
-  synthetic constructor •() → self::Mix<self::Mix::M*>*
+class Mix<M extends core::Object? = dynamic> = self::Base<self::Mix::M%> with self::Mixin<self::Mix::M%> {
+  synthetic constructor •() → self::Mix<self::Mix::M%>
     : super self::Base::•()
     ;
 }
@@ -170,9 +80,9 @@
  - 'Foo' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
  - 'FooBase' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
   factory FooBase(int x) = Foo<Tf>;
-                           ^".{self::FooBase::x}{core::int*});
-  new self::SimpleCaseImpl2::•<core::int*, core::double*>();
-  new self::Mix::•<core::double*>();
+                           ^".{self::FooBase::x}{core::int});
+  new self::SimpleCaseImpl2::•<core::int, core::double>();
+  new self::Mix::•<core::double>();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.outline.expect
index 6978627..cff6670 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -11,146 +11,56 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class FooBase<Tf extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::FooBase::•];
-  abstract get x() → core::int*;
-  static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
+abstract class FooBase<Tf extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::FooBase::•]/*isLegacy*/;
+  abstract get x() → core::int;
+  static factory •<Tf extends core::Object? = dynamic>(core::int x) → self::FooBase<self::FooBase::•::Tf%>
     return invalid-expression "pkg/front_end/testcases/general/redirecting_factory.dart:7:28: Error: The constructor function type 'Foo<Tf> Function(int)' isn't a subtype of 'FooBase<Tf> Function(int)'.
  - 'Foo' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
  - 'FooBase' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
   factory FooBase(int x) = Foo<Tf>;
                            ^";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
-  static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
-  static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
-    return new self::Bar::•<core::String*, self::Foo::•::T*>(x);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+abstract class Foo<T extends core::Object? = dynamic> extends core::Object implements self::FooBase<dynamic> {
+  static final field dynamic _redirecting# = <dynamic>[self::Foo::•]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>(core::int x) → self::Foo<self::Foo::•::T%>
+    return new self::Bar::•<core::String, self::Foo::•::T%>(x);
 }
-class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
-  field core::int* x;
-  constructor •(core::int* x) → self::Bar<self::Bar::Sb*, self::Bar::Tb*>*
+class Bar<Sb extends core::Object? = dynamic, Tb extends core::Object? = dynamic> extends core::Object implements self::Foo<self::Bar::Tb%> {
+  field core::int x;
+  constructor •(core::int x) → self::Bar<self::Bar::Sb%, self::Bar::Tb%>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Builder<X extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Builder<self::Builder::X*>*
+class Builder<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Builder<self::Builder::X%>
     ;
   method method() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::SimpleCase::•];
-  static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
-    return self::SimpleCaseImpl::•<self::SimpleCase::•::A*, self::SimpleCase::•::B*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class SimpleCase<A extends core::Object? = dynamic, B extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::SimpleCase::•]/*isLegacy*/;
+  static factory •<A extends core::Object? = dynamic, B extends core::Object? = dynamic>() → self::SimpleCase<self::SimpleCase::•::A%, self::SimpleCase::•::B%>
+    return self::SimpleCaseImpl::•<self::SimpleCase::•::A%, self::SimpleCase::•::B%>();
 }
-class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
-  static final field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•];
-  static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
-    return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class SimpleCaseImpl<Ai extends core::Object? = dynamic, Bi extends core::Object? = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai%, self::SimpleCaseImpl::Bi%> {
+  static final field dynamic _redirecting# = <dynamic>[self::SimpleCaseImpl::•]/*isLegacy*/;
+  static factory •<Ai extends core::Object? = dynamic, Bi extends core::Object? = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai%, self::SimpleCaseImpl::•::Bi%>
+    return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai%, self::SimpleCaseImpl::•::Bi%>();
 }
-class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
-  synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
+class SimpleCaseImpl2<Ai2 extends core::Object? = dynamic, Bi2 extends core::Object? = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2%, self::SimpleCaseImpl2::Bi2%> {
+  synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2%, self::SimpleCaseImpl2::Bi2%>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Base<M extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Base<self::Base::M*>*
+class Base<M extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Base<self::Base::M%>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Mixin<M extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Mixin<self::Mixin::M*>*
+class Mixin<M extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Mixin<self::Mixin::M%>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Mix<M extends core::Object* = dynamic> = self::Base<self::Mix::M*> with self::Mixin<self::Mix::M*> {
-  synthetic constructor •() → self::Mix<self::Mix::M*>*
+class Mix<M extends core::Object? = dynamic> = self::Base<self::Mix::M%> with self::Mixin<self::Mix::M%> {
+  synthetic constructor •() → self::Mix<self::Mix::M%>
     : super self::Base::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect
index 025c11c..793a07e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -11,60 +11,30 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class FooBase<Tf extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  abstract get x() → core::int*;
-  static factory •<Tf extends core::Object* = dynamic>(core::int* x) → self::FooBase<self::FooBase::•::Tf*>*
+abstract class FooBase<Tf extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  abstract get x() → core::int;
+  static factory •<Tf extends core::Object? = dynamic>(core::int x) → self::FooBase<self::FooBase::•::Tf%>
     return invalid-expression "pkg/front_end/testcases/general/redirecting_factory.dart:7:28: Error: The constructor function type 'Foo<Tf> Function(int)' isn't a subtype of 'FooBase<Tf> Function(int)'.
  - 'Foo' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
  - 'FooBase' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
   factory FooBase(int x) = Foo<Tf>;
                            ^";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-abstract class Foo<T extends core::Object* = dynamic> extends core::Object implements self::FooBase<dynamic> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  static factory •<T extends core::Object* = dynamic>(core::int* x) → self::Foo<self::Foo::•::T*>*
-    return new self::Bar::•<core::String*, self::Foo::•::T*>(x);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+abstract class Foo<T extends core::Object? = dynamic> extends core::Object implements self::FooBase<dynamic> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>(core::int x) → self::Foo<self::Foo::•::T%>
+    return new self::Bar::•<core::String, self::Foo::•::T%>(x);
 }
-class Bar<Sb extends core::Object* = dynamic, Tb extends core::Object* = dynamic> extends core::Object implements self::Foo<self::Bar::Tb*> {
-  field core::int* x;
-  constructor •(core::int* x) → self::Bar<self::Bar::Sb*, self::Bar::Tb*>*
+class Bar<Sb extends core::Object? = dynamic, Tb extends core::Object? = dynamic> extends core::Object implements self::Foo<self::Bar::Tb%> {
+  field core::int x;
+  constructor •(core::int x) → self::Bar<self::Bar::Sb%, self::Bar::Tb%>
     : self::Bar::x = x, super core::Object::•() {
-    core::print("Bar<${self::Bar::Sb*},${self::Bar::Tb*}>");
+    core::print("Bar<${self::Bar::Sb%},${self::Bar::Tb%}>");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Builder<X extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Builder<self::Builder::X*>*
+class Builder<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Builder<self::Builder::X%>
     : super core::Object::•()
     ;
   method method() → dynamic {
@@ -74,94 +44,34 @@
   factory FooBase(int x) = Foo<Tf>;
                            ^";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class SimpleCase<A extends core::Object* = dynamic, B extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C3];
-  static factory •<A extends core::Object* = dynamic, B extends core::Object* = dynamic>() → self::SimpleCase<self::SimpleCase::•::A*, self::SimpleCase::•::B*>*
-    return self::SimpleCaseImpl::•<self::SimpleCase::•::A*, self::SimpleCase::•::B*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class SimpleCase<A extends core::Object? = dynamic, B extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C3]/*isLegacy*/;
+  static factory •<A extends core::Object? = dynamic, B extends core::Object? = dynamic>() → self::SimpleCase<self::SimpleCase::•::A%, self::SimpleCase::•::B%>
+    return self::SimpleCaseImpl::•<self::SimpleCase::•::A%, self::SimpleCase::•::B%>();
 }
-class SimpleCaseImpl<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai*, self::SimpleCaseImpl::Bi*> {
-  static final field dynamic _redirecting# = <dynamic>[#C4];
-  static factory •<Ai extends core::Object* = dynamic, Bi extends core::Object* = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>*
-    return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai*, self::SimpleCaseImpl::•::Bi*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class SimpleCaseImpl<Ai extends core::Object? = dynamic, Bi extends core::Object? = dynamic> extends core::Object implements self::SimpleCase<self::SimpleCaseImpl::Ai%, self::SimpleCaseImpl::Bi%> {
+  static final field dynamic _redirecting# = <dynamic>[#C4]/*isLegacy*/;
+  static factory •<Ai extends core::Object? = dynamic, Bi extends core::Object? = dynamic>() → self::SimpleCaseImpl<self::SimpleCaseImpl::•::Ai%, self::SimpleCaseImpl::•::Bi%>
+    return new self::SimpleCaseImpl2::•<self::SimpleCaseImpl::•::Ai%, self::SimpleCaseImpl::•::Bi%>();
 }
-class SimpleCaseImpl2<Ai2 extends core::Object* = dynamic, Bi2 extends core::Object* = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*> {
-  synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2*, self::SimpleCaseImpl2::Bi2*>*
+class SimpleCaseImpl2<Ai2 extends core::Object? = dynamic, Bi2 extends core::Object? = dynamic> extends core::Object implements self::SimpleCaseImpl<self::SimpleCaseImpl2::Ai2%, self::SimpleCaseImpl2::Bi2%> {
+  synthetic constructor •() → self::SimpleCaseImpl2<self::SimpleCaseImpl2::Ai2%, self::SimpleCaseImpl2::Bi2%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Base<M extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Base<self::Base::M*>*
+class Base<M extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Base<self::Base::M%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Mixin<M extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Mixin<self::Mixin::M*>*
+class Mixin<M extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Mixin<self::Mixin::M%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class Mix<M extends core::Object* = dynamic> extends self::Base<self::Mix::M*> implements self::Mixin<self::Mix::M*> /*isEliminatedMixin*/  {
-  synthetic constructor •() → self::Mix<self::Mix::M*>*
+class Mix<M extends core::Object? = dynamic> extends self::Base<self::Mix::M%> implements self::Mixin<self::Mix::M%> /*isEliminatedMixin*/  {
+  synthetic constructor •() → self::Mix<self::Mix::M%>
     : super self::Base::•()
     ;
 }
@@ -170,9 +80,9 @@
  - 'Foo' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
  - 'FooBase' is from 'pkg/front_end/testcases/general/redirecting_factory.dart'.
   factory FooBase(int x) = Foo<Tf>;
-                           ^".{self::FooBase::x}{core::int*});
-  new self::SimpleCaseImpl2::•<core::int*, core::double*>();
-  new self::Mix::•<core::double*>();
+                           ^".{self::FooBase::x}{core::int});
+  new self::SimpleCaseImpl2::•<core::int, core::double>();
+  new self::Mix::•<core::double>();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart
index 9ffa473..ad9409e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // The purpose of this test is to check the representation of redirecting
 // factory constructors in a case of a redirecting chain.
 
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.textual_outline.expect
index f0d752d..f7ca084 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.chain_test;
 
 class A {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.textual_outline_modelled.expect
index f0d752d..f7ca084 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.chain_test;
 
 class A {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.expect
index e86259e..d6b5891 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.expect
@@ -1,26 +1,16 @@
-library redirecting_factory_constructors.chain_test;
+library redirecting_factory_constructors.chain_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1, #C2];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory first() → self::A*
+  static factory first() → self::A
     return new self::A::•();
-  static factory second() → self::A*
+  static factory second() → self::A
     return self::A::first();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.modular.expect
index e86259e..d6b5891 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.modular.expect
@@ -1,26 +1,16 @@
-library redirecting_factory_constructors.chain_test;
+library redirecting_factory_constructors.chain_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1, #C2];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory first() → self::A*
+  static factory first() → self::A
     return new self::A::•();
-  static factory second() → self::A*
+  static factory second() → self::A
     return self::A::first();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.outline.expect
index 8eeb6bc..ae46768 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.outline.expect
@@ -1,25 +1,15 @@
-library redirecting_factory_constructors.chain_test;
+library redirecting_factory_constructors.chain_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[self::A::first, self::A::second]/*isLegacy*/;
+  constructor •() → self::A
     ;
-  static factory first() → self::A*
+  static factory first() → self::A
     return new self::A::•();
-  static factory second() → self::A*
+  static factory second() → self::A
     return self::A::first();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.transformed.expect
index e86259e..d6b5891 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_chain_test.dart.weak.transformed.expect
@@ -1,26 +1,16 @@
-library redirecting_factory_constructors.chain_test;
+library redirecting_factory_constructors.chain_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1, #C2];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1, #C2]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory first() → self::A*
+  static factory first() → self::A
     return new self::A::•();
-  static factory second() → self::A*
+  static factory second() → self::A
     return self::A::first();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart
index 5564e78..8d904fd 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // This test checks that the type inference implementation correctly uses least
 // closure of the inferred type arguments in invocations of 'const' redirecting
 // factory constructors in case there are type variables in them.
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.textual_outline.expect
index 61acaeb..1eae718 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class _X<T> {
   const factory _X() = _Y<T>;
 }
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.textual_outline_modelled.expect
index 7ad545b..71b737f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<T> {
   A(this.x);
   _X<T> x;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect
index 3dc0b99..580833f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.expect
@@ -1,68 +1,38 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class _X<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
-    return new self::_Y::•<self::_X::•::T*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class _X<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>() → self::_X<self::_X::•::T%>
+    return new self::_Y::•<self::_X::•::T%>();
 }
-class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
-  const constructor •() → self::_Y<self::_Y::T*>*
+class _Y<T extends core::Object? = dynamic> extends core::Object implements self::_X<self::_Y::T%> /*hasConstConstructor*/  {
+  const constructor •() → self::_Y<self::_Y::T%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class A<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::_X<self::A::T*>* x;
-  constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::_X<self::A::T%> x;
+  constructor •(self::_X<self::A::T%> x) → self::A<self::A::T%>
     : self::A::x = x, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends self::A<self::B::T%> {
+  constructor •() → self::B<self::B::T%>
     : super self::A::•(#C2)
     ;
 }
 static method main() → dynamic {
-  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_X<dynamic>*};
-  if(!(x is self::_Y<Null>*)) {
-    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type*}}, but `_Y<Null>` expected";
+  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_X<dynamic>};
+  if(!(x is{ForNonNullableByDefault} self::_Y<Null>)) {
+    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type}}, but `_Y<Null>` expected";
   }
 }
 
 constants  {
   #C1 = constructor-tearoff self::_X::•
-  #C2 = self::_Y<Null> {}
+  #C2 = self::_Y<Never*> {}
 }
 
 
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.modular.expect
index 3dc0b99..580833f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.modular.expect
@@ -1,68 +1,38 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class _X<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
-    return new self::_Y::•<self::_X::•::T*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class _X<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>() → self::_X<self::_X::•::T%>
+    return new self::_Y::•<self::_X::•::T%>();
 }
-class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
-  const constructor •() → self::_Y<self::_Y::T*>*
+class _Y<T extends core::Object? = dynamic> extends core::Object implements self::_X<self::_Y::T%> /*hasConstConstructor*/  {
+  const constructor •() → self::_Y<self::_Y::T%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class A<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::_X<self::A::T*>* x;
-  constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::_X<self::A::T%> x;
+  constructor •(self::_X<self::A::T%> x) → self::A<self::A::T%>
     : self::A::x = x, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends self::A<self::B::T%> {
+  constructor •() → self::B<self::B::T%>
     : super self::A::•(#C2)
     ;
 }
 static method main() → dynamic {
-  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_X<dynamic>*};
-  if(!(x is self::_Y<Null>*)) {
-    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type*}}, but `_Y<Null>` expected";
+  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_X<dynamic>};
+  if(!(x is{ForNonNullableByDefault} self::_Y<Null>)) {
+    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type}}, but `_Y<Null>` expected";
   }
 }
 
 constants  {
   #C1 = constructor-tearoff self::_X::•
-  #C2 = self::_Y<Null> {}
+  #C2 = self::_Y<Never*> {}
 }
 
 
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.outline.expect
index 23c7bac..a3aa00a 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.outline.expect
@@ -1,54 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class _X<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::_X::•];
-  static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
-    return new self::_Y::•<self::_X::•::T*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class _X<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::_X::•]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>() → self::_X<self::_X::•::T%>
+    return new self::_Y::•<self::_X::•::T%>();
 }
-class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
-  const constructor •() → self::_Y<self::_Y::T*>*
+class _Y<T extends core::Object? = dynamic> extends core::Object implements self::_X<self::_Y::T%> /*hasConstConstructor*/  {
+  const constructor •() → self::_Y<self::_Y::T%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class A<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::_X<self::A::T*>* x;
-  constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::_X<self::A::T%> x;
+  constructor •(self::_X<self::A::T%> x) → self::A<self::A::T%>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends self::A<self::B::T%> {
+  constructor •() → self::B<self::B::T%>
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect
index 3dc0b99..580833f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_const_inference.dart.weak.transformed.expect
@@ -1,68 +1,38 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class _X<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  static factory •<T extends core::Object* = dynamic>() → self::_X<self::_X::•::T*>*
-    return new self::_Y::•<self::_X::•::T*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+class _X<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>() → self::_X<self::_X::•::T%>
+    return new self::_Y::•<self::_X::•::T%>();
 }
-class _Y<T extends core::Object* = dynamic> extends core::Object implements self::_X<self::_Y::T*> /*hasConstConstructor*/  {
-  const constructor •() → self::_Y<self::_Y::T*>*
+class _Y<T extends core::Object? = dynamic> extends core::Object implements self::_X<self::_Y::T%> /*hasConstConstructor*/  {
+  const constructor •() → self::_Y<self::_Y::T%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class A<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::_X<self::A::T*>* x;
-  constructor •(self::_X<self::A::T*>* x) → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::_X<self::A::T%> x;
+  constructor •(self::_X<self::A::T%> x) → self::A<self::A::T%>
     : self::A::x = x, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends self::A<self::B::T%> {
+  constructor •() → self::B<self::B::T%>
     : super self::A::•(#C2)
     ;
 }
 static method main() → dynamic {
-  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_X<dynamic>*};
-  if(!(x is self::_Y<Null>*)) {
-    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type*}}, but `_Y<Null>` expected";
+  dynamic x = new self::B::•<dynamic>().{self::A::x}{self::_X<dynamic>};
+  if(!(x is{ForNonNullableByDefault} self::_Y<Null>)) {
+    throw "Unexpected run-time type: `new B().x` is ${x.{core::Object::runtimeType}{core::Type}}, but `_Y<Null>` expected";
   }
 }
 
 constants  {
   #C1 = constructor-tearoff self::_X::•
-  #C2 = self::_Y<Null> {}
+  #C2 = self::_Y<Never*> {}
 }
 
 
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart
index d25c571..1107f18 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart=2.9
-
 // This test checks that annotations on redirecting factories and their formals
 // aren't skipped by the compiler and are observable in its output.
 
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.textual_outline.expect
index a9cc41f..d486790 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 const forParameter = 1;
 const forFactoryItself = 2;
 const anotherForParameter = 3;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.textual_outline_modelled.expect
index 83e49dd..72b47ec 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {
   Foo.named(p);
   @forFactoryItself
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.expect
index 9b12539..b05ebf3 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.expect
@@ -1,29 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor named(dynamic p) → self::Foo*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor named(dynamic p) → self::Foo
     : super core::Object::•()
     ;
   @#C2
-  static factory •(@#C3 @#C4 dynamic p) → self::Foo*
+  static factory •(@#C3 @#C4 dynamic p) → self::Foo
     return new self::Foo::named(p);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static const field core::int* forParameter = #C3;
-static const field core::int* forFactoryItself = #C2;
-static const field core::int* anotherForParameter = #C4;
+static const field core::int forParameter = #C3;
+static const field core::int forFactoryItself = #C2;
+static const field core::int anotherForParameter = #C4;
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.modular.expect
index 9b12539..b05ebf3 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.modular.expect
@@ -1,29 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor named(dynamic p) → self::Foo*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor named(dynamic p) → self::Foo
     : super core::Object::•()
     ;
   @#C2
-  static factory •(@#C3 @#C4 dynamic p) → self::Foo*
+  static factory •(@#C3 @#C4 dynamic p) → self::Foo
     return new self::Foo::named(p);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static const field core::int* forParameter = #C3;
-static const field core::int* forFactoryItself = #C2;
-static const field core::int* anotherForParameter = #C4;
+static const field core::int forParameter = #C3;
+static const field core::int forFactoryItself = #C2;
+static const field core::int anotherForParameter = #C4;
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.outline.expect
index 69d94af..06537eb 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.outline.expect
@@ -1,33 +1,23 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::Foo::•];
-  constructor named(dynamic p) → self::Foo*
+  static final field dynamic _redirecting# = <dynamic>[self::Foo::•]/*isLegacy*/;
+  constructor named(dynamic p) → self::Foo
     ;
   @self::forFactoryItself
-  static factory •(dynamic p) → self::Foo*
+  static factory •(dynamic p) → self::Foo
     return new self::Foo::named(p);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static const field core::int* forParameter = 1;
-static const field core::int* forFactoryItself = 2;
-static const field core::int* anotherForParameter = 3;
+static const field core::int forParameter = 1;
+static const field core::int forFactoryItself = 2;
+static const field core::int anotherForParameter = 3;
 static method main() → dynamic
   ;
 
 
 Extra constant evaluation status:
-Evaluated: StaticGet @ org-dartlang-testcase:///redirecting_factory_metadata.dart:15:4 -> IntConstant(2)
-Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_metadata.dart:14:7 -> ConstructorTearOffConstant(Foo.)
+Evaluated: StaticGet @ org-dartlang-testcase:///redirecting_factory_metadata.dart:13:4 -> IntConstant(2)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirecting_factory_metadata.dart:12:7 -> ConstructorTearOffConstant(Foo.)
 Extra constant evaluation: evaluated: 5, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.transformed.expect
index 9b12539..b05ebf3 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_metadata.dart.weak.transformed.expect
@@ -1,29 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor named(dynamic p) → self::Foo*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor named(dynamic p) → self::Foo
     : super core::Object::•()
     ;
   @#C2
-  static factory •(@#C3 @#C4 dynamic p) → self::Foo*
+  static factory •(@#C3 @#C4 dynamic p) → self::Foo
     return new self::Foo::named(p);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static const field core::int* forParameter = #C3;
-static const field core::int* forFactoryItself = #C2;
-static const field core::int* anotherForParameter = #C4;
+static const field core::int forParameter = #C3;
+static const field core::int forFactoryItself = #C2;
+static const field core::int anotherForParameter = #C4;
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart
index e1b8569..0598023 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // The purpose of this test is to check the representation of redirecting
 // factory constructors on a simple case.
 
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.textual_outline.expect
index a1e883f4..bbefe2c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.simple_test;
 
 class A {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.textual_outline_modelled.expect
index a1e883f4..bbefe2c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.simple_test;
 
 class A {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.expect
index f2a4360..d9ae044 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.expect
@@ -1,24 +1,14 @@
-library redirecting_factory_constructors.simple_test;
+library redirecting_factory_constructors.simple_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory redir() → self::A*
+  static factory redir() → self::A
     return new self::A::•();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.modular.expect
index f2a4360..d9ae044 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.modular.expect
@@ -1,24 +1,14 @@
-library redirecting_factory_constructors.simple_test;
+library redirecting_factory_constructors.simple_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory redir() → self::A*
+  static factory redir() → self::A
     return new self::A::•();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.outline.expect
index 20fd71c..aa6c274 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.outline.expect
@@ -1,23 +1,13 @@
-library redirecting_factory_constructors.simple_test;
+library redirecting_factory_constructors.simple_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::A::redir];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[self::A::redir]/*isLegacy*/;
+  constructor •() → self::A
     ;
-  static factory redir() → self::A*
+  static factory redir() → self::A
     return new self::A::•();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.transformed.expect
index f2a4360..d9ae044 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_simple_test.dart.weak.transformed.expect
@@ -1,24 +1,14 @@
-library redirecting_factory_constructors.simple_test;
+library redirecting_factory_constructors.simple_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory redir() → self::A*
+  static factory redir() → self::A
     return new self::A::•();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart
index 7df8a6e..611df4c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // The purpose of this test is to check the representation of redirecting
 // factory constructors in the case when the redirection target has type
 // arguments supplied by the redirecting factory constructor.
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.textual_outline.expect
index dfaace1..50ddae4 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.typeargs_test;
 
 class X {}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.textual_outline_modelled.expect
index b1ac84e..d52aa92 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.typeargs_test;
 
 class A {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.expect
index 16c46e9..dd93c57 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.expect
@@ -1,52 +1,32 @@
-library redirecting_factory_constructors.typeargs_test;
+library redirecting_factory_constructors.typeargs_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Y extends self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     : super self::X::•()
     ;
 }
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory redir() → self::A*
-    return new self::B::•<self::Y*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir() → self::A
+    return new self::B::•<self::Y>();
 }
-class B<T extends self::X*> extends self::A {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends self::X> extends self::A {
+  constructor •() → self::B<self::B::T>
     : super self::A::•()
     ;
 }
 static method main() → dynamic {
-  new self::B::•<self::Y*>();
+  new self::B::•<self::Y>();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.modular.expect
index 16c46e9..dd93c57 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.modular.expect
@@ -1,52 +1,32 @@
-library redirecting_factory_constructors.typeargs_test;
+library redirecting_factory_constructors.typeargs_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Y extends self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     : super self::X::•()
     ;
 }
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory redir() → self::A*
-    return new self::B::•<self::Y*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir() → self::A
+    return new self::B::•<self::Y>();
 }
-class B<T extends self::X*> extends self::A {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends self::X> extends self::A {
+  constructor •() → self::B<self::B::T>
     : super self::A::•()
     ;
 }
 static method main() → dynamic {
-  new self::B::•<self::Y*>();
+  new self::B::•<self::Y>();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.outline.expect
index 024a135..c7abba0 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.outline.expect
@@ -1,44 +1,24 @@
-library redirecting_factory_constructors.typeargs_test;
+library redirecting_factory_constructors.typeargs_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Y extends self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     ;
 }
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::A::redir];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[self::A::redir]/*isLegacy*/;
+  constructor •() → self::A
     ;
-  static factory redir() → self::A*
-    return new self::B::•<self::Y*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir() → self::A
+    return new self::B::•<self::Y>();
 }
-class B<T extends self::X*> extends self::A {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends self::X> extends self::A {
+  constructor •() → self::B<self::B::T>
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.transformed.expect
index 16c46e9..dd93c57 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeargs_test.dart.weak.transformed.expect
@@ -1,52 +1,32 @@
-library redirecting_factory_constructors.typeargs_test;
+library redirecting_factory_constructors.typeargs_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Y extends self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     : super self::X::•()
     ;
 }
 class A extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •() → self::A
     : super core::Object::•()
     ;
-  static factory redir() → self::A*
-    return new self::B::•<self::Y*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir() → self::A
+    return new self::B::•<self::Y>();
 }
-class B<T extends self::X*> extends self::A {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends self::X> extends self::A {
+  constructor •() → self::B<self::B::T>
     : super self::A::•()
     ;
 }
 static method main() → dynamic {
-  new self::B::•<self::Y*>();
+  new self::B::•<self::Y>();
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart
index 3094ddc..967771f 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // The purpose of this test is to check the representation of redirecting
 // factory constructors in the case when type parameters of the enclosing class
 // are used in type annotations of the parameters of the redirecting factory
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.textual_outline.expect
index 44e29ab..e04255c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.typeparam_test;
 
 class A<T, S> {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.textual_outline_modelled.expect
index 44e29ab..e04255c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.typeparam_test;
 
 class A<T, S> {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.expect
index 469f2af..40bf17a 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.expect
@@ -1,27 +1,17 @@
-library redirecting_factory_constructors.typeparam_test;
+library redirecting_factory_constructors.typeparam_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
+class A<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •(self::A::T% t, self::A::S% s) → self::A<self::A::T%, self::A::S%>
     : super core::Object::•()
     ;
-  static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
-    return new self::A::•<self::A::redir::T*, self::A::redir::S*>(t, s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(self::A::redir::T% t, self::A::redir::S% s) → self::A<self::A::redir::T%, self::A::redir::S%>
+    return new self::A::•<self::A::redir::T%, self::A::redir::S%>(t, s);
 }
 static method main() → dynamic {
-  new self::A::•<core::int*, core::String*>(42, "foobar");
+  new self::A::•<core::int, core::String>(42, "foobar");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.modular.expect
index 469f2af..40bf17a 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.modular.expect
@@ -1,27 +1,17 @@
-library redirecting_factory_constructors.typeparam_test;
+library redirecting_factory_constructors.typeparam_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
+class A<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •(self::A::T% t, self::A::S% s) → self::A<self::A::T%, self::A::S%>
     : super core::Object::•()
     ;
-  static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
-    return new self::A::•<self::A::redir::T*, self::A::redir::S*>(t, s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(self::A::redir::T% t, self::A::redir::S% s) → self::A<self::A::redir::T%, self::A::redir::S%>
+    return new self::A::•<self::A::redir::T%, self::A::redir::S%>(t, s);
 }
 static method main() → dynamic {
-  new self::A::•<core::int*, core::String*>(42, "foobar");
+  new self::A::•<core::int, core::String>(42, "foobar");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.outline.expect
index 795e0a9..6b35ffc 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.outline.expect
@@ -1,23 +1,13 @@
-library redirecting_factory_constructors.typeparam_test;
+library redirecting_factory_constructors.typeparam_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::A::redir];
-  constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
+class A<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::redir]/*isLegacy*/;
+  constructor •(self::A::T% t, self::A::S% s) → self::A<self::A::T%, self::A::S%>
     ;
-  static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
-    return new self::A::•<self::A::redir::T*, self::A::redir::S*>(t, s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(self::A::redir::T% t, self::A::redir::S% s) → self::A<self::A::redir::T%, self::A::redir::S%>
+    return new self::A::•<self::A::redir::T%, self::A::redir::S%>(t, s);
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.transformed.expect
index 469f2af..40bf17a 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparam_test.dart.weak.transformed.expect
@@ -1,27 +1,17 @@
-library redirecting_factory_constructors.typeparam_test;
+library redirecting_factory_constructors.typeparam_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic, S extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
+class A<T extends core::Object? = dynamic, S extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •(self::A::T% t, self::A::S% s) → self::A<self::A::T%, self::A::S%>
     : super core::Object::•()
     ;
-  static factory redir<T extends core::Object* = dynamic, S extends core::Object* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
-    return new self::A::•<self::A::redir::T*, self::A::redir::S*>(t, s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir<T extends core::Object? = dynamic, S extends core::Object? = dynamic>(self::A::redir::T% t, self::A::redir::S% s) → self::A<self::A::redir::T%, self::A::redir::S%>
+    return new self::A::•<self::A::redir::T%, self::A::redir::S%>(t, s);
 }
 static method main() → dynamic {
-  new self::A::•<core::int*, core::String*>(42, "foobar");
+  new self::A::•<core::int, core::String>(42, "foobar");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart
index 3de706f..102c03a 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // The purpose of this test is to check the representation of redirecting
 // factory constructors in the case when type parameters of the enclosing class
 // are used in type annotations of the parameters of the redirecting factory
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.textual_outline.expect
index c1ebcd6..e6ad16e 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.typeparambounds_test;
 
 class X {}
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.textual_outline_modelled.expect
index ec53c69..036a788 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library redirecting_factory_constructors.typeparambounds_test;
 
 class A<T, S extends T> {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.expect
index 98d4e12..62b93ec 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.expect
@@ -1,47 +1,27 @@
-library redirecting_factory_constructors.typeparambounds_test;
+library redirecting_factory_constructors.typeparambounds_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Y extends self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     : super self::X::•()
     ;
 }
-class A<T extends core::Object* = dynamic, S extends self::A::T* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
+class A<T extends core::Object? = dynamic, S extends self::A::T% = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •(self::A::T% t, self::A::S% s) → self::A<self::A::T%, self::A::S%>
     : super core::Object::•()
     ;
-  static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
-    return new self::A::•<self::A::redir::T*, self::A::redir::S*>(t, s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir<T extends core::Object? = dynamic, S extends self::A::redir::T% = dynamic>(self::A::redir::T% t, self::A::redir::S% s) → self::A<self::A::redir::T%, self::A::redir::S%>
+    return new self::A::•<self::A::redir::T%, self::A::redir::S%>(t, s);
 }
 static method main() → dynamic {
-  new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
+  new self::A::•<self::X, self::Y>(new self::X::•(), new self::Y::•());
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.modular.expect
index 98d4e12..62b93ec 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.modular.expect
@@ -1,47 +1,27 @@
-library redirecting_factory_constructors.typeparambounds_test;
+library redirecting_factory_constructors.typeparambounds_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Y extends self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     : super self::X::•()
     ;
 }
-class A<T extends core::Object* = dynamic, S extends self::A::T* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
+class A<T extends core::Object? = dynamic, S extends self::A::T% = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •(self::A::T% t, self::A::S% s) → self::A<self::A::T%, self::A::S%>
     : super core::Object::•()
     ;
-  static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
-    return new self::A::•<self::A::redir::T*, self::A::redir::S*>(t, s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir<T extends core::Object? = dynamic, S extends self::A::redir::T% = dynamic>(self::A::redir::T% t, self::A::redir::S% s) → self::A<self::A::redir::T%, self::A::redir::S%>
+    return new self::A::•<self::A::redir::T%, self::A::redir::S%>(t, s);
 }
 static method main() → dynamic {
-  new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
+  new self::A::•<self::X, self::Y>(new self::X::•(), new self::Y::•());
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.outline.expect
index ef67ff4..99a077c 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.outline.expect
@@ -1,41 +1,21 @@
-library redirecting_factory_constructors.typeparambounds_test;
+library redirecting_factory_constructors.typeparambounds_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Y extends self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     ;
 }
-class A<T extends core::Object* = dynamic, S extends self::A::T* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::A::redir];
-  constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
+class A<T extends core::Object? = dynamic, S extends self::A::T% = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::redir]/*isLegacy*/;
+  constructor •(self::A::T% t, self::A::S% s) → self::A<self::A::T%, self::A::S%>
     ;
-  static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
-    return new self::A::•<self::A::redir::T*, self::A::redir::S*>(t, s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir<T extends core::Object? = dynamic, S extends self::A::redir::T% = dynamic>(self::A::redir::T% t, self::A::redir::S% s) → self::A<self::A::redir::T%, self::A::redir::S%>
+    return new self::A::•<self::A::redir::T%, self::A::redir::S%>(t, s);
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
index 98d4e12..62b93ec 100644
--- a/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_factory_typeparambounds_test.dart.weak.transformed.expect
@@ -1,47 +1,27 @@
-library redirecting_factory_constructors.typeparambounds_test;
+library redirecting_factory_constructors.typeparambounds_test /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Y extends self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     : super self::X::•()
     ;
 }
-class A<T extends core::Object* = dynamic, S extends self::A::T* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor •(self::A::T* t, self::A::S* s) → self::A<self::A::T*, self::A::S*>*
+class A<T extends core::Object? = dynamic, S extends self::A::T% = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor •(self::A::T% t, self::A::S% s) → self::A<self::A::T%, self::A::S%>
     : super core::Object::•()
     ;
-  static factory redir<T extends core::Object* = dynamic, S extends self::A::redir::T* = dynamic>(self::A::redir::T* t, self::A::redir::S* s) → self::A<self::A::redir::T*, self::A::redir::S*>*
-    return new self::A::•<self::A::redir::T*, self::A::redir::S*>(t, s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory redir<T extends core::Object? = dynamic, S extends self::A::redir::T% = dynamic>(self::A::redir::T% t, self::A::redir::S% s) → self::A<self::A::redir::T%, self::A::redir::S%>
+    return new self::A::•<self::A::redir::T%, self::A::redir::S%>(t, s);
 }
 static method main() → dynamic {
-  new self::A::•<self::X*, self::Y*>(new self::X::•(), new self::Y::•());
+  new self::A::•<self::X, self::Y>(new self::X::•(), new self::Y::•());
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart
new file mode 100644
index 0000000..1227d68
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// The test checks that types of arguments of redirecting initializers are
+// checked against the corresponding formal parameter types of the redirection
+// targets, and the downcasts are inserted where appropriate.
+
+class X {}
+
+class Foo<T extends X> {
+  T x;
+  Foo.fromX(X _init) : this._internal(x: _init);
+  Foo.fromT(T _init) : this._internal(x: _init);
+  Foo._internal({required this.x});
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.textual_outline.expect
new file mode 100644
index 0000000..384bb91
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.textual_outline.expect
@@ -0,0 +1,10 @@
+class X {}
+
+class Foo<T extends X> {
+  T x;
+  Foo.fromX(X _init) : this._internal(x: _init);
+  Foo.fromT(T _init) : this._internal(x: _init);
+  Foo._internal({required this.x});
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..593848b
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.textual_outline_modelled.expect
@@ -0,0 +1,10 @@
+class Foo<T extends X> {
+  Foo._internal({required this.x});
+  Foo.fromT(T _init) : this._internal(x: _init);
+  Foo.fromX(X _init) : this._internal(x: _init);
+  T x;
+}
+
+class X {}
+
+void main() {}
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.expect
new file mode 100644
index 0000000..43afede
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.expect
@@ -0,0 +1,37 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart:13:42: Error: The argument type 'X' can't be assigned to the parameter type 'T'.
+//  - 'X' is from 'pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart'.
+//   Foo.fromX(X _init) : this._internal(x: _init);
+//                                          ^
+//
+import self as self;
+import "dart:core" as core;
+
+class X extends core::Object {
+  synthetic constructor •() → self::X
+    : super core::Object::•()
+    ;
+}
+class Foo<T extends self::X> extends core::Object {
+  covariant-by-class field self::Foo::T x;
+  constructor fromX(self::X _init) → self::Foo<self::Foo::T>
+    : this self::Foo::_internal(x: invalid-expression "pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart:13:42: Error: The argument type 'X' can't be assigned to the parameter type 'T'.
+ - 'X' is from 'pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart'.
+  Foo.fromX(X _init) : this._internal(x: _init);
+                                         ^" in _init as{TypeError,ForNonNullableByDefault} Never)
+    ;
+  constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
+    : this self::Foo::_internal(x: _init)
+    ;
+  constructor _internal({required self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+    : self::Foo::x = x, super core::Object::•()
+    ;
+}
+static method main() → void {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.modular.expect
new file mode 100644
index 0000000..43afede
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.modular.expect
@@ -0,0 +1,37 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart:13:42: Error: The argument type 'X' can't be assigned to the parameter type 'T'.
+//  - 'X' is from 'pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart'.
+//   Foo.fromX(X _init) : this._internal(x: _init);
+//                                          ^
+//
+import self as self;
+import "dart:core" as core;
+
+class X extends core::Object {
+  synthetic constructor •() → self::X
+    : super core::Object::•()
+    ;
+}
+class Foo<T extends self::X> extends core::Object {
+  covariant-by-class field self::Foo::T x;
+  constructor fromX(self::X _init) → self::Foo<self::Foo::T>
+    : this self::Foo::_internal(x: invalid-expression "pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart:13:42: Error: The argument type 'X' can't be assigned to the parameter type 'T'.
+ - 'X' is from 'pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart'.
+  Foo.fromX(X _init) : this._internal(x: _init);
+                                         ^" in _init as{TypeError,ForNonNullableByDefault} Never)
+    ;
+  constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
+    : this self::Foo::_internal(x: _init)
+    ;
+  constructor _internal({required self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+    : self::Foo::x = x, super core::Object::•()
+    ;
+}
+static method main() → void {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.outline.expect
new file mode 100644
index 0000000..8972be7
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.outline.expect
@@ -0,0 +1,19 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class X extends core::Object {
+  synthetic constructor •() → self::X
+    ;
+}
+class Foo<T extends self::X> extends core::Object {
+  covariant-by-class field self::Foo::T x;
+  constructor fromX(self::X _init) → self::Foo<self::Foo::T>
+    ;
+  constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
+    ;
+  constructor _internal({required self::Foo::T x}) → self::Foo<self::Foo::T>
+    ;
+}
+static method main() → void
+  ;
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.transformed.expect
new file mode 100644
index 0000000..43afede
--- /dev/null
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart.weak.transformed.expect
@@ -0,0 +1,37 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart:13:42: Error: The argument type 'X' can't be assigned to the parameter type 'T'.
+//  - 'X' is from 'pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart'.
+//   Foo.fromX(X _init) : this._internal(x: _init);
+//                                          ^
+//
+import self as self;
+import "dart:core" as core;
+
+class X extends core::Object {
+  synthetic constructor •() → self::X
+    : super core::Object::•()
+    ;
+}
+class Foo<T extends self::X> extends core::Object {
+  covariant-by-class field self::Foo::T x;
+  constructor fromX(self::X _init) → self::Foo<self::Foo::T>
+    : this self::Foo::_internal(x: invalid-expression "pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart:13:42: Error: The argument type 'X' can't be assigned to the parameter type 'T'.
+ - 'X' is from 'pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable2.dart'.
+  Foo.fromX(X _init) : this._internal(x: _init);
+                                         ^" in _init as{TypeError,ForNonNullableByDefault} Never)
+    ;
+  constructor fromT(self::Foo::T _init) → self::Foo<self::Foo::T>
+    : this self::Foo::_internal(x: _init)
+    ;
+  constructor _internal({required self::Foo::T x = #C1}) → self::Foo<self::Foo::T>
+    : self::Foo::x = x, super core::Object::•()
+    ;
+}
+static method main() → void {}
+
+constants  {
+  #C1 = null
+}
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart
index b4aeab5..9218e07 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_assignable_test.dart
@@ -1,7 +1,9 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
+
 // @dart=2.9
+
 // The test checks that types of arguments of redirecting initializers are
 // checked against the corresponding formal parameter types of the redirection
 // targets, and the downcasts are inserted where appropriate.
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart
index d5147d5..0c64722 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // The test checks that types of arguments of redirecting initializers are
 // checked against the corresponding formal parameter types of the redirection
 // targets, and the compile-time error is emitted in the case they are not
@@ -10,7 +10,7 @@
 class Foo<T> {
   T x;
   Foo.from(String _init) : this._internal(x: _init);
-  Foo._internal({this.x});
+  Foo._internal({required this.x});
 }
 
 void main() {}
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.textual_outline.expect
index d5f3567..f0b2948 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.textual_outline.expect
@@ -1,8 +1,7 @@
-// @dart = 2.9
 class Foo<T> {
   T x;
   Foo.from(String _init) : this._internal(x: _init);
-  Foo._internal({this.x});
+  Foo._internal({required this.x});
 }
 
 void main() {}
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.textual_outline_modelled.expect
index 423187d..e7ad045 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.textual_outline_modelled.expect
@@ -1,6 +1,5 @@
-// @dart = 2.9
 class Foo<T> {
-  Foo._internal({this.x});
+  Foo._internal({required this.x});
   Foo.from(String _init) : this._internal(x: _init);
   T x;
 }
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.expect
index 6c401a6..34b5cf4 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -9,26 +9,16 @@
 import self as self;
 import "dart:core" as core;
 
-class Foo<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::Foo::T* x;
-  constructor from(core::String* _init) → self::Foo<self::Foo::T*>*
+class Foo<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::Foo::T% x;
+  constructor from(core::String _init) → self::Foo<self::Foo::T%>
     : this self::Foo::_internal(x: invalid-expression "pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart:12:46: Error: The argument type 'String' can't be assigned to the parameter type 'T'.
   Foo.from(String _init) : this._internal(x: _init);
-                                             ^" in _init as{TypeError} Never)
+                                             ^" in _init as{TypeError,ForNonNullableByDefault} Never)
     ;
-  constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
+  constructor _internal({required self::Foo::T% x = #C1}) → self::Foo<self::Foo::T%>
     : self::Foo::x = x, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.modular.expect
index 6c401a6..34b5cf4 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -9,26 +9,16 @@
 import self as self;
 import "dart:core" as core;
 
-class Foo<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::Foo::T* x;
-  constructor from(core::String* _init) → self::Foo<self::Foo::T*>*
+class Foo<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::Foo::T% x;
+  constructor from(core::String _init) → self::Foo<self::Foo::T%>
     : this self::Foo::_internal(x: invalid-expression "pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart:12:46: Error: The argument type 'String' can't be assigned to the parameter type 'T'.
   Foo.from(String _init) : this._internal(x: _init);
-                                             ^" in _init as{TypeError} Never)
+                                             ^" in _init as{TypeError,ForNonNullableByDefault} Never)
     ;
-  constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
+  constructor _internal({required self::Foo::T% x = #C1}) → self::Foo<self::Foo::T%>
     : self::Foo::x = x, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.outline.expect
index 1126f00..5e288fa 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.outline.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class Foo<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::Foo::T* x;
-  constructor from(core::String* _init) → self::Foo<self::Foo::T*>*
+class Foo<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::Foo::T% x;
+  constructor from(core::String _init) → self::Foo<self::Foo::T%>
     ;
-  constructor _internal({self::Foo::T* x}) → self::Foo<self::Foo::T*>*
+  constructor _internal({required self::Foo::T% x}) → self::Foo<self::Foo::T%>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.transformed.expect
index 6c401a6..34b5cf4 100644
--- a/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -9,26 +9,16 @@
 import self as self;
 import "dart:core" as core;
 
-class Foo<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::Foo::T* x;
-  constructor from(core::String* _init) → self::Foo<self::Foo::T*>*
+class Foo<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::Foo::T% x;
+  constructor from(core::String _init) → self::Foo<self::Foo::T%>
     : this self::Foo::_internal(x: invalid-expression "pkg/front_end/testcases/general/redirecting_initializer_arguments_test.dart:12:46: Error: The argument type 'String' can't be assigned to the parameter type 'T'.
   Foo.from(String _init) : this._internal(x: _init);
-                                             ^" in _init as{TypeError} Never)
+                                             ^" in _init as{TypeError,ForNonNullableByDefault} Never)
     ;
-  constructor _internal({self::Foo::T* x = #C1}) → self::Foo<self::Foo::T*>*
+  constructor _internal({required self::Foo::T% x = #C1}) → self::Foo<self::Foo::T%>
     : self::Foo::x = x, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {}
 
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart
index 7d7ffec..57d54c1 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE.md file.
 
-// @dart=2.9
-
 // The test checks that type arguments of the target of redirection factory
 // constructors are preserved throughout the chain of redirections.
 
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.textual_outline.expect
index 35675e5..772fcd2 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'package:expect/expect.dart';
 
 class A<T> {
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.textual_outline_modelled.expect
index b3c31ee..6f267ca 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'package:expect/expect.dart';
 
 class A<T> {
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.expect
index 273bd861..8414860 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.expect
@@ -1,45 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "package:expect/expect.dart" as exp;
 
 import "package:expect/expect.dart";
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor empty() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor empty() → self::A<self::A::T%>
     : super core::Object::•()
     ;
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return self::B::•<self::A::•::T*, core::num*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return self::B::•<self::A::•::T%, core::num>();
 }
-class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  constructor empty() → self::B<self::B::U*, self::B::W*>*
+class B<U extends core::Object? = dynamic, W extends core::Object? = dynamic> extends self::A<self::B::U%> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  constructor empty() → self::B<self::B::U%, self::B::W%>
     : super self::A::empty()
     ;
-  static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
-    return new self::C::•<self::B::•::U*, self::B::•::W*, core::String*>();
+  static factory •<U extends core::Object? = dynamic, W extends core::Object? = dynamic>() → self::B<self::B::•::U%, self::B::•::W%>
+    return new self::C::•<self::B::•::U%, self::B::•::W%, core::String>();
 }
-class C<V extends core::Object* = dynamic, S extends core::Object* = dynamic, R extends core::Object* = dynamic> extends self::B<self::C::V*, self::C::S*> {
-  constructor •() → self::C<self::C::V*, self::C::S*, self::C::R*>*
+class C<V extends core::Object? = dynamic, S extends core::Object? = dynamic, R extends core::Object? = dynamic> extends self::B<self::C::V%, self::C::S%> {
+  constructor •() → self::C<self::C::V%, self::C::S%, self::C::R%>
     : super self::B::empty()
     ;
-  method toString() → core::String*
-    return "${self::C::V*},${self::C::S*},${self::C::R*}";
+  method toString() → core::String
+    return "${self::C::V%},${self::C::S%},${self::C::R%}";
 }
 static method main() → dynamic {
-  exp::Expect::equals("${new self::C::•<core::int*, core::num*, core::String*>()}", "int,num,String");
+  exp::Expect::equals("${new self::C::•<core::int, core::num, core::String>()}", "int,num,String");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.modular.expect
index 273bd861..8414860 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.modular.expect
@@ -1,45 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "package:expect/expect.dart" as exp;
 
 import "package:expect/expect.dart";
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor empty() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor empty() → self::A<self::A::T%>
     : super core::Object::•()
     ;
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return self::B::•<self::A::•::T*, core::num*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return self::B::•<self::A::•::T%, core::num>();
 }
-class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  constructor empty() → self::B<self::B::U*, self::B::W*>*
+class B<U extends core::Object? = dynamic, W extends core::Object? = dynamic> extends self::A<self::B::U%> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  constructor empty() → self::B<self::B::U%, self::B::W%>
     : super self::A::empty()
     ;
-  static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
-    return new self::C::•<self::B::•::U*, self::B::•::W*, core::String*>();
+  static factory •<U extends core::Object? = dynamic, W extends core::Object? = dynamic>() → self::B<self::B::•::U%, self::B::•::W%>
+    return new self::C::•<self::B::•::U%, self::B::•::W%, core::String>();
 }
-class C<V extends core::Object* = dynamic, S extends core::Object* = dynamic, R extends core::Object* = dynamic> extends self::B<self::C::V*, self::C::S*> {
-  constructor •() → self::C<self::C::V*, self::C::S*, self::C::R*>*
+class C<V extends core::Object? = dynamic, S extends core::Object? = dynamic, R extends core::Object? = dynamic> extends self::B<self::C::V%, self::C::S%> {
+  constructor •() → self::C<self::C::V%, self::C::S%, self::C::R%>
     : super self::B::empty()
     ;
-  method toString() → core::String*
-    return "${self::C::V*},${self::C::S*},${self::C::R*}";
+  method toString() → core::String
+    return "${self::C::V%},${self::C::S%},${self::C::R%}";
 }
 static method main() → dynamic {
-  exp::Expect::equals("${new self::C::•<core::int*, core::num*, core::String*>()}", "int,num,String");
+  exp::Expect::equals("${new self::C::•<core::int, core::num, core::String>()}", "int,num,String");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.outline.expect
index 4a31e13..f6649ec 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.outline.expect
@@ -1,37 +1,27 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 import "package:expect/expect.dart";
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::A::•];
-  constructor empty() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+  constructor empty() → self::A<self::A::T%>
     ;
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return self::B::•<self::A::•::T*, core::num*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return self::B::•<self::A::•::T%, core::num>();
 }
-class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
-  static final field dynamic _redirecting# = <dynamic>[self::B::•];
-  constructor empty() → self::B<self::B::U*, self::B::W*>*
+class B<U extends core::Object? = dynamic, W extends core::Object? = dynamic> extends self::A<self::B::U%> {
+  static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+  constructor empty() → self::B<self::B::U%, self::B::W%>
     ;
-  static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
-    return new self::C::•<self::B::•::U*, self::B::•::W*, core::String*>();
+  static factory •<U extends core::Object? = dynamic, W extends core::Object? = dynamic>() → self::B<self::B::•::U%, self::B::•::W%>
+    return new self::C::•<self::B::•::U%, self::B::•::W%, core::String>();
 }
-class C<V extends core::Object* = dynamic, S extends core::Object* = dynamic, R extends core::Object* = dynamic> extends self::B<self::C::V*, self::C::S*> {
-  constructor •() → self::C<self::C::V*, self::C::S*, self::C::R*>*
+class C<V extends core::Object? = dynamic, S extends core::Object? = dynamic, R extends core::Object? = dynamic> extends self::B<self::C::V%, self::C::S%> {
+  constructor •() → self::C<self::C::V%, self::C::S%, self::C::R%>
     ;
-  method toString() → core::String*
+  method toString() → core::String
     ;
 }
 static method main() → dynamic
@@ -39,6 +29,6 @@
 
 
 Extra constant evaluation status:
-Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments.dart:12:7 -> ConstructorTearOffConstant(A.)
-Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments.dart:17:7 -> ConstructorTearOffConstant(B.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments.dart:10:7 -> ConstructorTearOffConstant(A.)
+Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments.dart:15:7 -> ConstructorTearOffConstant(B.)
 Extra constant evaluation: evaluated: 6, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.transformed.expect
index 273bd861..8414860 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments.dart.weak.transformed.expect
@@ -1,45 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "package:expect/expect.dart" as exp;
 
 import "package:expect/expect.dart";
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor empty() → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor empty() → self::A<self::A::T%>
     : super core::Object::•()
     ;
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return self::B::•<self::A::•::T*, core::num*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return self::B::•<self::A::•::T%, core::num>();
 }
-class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  constructor empty() → self::B<self::B::U*, self::B::W*>*
+class B<U extends core::Object? = dynamic, W extends core::Object? = dynamic> extends self::A<self::B::U%> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  constructor empty() → self::B<self::B::U%, self::B::W%>
     : super self::A::empty()
     ;
-  static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
-    return new self::C::•<self::B::•::U*, self::B::•::W*, core::String*>();
+  static factory •<U extends core::Object? = dynamic, W extends core::Object? = dynamic>() → self::B<self::B::•::U%, self::B::•::W%>
+    return new self::C::•<self::B::•::U%, self::B::•::W%, core::String>();
 }
-class C<V extends core::Object* = dynamic, S extends core::Object* = dynamic, R extends core::Object* = dynamic> extends self::B<self::C::V*, self::C::S*> {
-  constructor •() → self::C<self::C::V*, self::C::S*, self::C::R*>*
+class C<V extends core::Object? = dynamic, S extends core::Object? = dynamic, R extends core::Object? = dynamic> extends self::B<self::C::V%, self::C::S%> {
+  constructor •() → self::C<self::C::V%, self::C::S%, self::C::R%>
     : super self::B::empty()
     ;
-  method toString() → core::String*
-    return "${self::C::V*},${self::C::S*},${self::C::R*}";
+  method toString() → core::String
+    return "${self::C::V%},${self::C::S%},${self::C::R%}";
 }
 static method main() → dynamic {
-  exp::Expect::equals("${new self::C::•<core::int*, core::num*, core::String*>()}", "int,num,String");
+  exp::Expect::equals("${new self::C::•<core::int, core::num, core::String>()}", "int,num,String");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart
index 51e5f08..9389f2f 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE.md file.
-// @dart=2.9
+
 // The test checks that dependencies of type arguments of targets of redirecting
 // factories on type parameters of the corresponding classes are respected in
 // the resulting type arguments of redirecting factories invocations.
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.textual_outline.expect
index c51fbab..29e8862 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'package:expect/expect.dart';
 
 abstract class A<T> {
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.textual_outline_modelled.expect
index 1ba84ec..7040eb4 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'package:expect/expect.dart';
 
 abstract class A<T> {
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.expect
index 516d00c..78b125f 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.expect
@@ -1,45 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "package:expect/expect.dart" as exp;
 
 import "package:expect/expect.dart";
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor empty() → self::A<self::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor empty() → self::A<self::A::T%>
     : super core::Object::•()
     ;
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return self::B::•<self::A::•::T*, core::List<self::A::•::T*>*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return self::B::•<self::A::•::T%, core::List<self::A::•::T%>>();
 }
-abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  constructor empty() → self::B<self::B::U*, self::B::W*>*
+abstract class B<U extends core::Object? = dynamic, W extends core::Object? = dynamic> extends self::A<self::B::U%> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  constructor empty() → self::B<self::B::U%, self::B::W%>
     : super self::A::empty()
     ;
-  static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
-    return new self::C::•<self::B::•::U*, self::B::•::W*, core::Map<self::B::•::U*, self::B::•::W*>*>();
+  static factory •<U extends core::Object? = dynamic, W extends core::Object? = dynamic>() → self::B<self::B::•::U%, self::B::•::W%>
+    return new self::C::•<self::B::•::U%, self::B::•::W%, core::Map<self::B::•::U%, self::B::•::W%>>();
 }
-class C<V extends core::Object* = dynamic, S extends core::Object* = dynamic, R extends core::Object* = dynamic> extends self::B<self::C::V*, self::C::S*> {
-  constructor •() → self::C<self::C::V*, self::C::S*, self::C::R*>*
+class C<V extends core::Object? = dynamic, S extends core::Object? = dynamic, R extends core::Object? = dynamic> extends self::B<self::C::V%, self::C::S%> {
+  constructor •() → self::C<self::C::V%, self::C::S%, self::C::R%>
     : super self::B::empty()
     ;
-  method toString() → core::String*
-    return "${self::C::V*},${self::C::S*},${self::C::R*}";
+  method toString() → core::String
+    return "${self::C::V%},${self::C::S%},${self::C::R%}";
 }
 static method main() → dynamic {
-  exp::Expect::equals("${new self::C::•<core::int*, core::List<core::int*>*, core::Map<core::int*, core::List<core::int*>*>*>()}", "int,List<int>,Map<int, List<int>>");
+  exp::Expect::equals("${new self::C::•<core::int, core::List<core::int>, core::Map<core::int, core::List<core::int>>>()}", "int,List<int>,Map<int, List<int>>");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.modular.expect
index 516d00c..78b125f 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.modular.expect
@@ -1,45 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "package:expect/expect.dart" as exp;
 
 import "package:expect/expect.dart";
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor empty() → self::A<self::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor empty() → self::A<self::A::T%>
     : super core::Object::•()
     ;
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return self::B::•<self::A::•::T*, core::List<self::A::•::T*>*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return self::B::•<self::A::•::T%, core::List<self::A::•::T%>>();
 }
-abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  constructor empty() → self::B<self::B::U*, self::B::W*>*
+abstract class B<U extends core::Object? = dynamic, W extends core::Object? = dynamic> extends self::A<self::B::U%> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  constructor empty() → self::B<self::B::U%, self::B::W%>
     : super self::A::empty()
     ;
-  static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
-    return new self::C::•<self::B::•::U*, self::B::•::W*, core::Map<self::B::•::U*, self::B::•::W*>*>();
+  static factory •<U extends core::Object? = dynamic, W extends core::Object? = dynamic>() → self::B<self::B::•::U%, self::B::•::W%>
+    return new self::C::•<self::B::•::U%, self::B::•::W%, core::Map<self::B::•::U%, self::B::•::W%>>();
 }
-class C<V extends core::Object* = dynamic, S extends core::Object* = dynamic, R extends core::Object* = dynamic> extends self::B<self::C::V*, self::C::S*> {
-  constructor •() → self::C<self::C::V*, self::C::S*, self::C::R*>*
+class C<V extends core::Object? = dynamic, S extends core::Object? = dynamic, R extends core::Object? = dynamic> extends self::B<self::C::V%, self::C::S%> {
+  constructor •() → self::C<self::C::V%, self::C::S%, self::C::R%>
     : super self::B::empty()
     ;
-  method toString() → core::String*
-    return "${self::C::V*},${self::C::S*},${self::C::R*}";
+  method toString() → core::String
+    return "${self::C::V%},${self::C::S%},${self::C::R%}";
 }
 static method main() → dynamic {
-  exp::Expect::equals("${new self::C::•<core::int*, core::List<core::int*>*, core::Map<core::int*, core::List<core::int*>*>*>()}", "int,List<int>,Map<int, List<int>>");
+  exp::Expect::equals("${new self::C::•<core::int, core::List<core::int>, core::Map<core::int, core::List<core::int>>>()}", "int,List<int>,Map<int, List<int>>");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.outline.expect
index 2736c94..67895ce 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.outline.expect
@@ -1,37 +1,27 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 import "package:expect/expect.dart";
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::A::•];
-  constructor empty() → self::A<self::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+  constructor empty() → self::A<self::A::T%>
     ;
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return self::B::•<self::A::•::T*, core::List<self::A::•::T*>*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return self::B::•<self::A::•::T%, core::List<self::A::•::T%>>();
 }
-abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
-  static final field dynamic _redirecting# = <dynamic>[self::B::•];
-  constructor empty() → self::B<self::B::U*, self::B::W*>*
+abstract class B<U extends core::Object? = dynamic, W extends core::Object? = dynamic> extends self::A<self::B::U%> {
+  static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/;
+  constructor empty() → self::B<self::B::U%, self::B::W%>
     ;
-  static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
-    return new self::C::•<self::B::•::U*, self::B::•::W*, core::Map<self::B::•::U*, self::B::•::W*>*>();
+  static factory •<U extends core::Object? = dynamic, W extends core::Object? = dynamic>() → self::B<self::B::•::U%, self::B::•::W%>
+    return new self::C::•<self::B::•::U%, self::B::•::W%, core::Map<self::B::•::U%, self::B::•::W%>>();
 }
-class C<V extends core::Object* = dynamic, S extends core::Object* = dynamic, R extends core::Object* = dynamic> extends self::B<self::C::V*, self::C::S*> {
-  constructor •() → self::C<self::C::V*, self::C::S*, self::C::R*>*
+class C<V extends core::Object? = dynamic, S extends core::Object? = dynamic, R extends core::Object? = dynamic> extends self::B<self::C::V%, self::C::S%> {
+  constructor •() → self::C<self::C::V%, self::C::S%, self::C::R%>
     ;
-  method toString() → core::String*
+  method toString() → core::String
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
index 516d00c..78b125f 100644
--- a/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_chain_type_arguments_subst.dart.weak.transformed.expect
@@ -1,45 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "package:expect/expect.dart" as exp;
 
 import "package:expect/expect.dart";
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  constructor empty() → self::A<self::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  constructor empty() → self::A<self::A::T%>
     : super core::Object::•()
     ;
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return self::B::•<self::A::•::T*, core::List<self::A::•::T*>*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return self::B::•<self::A::•::T%, core::List<self::A::•::T%>>();
 }
-abstract class B<U extends core::Object* = dynamic, W extends core::Object* = dynamic> extends self::A<self::B::U*> {
-  static final field dynamic _redirecting# = <dynamic>[#C2];
-  constructor empty() → self::B<self::B::U*, self::B::W*>*
+abstract class B<U extends core::Object? = dynamic, W extends core::Object? = dynamic> extends self::A<self::B::U%> {
+  static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/;
+  constructor empty() → self::B<self::B::U%, self::B::W%>
     : super self::A::empty()
     ;
-  static factory •<U extends core::Object* = dynamic, W extends core::Object* = dynamic>() → self::B<self::B::•::U*, self::B::•::W*>*
-    return new self::C::•<self::B::•::U*, self::B::•::W*, core::Map<self::B::•::U*, self::B::•::W*>*>();
+  static factory •<U extends core::Object? = dynamic, W extends core::Object? = dynamic>() → self::B<self::B::•::U%, self::B::•::W%>
+    return new self::C::•<self::B::•::U%, self::B::•::W%, core::Map<self::B::•::U%, self::B::•::W%>>();
 }
-class C<V extends core::Object* = dynamic, S extends core::Object* = dynamic, R extends core::Object* = dynamic> extends self::B<self::C::V*, self::C::S*> {
-  constructor •() → self::C<self::C::V*, self::C::S*, self::C::R*>*
+class C<V extends core::Object? = dynamic, S extends core::Object? = dynamic, R extends core::Object? = dynamic> extends self::B<self::C::V%, self::C::S%> {
+  constructor •() → self::C<self::C::V%, self::C::S%, self::C::R%>
     : super self::B::empty()
     ;
-  method toString() → core::String*
-    return "${self::C::V*},${self::C::S*},${self::C::R*}";
+  method toString() → core::String
+    return "${self::C::V%},${self::C::S%},${self::C::R%}";
 }
 static method main() → dynamic {
-  exp::Expect::equals("${new self::C::•<core::int*, core::List<core::int*>*, core::Map<core::int*, core::List<core::int*>*>*>()}", "int,List<int>,Map<int, List<int>>");
+  exp::Expect::equals("${new self::C::•<core::int, core::List<core::int>, core::Map<core::int, core::List<core::int>>>()}", "int,List<int>,Map<int, List<int>>");
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart b/pkg/front_end/testcases/general/redirection_type_arguments.dart
index f5e6692..043daa1 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE.md file.
-// @dart=2.9
+
 // The test checks that type arguments of the target of redirection factory
 // constructors are preserved.
 
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.textual_outline.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.textual_outline.expect
index 14800fb..10ae984 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'package:expect/expect.dart';
 
 class A {
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.textual_outline_modelled.expect
index 2895a46..561ace4 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'package:expect/expect.dart';
 
 class A {
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.expect
index be27ced..2819621 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "package:expect/expect.dart" as exp;
@@ -6,29 +6,19 @@
 import "package:expect/expect.dart";
 
 class A extends core::Object /*hasConstConstructor*/  {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  const constructor empty() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  const constructor empty() → self::A
     : super core::Object::•()
     ;
-  static factory •() → self::A*
-    return new self::B::•<core::String*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •() → self::A
+    return new self::B::•<core::String>();
 }
-class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
-  const constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends self::A /*hasConstConstructor*/  {
+  const constructor •() → self::B<self::B::T%>
     : super self::A::empty()
     ;
-  method toString() → core::String*
-    return "${self::B::T*}";
+  method toString() → core::String
+    return "${self::B::T%}";
 }
 static method main() → void {
   exp::Expect::equals("${#C2}", "String");
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.modular.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.modular.expect
index be27ced..2819621 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "package:expect/expect.dart" as exp;
@@ -6,29 +6,19 @@
 import "package:expect/expect.dart";
 
 class A extends core::Object /*hasConstConstructor*/  {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  const constructor empty() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  const constructor empty() → self::A
     : super core::Object::•()
     ;
-  static factory •() → self::A*
-    return new self::B::•<core::String*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •() → self::A
+    return new self::B::•<core::String>();
 }
-class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
-  const constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends self::A /*hasConstConstructor*/  {
+  const constructor •() → self::B<self::B::T%>
     : super self::A::empty()
     ;
-  method toString() → core::String*
-    return "${self::B::T*}";
+  method toString() → core::String
+    return "${self::B::T%}";
 }
 static method main() → void {
   exp::Expect::equals("${#C2}", "String");
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.outline.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.outline.expect
index 7640720..55d96b0 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.outline.expect
@@ -1,32 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 import "package:expect/expect.dart";
 
 class A extends core::Object /*hasConstConstructor*/  {
-  static final field dynamic _redirecting# = <dynamic>[self::A::•];
-  const constructor empty() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+  const constructor empty() → self::A
     : super core::Object::•()
     ;
-  static factory •() → self::A*
-    return new self::B::•<core::String*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •() → self::A
+    return new self::B::•<core::String>();
 }
-class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
-  const constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends self::A /*hasConstConstructor*/  {
+  const constructor •() → self::B<self::B::T%>
     : super self::A::empty()
     ;
-  method toString() → core::String*
+  method toString() → core::String
     ;
 }
 static method main() → void
diff --git a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.transformed.expect b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.transformed.expect
index be27ced..2819621 100644
--- a/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/redirection_type_arguments.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "package:expect/expect.dart" as exp;
@@ -6,29 +6,19 @@
 import "package:expect/expect.dart";
 
 class A extends core::Object /*hasConstConstructor*/  {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  const constructor empty() → self::A*
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  const constructor empty() → self::A
     : super core::Object::•()
     ;
-  static factory •() → self::A*
-    return new self::B::•<core::String*>();
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory •() → self::A
+    return new self::B::•<core::String>();
 }
-class B<T extends core::Object* = dynamic> extends self::A /*hasConstConstructor*/  {
-  const constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends self::A /*hasConstConstructor*/  {
+  const constructor •() → self::B<self::B::T%>
     : super self::A::empty()
     ;
-  method toString() → core::String*
-    return "${self::B::T*}";
+  method toString() → core::String
+    return "${self::B::T%}";
 }
 static method main() → void {
   exp::Expect::equals("${#C2}", "String");
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart b/pkg/front_end/testcases/general/regression_flutter51828.dart
index 9dabce8..3d161f3 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. 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
+
 // This is a regression test for https://github.com/flutter/flutter/issues/51828
 // which failed due bad reuse/typing of temp. vars. in the async transform.
 
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.textual_outline.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.textual_outline.expect
index 531b2cb..10f8088 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   Future<void> foo(x) async {}
 }
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.textual_outline_modelled.expect
index 531b2cb..10f8088 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   Future<void> foo(x) async {}
 }
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.expect
index 7cc953e..7171f2d 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.expect
@@ -1,39 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method foo(dynamic x) → asy::Future<void>* async {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo(dynamic x) → asy::Future<void> async {}
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method bar(dynamic x) → asy::Future<void>* async {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method bar(dynamic x) → asy::Future<void> async {}
 }
 static method main() → dynamic async 
-  return <asy::Future<void>*>[new self::A::•().{self::A::foo}(await null){(dynamic) →* asy::Future<void>*}, new self::B::•().{self::B::bar}(await null){(dynamic) →* asy::Future<void>*}];
+  return <asy::Future<void>>[new self::A::•().{self::A::foo}(await null){(dynamic) → asy::Future<void>}, new self::B::•().{self::B::bar}(await null){(dynamic) → asy::Future<void>}];
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.modular.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.modular.expect
index 7cc953e..7171f2d 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.modular.expect
@@ -1,39 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method foo(dynamic x) → asy::Future<void>* async {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo(dynamic x) → asy::Future<void> async {}
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method bar(dynamic x) → asy::Future<void>* async {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method bar(dynamic x) → asy::Future<void> async {}
 }
 static method main() → dynamic async 
-  return <asy::Future<void>*>[new self::A::•().{self::A::foo}(await null){(dynamic) →* asy::Future<void>*}, new self::B::•().{self::B::bar}(await null){(dynamic) →* asy::Future<void>*}];
+  return <asy::Future<void>>[new self::A::•().{self::A::foo}(await null){(dynamic) → asy::Future<void>}, new self::B::•().{self::B::bar}(await null){(dynamic) → asy::Future<void>}];
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.outline.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.outline.expect
index 22ce718..fa8b321 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.outline.expect
@@ -1,39 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  method foo(dynamic x) → asy::Future<void>* async 
+  method foo(dynamic x) → asy::Future<void> async 
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  method bar(dynamic x) → asy::Future<void>* async 
+  method bar(dynamic x) → asy::Future<void> async 
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic async 
   ;
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
index a6a1585..34a3bef 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
@@ -1,20 +1,20 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
 import "dart:_internal" as _in;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method foo(dynamic x) → asy::Future<void>* /* originally async */ {
-    final asy::_Future<void>* :async_future = new asy::_Future::•<void>();
+  method foo(dynamic x) → asy::Future<void> /* originally async */ {
+    final asy::_Future<void> :async_future = new asy::_Future::•<void>();
     core::bool* :is_sync = false;
     void :return_value;
-    (dynamic) →* dynamic :async_op_then;
-    (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-    core::int* :await_jump_var = 0;
+    (dynamic) → dynamic :async_op_then;
+    (core::Object, core::StackTrace) → dynamic :async_op_error;
+    core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
     function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding 
       try {
@@ -23,37 +23,27 @@
         asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
         return;
       }
-      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
         asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op(null, null){() →* dynamic};
+    :async_op(null, null){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method bar(dynamic x) → asy::Future<void>* /* originally async */ {
-    final asy::_Future<void>* :async_future = new asy::_Future::•<void>();
+  method bar(dynamic x) → asy::Future<void> /* originally async */ {
+    final asy::_Future<void> :async_future = new asy::_Future::•<void>();
     core::bool* :is_sync = false;
     void :return_value;
-    (dynamic) →* dynamic :async_op_then;
-    (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-    core::int* :await_jump_var = 0;
+    (dynamic) → dynamic :async_op_then;
+    (core::Object, core::StackTrace) → dynamic :async_op_error;
+    core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
     function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding 
       try {
@@ -62,36 +52,26 @@
         asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
         return;
       }
-      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
         asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op(null, null){() →* dynamic};
+    :async_op(null, null){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic /* originally async */ {
-  final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
+  final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
   core::bool* :is_sync = false;
   dynamic :return_value;
-  (dynamic) →* dynamic :async_op_then;
-  (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-  core::int* :await_jump_var = 0;
+  (dynamic) → dynamic :async_op_then;
+  (core::Object, core::StackTrace) → dynamic :async_op_error;
+  core::int :await_jump_var = 0;
   dynamic :await_ctx_var;
   dynamic :saved_try_context_var0;
-  self::B* :async_temporary_0;
+  self::B :async_temporary_0;
   dynamic :async_temporary_1;
   function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding 
     try {
@@ -99,21 +79,21 @@
       {
         :async_temporary_1 = new self::A::•();
         [yield] let dynamic #t1 = asy::_awaitHelper(null, :async_op_then, :async_op_error) in null;
-        :async_temporary_1 = _in::unsafeCast<self::A*>(:async_temporary_1).{self::A::foo}(_in::unsafeCast<Null>(:result_or_exception)){(dynamic) →* asy::Future<void>*};
+        :async_temporary_1 = _in::unsafeCast<self::A>(:async_temporary_1).{self::A::foo}(_in::unsafeCast<Null>(:result_or_exception)){(dynamic) → asy::Future<void>};
         :async_temporary_0 = new self::B::•();
         [yield] let dynamic #t2 = asy::_awaitHelper(null, :async_op_then, :async_op_error) in null;
-        :return_value = core::_GrowableList::_literal2<asy::Future<void>*>(_in::unsafeCast<asy::Future<void>*>(:async_temporary_1), _in::unsafeCast<self::B*>(:async_temporary_0).{self::B::bar}(_in::unsafeCast<Null>(:result_or_exception)){(dynamic) →* asy::Future<void>*});
+        :return_value = core::_GrowableList::_literal2<asy::Future<void>>(_in::unsafeCast<asy::Future<void>>(:async_temporary_1), _in::unsafeCast<self::B>(:async_temporary_0).{self::B::bar}(_in::unsafeCast<Null>(:result_or_exception)){(dynamic) → asy::Future<void>});
         break #L3;
       }
       asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
     }
-    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
       asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op(null, null){() →* dynamic};
+  :async_op(null, null){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart
index 91c2303..754c94e 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart
@@ -1,7 +1,9 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
+// @dart=2.13
+
 // This test checks that generic function types are rejected with an appropriate
 // compile-time error message if encountered in bounds of type variables.
 
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.textual_outline.expect b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.textual_outline.expect
index cded83b..8c0eea5 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.textual_outline.expect
@@ -1,4 +1,4 @@
-// @dart = 2.9
+// @dart = 2.13
 class Hest<TypeX extends TypeY Function<TypeY>(TypeY)> {}
 
 main() {}
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.textual_outline_modelled.expect
index cded83b..8c0eea5 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.textual_outline_modelled.expect
@@ -1,4 +1,4 @@
-// @dart = 2.9
+// @dart = 2.13
 class Hest<TypeX extends TypeY Function<TypeY>(TypeY)> {}
 
 main() {}
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.expect b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.expect
index dcd7a33..ec2f6c1 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.expect
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart:8:12: Error: Type variables can't have generic function types in their bounds.
+// pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart:10:12: Error: Type variables can't have generic function types in their bounds.
 // class Hest<TypeX extends TypeY Function<TypeY>(TypeY)> {}
 //            ^^^^^
 //
 import self as self;
 import "dart:core" as core;
 
-class Hest<TypeX extends <TypeY extends core::Object* = dynamic>(TypeY*) →* TypeY* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
+class Hest<TypeX extends <TypeY extends core::Object? = dynamic>(TypeY%) → TypeY% = dynamic> extends core::Object {
+  synthetic constructor •() → self::Hest<self::Hest::TypeX>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.modular.expect b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.modular.expect
index dcd7a33..ec2f6c1 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.modular.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart:8:12: Error: Type variables can't have generic function types in their bounds.
+// pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart:10:12: Error: Type variables can't have generic function types in their bounds.
 // class Hest<TypeX extends TypeY Function<TypeY>(TypeY)> {}
 //            ^^^^^
 //
 import self as self;
 import "dart:core" as core;
 
-class Hest<TypeX extends <TypeY extends core::Object* = dynamic>(TypeY*) →* TypeY* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
+class Hest<TypeX extends <TypeY extends core::Object? = dynamic>(TypeY%) → TypeY% = dynamic> extends core::Object {
+  synthetic constructor •() → self::Hest<self::Hest::TypeX>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.outline.expect b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.outline.expect
index 7cd79c3..ea03424 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.outline.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart:8:12: Error: Type variables can't have generic function types in their bounds.
+// pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart:10:12: Error: Type variables can't have generic function types in their bounds.
 // class Hest<TypeX extends TypeY Function<TypeY>(TypeY)> {}
 //            ^^^^^
 //
 import self as self;
 import "dart:core" as core;
 
-class Hest<TypeX extends <TypeY extends core::Object* = dynamic>(TypeY*) →* TypeY* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
+class Hest<TypeX extends <TypeY extends core::Object? = dynamic>(TypeY%) → TypeY% = dynamic> extends core::Object {
+  synthetic constructor •() → self::Hest<self::Hest::TypeX>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.transformed.expect b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.transformed.expect
index dcd7a33..ec2f6c1 100644
--- a/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart.weak.transformed.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart:8:12: Error: Type variables can't have generic function types in their bounds.
+// pkg/front_end/testcases/general/reject_generic_function_types_in_bounds.dart:10:12: Error: Type variables can't have generic function types in their bounds.
 // class Hest<TypeX extends TypeY Function<TypeY>(TypeY)> {}
 //            ^^^^^
 //
 import self as self;
 import "dart:core" as core;
 
-class Hest<TypeX extends <TypeY extends core::Object* = dynamic>(TypeY*) →* TypeY* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Hest<self::Hest::TypeX*>*
+class Hest<TypeX extends <TypeY extends core::Object? = dynamic>(TypeY%) → TypeY% = dynamic> extends core::Object {
+  synthetic constructor •() → self::Hest<self::Hest::TypeX>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart
index ad85c13..f30bd53 100644
--- a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart
+++ b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 bool f(List x) {
   return x.expand((y) {
     // Since y has type dynamic, y.split(',') has type dynamic, so an implicit
diff --git a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.textual_outline.expect b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.textual_outline.expect
index d583be0..fcee7cc 100644
--- a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.textual_outline.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 bool f(List x) {}
 main() {}
diff --git a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.textual_outline_modelled.expect
index d583be0..fcee7cc 100644
--- a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.textual_outline_modelled.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 bool f(List x) {}
 main() {}
diff --git a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.expect b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.expect
index 7704535..d5c71eb 100644
--- a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.expect
+++ b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.expect
@@ -1,10 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method f(core::List<dynamic>* x) → core::bool* {
-  return x.{core::Iterable::expand}<dynamic>((dynamic y) → core::Iterable<dynamic>* {
-    return y{dynamic}.split(",") as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-  }){((dynamic) →* core::Iterable<dynamic>*) →* core::Iterable<dynamic>*}.{core::Iterable::any}((dynamic y) → core::bool* => y =={core::Object::==}{(core::Object*) →* core::bool*} "z"){((dynamic) →* core::bool*) →* core::bool*};
+static method f(core::List<dynamic> x) → core::bool {
+  return x.{core::Iterable::expand}<dynamic>((dynamic y) → core::Iterable<dynamic> {
+    return y{dynamic}.split(",") as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>;
+  }){((dynamic) → core::Iterable<dynamic>) → core::Iterable<dynamic>}.{core::Iterable::any}((dynamic y) → core::bool => y =={core::Object::==}{(core::Object) → core::bool} "z"){((dynamic) → core::bool) → core::bool};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.modular.expect b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.modular.expect
index 7704535..d5c71eb 100644
--- a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.modular.expect
@@ -1,10 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method f(core::List<dynamic>* x) → core::bool* {
-  return x.{core::Iterable::expand}<dynamic>((dynamic y) → core::Iterable<dynamic>* {
-    return y{dynamic}.split(",") as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-  }){((dynamic) →* core::Iterable<dynamic>*) →* core::Iterable<dynamic>*}.{core::Iterable::any}((dynamic y) → core::bool* => y =={core::Object::==}{(core::Object*) →* core::bool*} "z"){((dynamic) →* core::bool*) →* core::bool*};
+static method f(core::List<dynamic> x) → core::bool {
+  return x.{core::Iterable::expand}<dynamic>((dynamic y) → core::Iterable<dynamic> {
+    return y{dynamic}.split(",") as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>;
+  }){((dynamic) → core::Iterable<dynamic>) → core::Iterable<dynamic>}.{core::Iterable::any}((dynamic y) → core::bool => y =={core::Object::==}{(core::Object) → core::bool} "z"){((dynamic) → core::bool) → core::bool};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.outline.expect b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.outline.expect
index bd4829a..03fb14c 100644
--- a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.outline.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method f(core::List<dynamic>* x) → core::bool*
+static method f(core::List<dynamic> x) → core::bool
   ;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.transformed.expect b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.transformed.expect
index 7704535..d5c71eb 100644
--- a/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/return_with_unknown_type_in_context.dart.weak.transformed.expect
@@ -1,10 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method f(core::List<dynamic>* x) → core::bool* {
-  return x.{core::Iterable::expand}<dynamic>((dynamic y) → core::Iterable<dynamic>* {
-    return y{dynamic}.split(",") as{TypeError,ForDynamic} core::Iterable<dynamic>*;
-  }){((dynamic) →* core::Iterable<dynamic>*) →* core::Iterable<dynamic>*}.{core::Iterable::any}((dynamic y) → core::bool* => y =={core::Object::==}{(core::Object*) →* core::bool*} "z"){((dynamic) →* core::bool*) →* core::bool*};
+static method f(core::List<dynamic> x) → core::bool {
+  return x.{core::Iterable::expand}<dynamic>((dynamic y) → core::Iterable<dynamic> {
+    return y{dynamic}.split(",") as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>;
+  }){((dynamic) → core::Iterable<dynamic>) → core::Iterable<dynamic>}.{core::Iterable::any}((dynamic y) → core::bool => y =={core::Object::==}{(core::Object) → core::bool} "z"){((dynamic) → core::bool) → core::bool};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart b/pkg/front_end/testcases/general/sdk_diagnostic.dart
index d341fc5..f8f4723 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart
@@ -1,7 +1,7 @@
 // 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.
-// @dart=2.9
+
 class C extends Iterable<Object> {
   // Missing implementation of [iterator] leads to diagnostic which refers to
   // the SDK. This test is intended to test that such references are displayed
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.textual_outline.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.textual_outline.expect
index a63a4d4..1a2b8fa 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C extends Iterable<Object> {}
 
 test() {}
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.textual_outline_modelled.expect
index 0bd2569..23c1a60 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C extends Iterable<Object> {}
 
 main() {}
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.expect
index 7131789..20c715f 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -26,47 +26,10 @@
 import self as self;
 import "dart:core" as core;
 
-class C extends core::Iterable<core::Object*> {
-  synthetic constructor •() → self::C*
+class C extends core::Iterable<core::Object> {
+  synthetic constructor •() → self::C
     : super core::Iterable::•()
     ;
-  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*; -> core::Iterable::cast
-  abstract member-signature method followedBy(covariant-by-class core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* toElement) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
-  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::where
-  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* toElements) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
-  abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::Object*) →* void action) → void; -> core::Iterable::forEach
-  abstract member-signature method reduce(covariant-by-class (core::Object*, core::Object*) →* core::Object* combine) → core::Object*; -> core::Iterable::reduce
-  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*; -> core::Iterable::fold
-  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::every
-  abstract member-signature method join([core::String* separator = #C1]) → core::String*; -> core::Iterable::join
-  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::any
-  abstract member-signature method toList({core::bool* growable = #C2}) → core::List<core::Object*>*; -> core::Iterable::toList
-  abstract member-signature method toSet() → core::Set<core::Object*>*; -> core::Iterable::toSet
-  abstract member-signature get length() → core::int*; -> core::Iterable::length
-  abstract member-signature get isEmpty() → core::bool*; -> core::Iterable::isEmpty
-  abstract member-signature get isNotEmpty() → core::bool*; -> core::Iterable::isNotEmpty
-  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*; -> core::Iterable::take
-  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::takeWhile
-  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*; -> core::Iterable::skip
-  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::skipWhile
-  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse = #C3}) → core::Object*; -> core::Iterable::firstWhere
-  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse = #C3}) → core::Object*; -> core::Iterable::lastWhere
-  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse = #C3}) → core::Object*; -> core::Iterable::singleWhere
-  abstract member-signature method elementAt(core::int* index) → core::Object*; -> core::Iterable::elementAt
-  abstract member-signature method toString() → core::String*; -> core::Iterable::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  abstract member-signature get iterator() → core::Iterator<core::Object*>*; -> core::Iterable::iterator
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general/sdk_diagnostic.dart:12:8: Error: Too few positional arguments: 1 required, 0 given.
@@ -74,9 +37,3 @@
        ^";
 }
 static method main() → dynamic {}
-
-constants  {
-  #C1 = ""
-  #C2 = true
-  #C3 = null
-}
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.modular.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.modular.expect
index 7131789..20c715f 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -26,47 +26,10 @@
 import self as self;
 import "dart:core" as core;
 
-class C extends core::Iterable<core::Object*> {
-  synthetic constructor •() → self::C*
+class C extends core::Iterable<core::Object> {
+  synthetic constructor •() → self::C
     : super core::Iterable::•()
     ;
-  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*; -> core::Iterable::cast
-  abstract member-signature method followedBy(covariant-by-class core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* toElement) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
-  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::where
-  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* toElements) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
-  abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::Object*) →* void action) → void; -> core::Iterable::forEach
-  abstract member-signature method reduce(covariant-by-class (core::Object*, core::Object*) →* core::Object* combine) → core::Object*; -> core::Iterable::reduce
-  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*; -> core::Iterable::fold
-  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::every
-  abstract member-signature method join([core::String* separator = #C1]) → core::String*; -> core::Iterable::join
-  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::any
-  abstract member-signature method toList({core::bool* growable = #C2}) → core::List<core::Object*>*; -> core::Iterable::toList
-  abstract member-signature method toSet() → core::Set<core::Object*>*; -> core::Iterable::toSet
-  abstract member-signature get length() → core::int*; -> core::Iterable::length
-  abstract member-signature get isEmpty() → core::bool*; -> core::Iterable::isEmpty
-  abstract member-signature get isNotEmpty() → core::bool*; -> core::Iterable::isNotEmpty
-  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*; -> core::Iterable::take
-  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::takeWhile
-  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*; -> core::Iterable::skip
-  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::skipWhile
-  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse = #C3}) → core::Object*; -> core::Iterable::firstWhere
-  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse = #C3}) → core::Object*; -> core::Iterable::lastWhere
-  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse = #C3}) → core::Object*; -> core::Iterable::singleWhere
-  abstract member-signature method elementAt(core::int* index) → core::Object*; -> core::Iterable::elementAt
-  abstract member-signature method toString() → core::String*; -> core::Iterable::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  abstract member-signature get iterator() → core::Iterator<core::Object*>*; -> core::Iterable::iterator
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general/sdk_diagnostic.dart:12:8: Error: Too few positional arguments: 1 required, 0 given.
@@ -74,9 +37,3 @@
        ^";
 }
 static method main() → dynamic {}
-
-constants  {
-  #C1 = ""
-  #C2 = true
-  #C3 = null
-}
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.outline.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.outline.expect
index 3c5b61f..b08de4b 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -19,46 +19,9 @@
 import self as self;
 import "dart:core" as core;
 
-class C extends core::Iterable<core::Object*> {
-  synthetic constructor •() → self::C*
+class C extends core::Iterable<core::Object> {
+  synthetic constructor •() → self::C
     ;
-  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*; -> core::Iterable::cast
-  abstract member-signature method followedBy(covariant-by-class core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* toElement) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
-  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::where
-  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* toElements) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
-  abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::Object*) →* void action) → void; -> core::Iterable::forEach
-  abstract member-signature method reduce(covariant-by-class (core::Object*, core::Object*) →* core::Object* combine) → core::Object*; -> core::Iterable::reduce
-  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*; -> core::Iterable::fold
-  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::every
-  abstract member-signature method join([core::String* separator]) → core::String*; -> core::Iterable::join
-  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::any
-  abstract member-signature method toList({core::bool* growable}) → core::List<core::Object*>*; -> core::Iterable::toList
-  abstract member-signature method toSet() → core::Set<core::Object*>*; -> core::Iterable::toSet
-  abstract member-signature get length() → core::int*; -> core::Iterable::length
-  abstract member-signature get isEmpty() → core::bool*; -> core::Iterable::isEmpty
-  abstract member-signature get isNotEmpty() → core::bool*; -> core::Iterable::isNotEmpty
-  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*; -> core::Iterable::take
-  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::takeWhile
-  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*; -> core::Iterable::skip
-  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::skipWhile
-  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse}) → core::Object*; -> core::Iterable::firstWhere
-  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse}) → core::Object*; -> core::Iterable::lastWhere
-  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse}) → core::Object*; -> core::Iterable::singleWhere
-  abstract member-signature method elementAt(core::int* index) → core::Object*; -> core::Iterable::elementAt
-  abstract member-signature method toString() → core::String*; -> core::Iterable::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  abstract member-signature get iterator() → core::Iterator<core::Object*>*; -> core::Iterable::iterator
 }
 static method test() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.transformed.expect b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.transformed.expect
index 7131789..20c715f 100644
--- a/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/sdk_diagnostic.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -26,47 +26,10 @@
 import self as self;
 import "dart:core" as core;
 
-class C extends core::Iterable<core::Object*> {
-  synthetic constructor •() → self::C*
+class C extends core::Iterable<core::Object> {
+  synthetic constructor •() → self::C
     : super core::Iterable::•()
     ;
-  abstract member-signature method cast<R extends core::Object* = dynamic>() → core::Iterable<self::C::cast::R*>*; -> core::Iterable::cast
-  abstract member-signature method followedBy(covariant-by-class core::Iterable<core::Object*>* other) → core::Iterable<core::Object*>*; -> core::Iterable::followedBy
-  abstract member-signature method map<T extends core::Object* = dynamic>((core::Object*) →* self::C::map::T* toElement) → core::Iterable<self::C::map::T*>*; -> core::Iterable::map
-  abstract member-signature method where((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::where
-  abstract member-signature method whereType<T extends core::Object* = dynamic>() → core::Iterable<self::C::whereType::T*>*; -> core::Iterable::whereType
-  abstract member-signature method expand<T extends core::Object* = dynamic>((core::Object*) →* core::Iterable<self::C::expand::T*>* toElements) → core::Iterable<self::C::expand::T*>*; -> core::Iterable::expand
-  abstract member-signature method contains(core::Object* element) → core::bool*; -> core::Iterable::contains
-  abstract member-signature method forEach((core::Object*) →* void action) → void; -> core::Iterable::forEach
-  abstract member-signature method reduce(covariant-by-class (core::Object*, core::Object*) →* core::Object* combine) → core::Object*; -> core::Iterable::reduce
-  abstract member-signature method fold<T extends core::Object* = dynamic>(self::C::fold::T* initialValue, (self::C::fold::T*, core::Object*) →* self::C::fold::T* combine) → self::C::fold::T*; -> core::Iterable::fold
-  abstract member-signature method every((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::every
-  abstract member-signature method join([core::String* separator = #C1]) → core::String*; -> core::Iterable::join
-  abstract member-signature method any((core::Object*) →* core::bool* test) → core::bool*; -> core::Iterable::any
-  abstract member-signature method toList({core::bool* growable = #C2}) → core::List<core::Object*>*; -> core::Iterable::toList
-  abstract member-signature method toSet() → core::Set<core::Object*>*; -> core::Iterable::toSet
-  abstract member-signature get length() → core::int*; -> core::Iterable::length
-  abstract member-signature get isEmpty() → core::bool*; -> core::Iterable::isEmpty
-  abstract member-signature get isNotEmpty() → core::bool*; -> core::Iterable::isNotEmpty
-  abstract member-signature method take(core::int* count) → core::Iterable<core::Object*>*; -> core::Iterable::take
-  abstract member-signature method takeWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::takeWhile
-  abstract member-signature method skip(core::int* count) → core::Iterable<core::Object*>*; -> core::Iterable::skip
-  abstract member-signature method skipWhile((core::Object*) →* core::bool* test) → core::Iterable<core::Object*>*; -> core::Iterable::skipWhile
-  abstract member-signature method firstWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse = #C3}) → core::Object*; -> core::Iterable::firstWhere
-  abstract member-signature method lastWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse = #C3}) → core::Object*; -> core::Iterable::lastWhere
-  abstract member-signature method singleWhere((core::Object*) →* core::bool* test, {covariant-by-class () →* core::Object* orElse = #C3}) → core::Object*; -> core::Iterable::singleWhere
-  abstract member-signature method elementAt(core::int* index) → core::Object*; -> core::Iterable::elementAt
-  abstract member-signature method toString() → core::String*; -> core::Iterable::toString
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  abstract member-signature get iterator() → core::Iterator<core::Object*>*; -> core::Iterable::iterator
 }
 static method test() → dynamic {
   invalid-expression "pkg/front_end/testcases/general/sdk_diagnostic.dart:12:8: Error: Too few positional arguments: 1 required, 0 given.
@@ -74,9 +37,3 @@
        ^";
 }
 static method main() → dynamic {}
-
-constants  {
-  #C1 = ""
-  #C2 = true
-  #C3 = null
-}
diff --git a/pkg/front_end/testcases/general/spread_collection.dart b/pkg/front_end/testcases/general/spread_collection.dart
index 5cdf7b0..569f62b 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart
+++ b/pkg/front_end/testcases/general/spread_collection.dart
@@ -1,22 +1,25 @@
 // 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.
-// @dart=2.9
+
+List<int>? nullableList = [3];
+Map<int, int>? nullableMap = {3: 3};
+
 main() {
   final aList = <int>[
     1,
     ...[2],
-    ...?[3]
+    ...?nullableList
   ];
   final aMap = <int, int>{
     1: 1,
     ...{2: 2},
-    ...?{3: 3}
+    ...?nullableMap
   };
   final aSet = <int>{
     1,
     ...[2],
-    ...?[3]
+    ...?nullableList
   };
   final aSetOrMap = {...foo()};
 
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.textual_outline.expect b/pkg/front_end/testcases/general/spread_collection.dart.textual_outline.expect
index 4da36bc..058a0e1 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.textual_outline.expect
@@ -1,3 +1,4 @@
-// @dart = 2.9
+List<int>? nullableList = [3];
+Map<int, int>? nullableMap = {3: 3};
 main() {}
 foo() => null;
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/spread_collection.dart.textual_outline_modelled.expect
index 0dadf4a..90935b5 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.textual_outline_modelled.expect
@@ -1,3 +1,4 @@
-// @dart = 2.9
+List<int>? nullableList = [3];
+Map<int, int>? nullableMap = {3: 3};
 foo() => null;
 main() {}
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.weak.expect b/pkg/front_end/testcases/general/spread_collection.dart.weak.expect
index 6948e05..958f9f7 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.weak.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.weak.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/spread_collection.dart:21:21: Error: Not enough type information to disambiguate between literal set and literal map.
+// pkg/front_end/testcases/general/spread_collection.dart:24:21: Error: Not enough type information to disambiguate between literal set and literal map.
 // Try providing type arguments for the literal explicitly to disambiguate it.
 //   final aSetOrMap = {...foo()};
 //                     ^
@@ -11,33 +11,35 @@
 import "dart:core" as core;
 import "dart:collection" as col;
 
+static field core::List<core::int>? nullableList = <core::int>[3];
+static field core::Map<core::int, core::int>? nullableMap = <core::int, core::int>{3: 3};
 static method main() → dynamic {
-  final core::List<core::int*>* aList = block {
-    final core::List<core::int*>* #t1 = <core::int*>[1];
-    #t1.{core::List::addAll}{Invariant}(<core::int*>[2]){(core::Iterable<core::int*>*) →* void};
-    final core::Iterable<core::int*>* #t2 = <core::int*>[3];
+  final core::List<core::int> aList = block {
+    final core::List<core::int> #t1 = <core::int>[1];
+    #t1.{core::List::addAll}{Invariant}(<core::int>[2]){(core::Iterable<core::int>) → void};
+    final core::Iterable<core::int>? #t2 = self::nullableList;
     if(!(#t2 == null))
-      #t1.{core::List::addAll}{Invariant}(#t2){(core::Iterable<core::int*>*) →* void};
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
   } =>#t1;
-  final core::Map<core::int*, core::int*>* aMap = block {
-    final core::Map<core::int*, core::int*>* #t3 = <core::int*, core::int*>{};
-    #t3.{core::Map::[]=}{Invariant}(1, 1){(core::int*, core::int*) →* void};
-    for (final core::MapEntry<core::int*, core::int*>* #t4 in <core::int*, core::int*>{2: 2}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>})
-      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}{core::int*}, #t4.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
-    final core::Map<core::int*, core::int*>* #t5 = <core::int*, core::int*>{3: 3};
+  final core::Map<core::int, core::int> aMap = block {
+    final core::Map<core::int, core::int> #t3 = <core::int, core::int>{};
+    #t3.{core::Map::[]=}{Invariant}(1, 1){(core::int, core::int) → void};
+    for (final core::MapEntry<core::int, core::int> #t4 in <core::int, core::int>{2: 2}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>})
+      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}{core::int}, #t4.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
+    final core::Map<core::int, core::int>? #t5 = self::nullableMap;
     if(!(#t5 == null))
-      for (final core::MapEntry<core::int*, core::int*>* #t6 in #t5.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>})
-        #t3.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}{core::int*}, #t6.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
+      for (final core::MapEntry<core::int, core::int> #t6 in #t5{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>})
+        #t3.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}{core::int}, #t6.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
   } =>#t3;
-  final core::Set<core::int*>* aSet = block {
-    final core::Set<core::int*>* #t7 = col::LinkedHashSet::•<core::int*>();
-    #t7.{core::Set::add}{Invariant}(1){(core::int*) →* core::bool*};
-    #t7.{core::Set::addAll}{Invariant}(<core::int*>[2]){(core::Iterable<core::int*>*) →* void};
-    final core::Iterable<core::int*>* #t8 = <core::int*>[3];
+  final core::Set<core::int> aSet = block {
+    final core::Set<core::int> #t7 = col::LinkedHashSet::•<core::int>();
+    #t7.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
+    #t7.{core::Set::addAll}{Invariant}(<core::int>[2]){(core::Iterable<core::int>) → void};
+    final core::Iterable<core::int>? #t8 = self::nullableList;
     if(!(#t8 == null))
-      #t7.{core::Set::addAll}{Invariant}(#t8){(core::Iterable<core::int*>*) →* void};
+      #t7.{core::Set::addAll}{Invariant}(#t8{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
   } =>#t7;
-  final Never* aSetOrMap = invalid-expression "pkg/front_end/testcases/general/spread_collection.dart:21:21: Error: Not enough type information to disambiguate between literal set and literal map.
+  final Never aSetOrMap = invalid-expression "pkg/front_end/testcases/general/spread_collection.dart:24:21: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
   final aSetOrMap = {...foo()};
                     ^";
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.weak.modular.expect b/pkg/front_end/testcases/general/spread_collection.dart.weak.modular.expect
index 6948e05..958f9f7 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.weak.modular.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/spread_collection.dart:21:21: Error: Not enough type information to disambiguate between literal set and literal map.
+// pkg/front_end/testcases/general/spread_collection.dart:24:21: Error: Not enough type information to disambiguate between literal set and literal map.
 // Try providing type arguments for the literal explicitly to disambiguate it.
 //   final aSetOrMap = {...foo()};
 //                     ^
@@ -11,33 +11,35 @@
 import "dart:core" as core;
 import "dart:collection" as col;
 
+static field core::List<core::int>? nullableList = <core::int>[3];
+static field core::Map<core::int, core::int>? nullableMap = <core::int, core::int>{3: 3};
 static method main() → dynamic {
-  final core::List<core::int*>* aList = block {
-    final core::List<core::int*>* #t1 = <core::int*>[1];
-    #t1.{core::List::addAll}{Invariant}(<core::int*>[2]){(core::Iterable<core::int*>*) →* void};
-    final core::Iterable<core::int*>* #t2 = <core::int*>[3];
+  final core::List<core::int> aList = block {
+    final core::List<core::int> #t1 = <core::int>[1];
+    #t1.{core::List::addAll}{Invariant}(<core::int>[2]){(core::Iterable<core::int>) → void};
+    final core::Iterable<core::int>? #t2 = self::nullableList;
     if(!(#t2 == null))
-      #t1.{core::List::addAll}{Invariant}(#t2){(core::Iterable<core::int*>*) →* void};
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
   } =>#t1;
-  final core::Map<core::int*, core::int*>* aMap = block {
-    final core::Map<core::int*, core::int*>* #t3 = <core::int*, core::int*>{};
-    #t3.{core::Map::[]=}{Invariant}(1, 1){(core::int*, core::int*) →* void};
-    for (final core::MapEntry<core::int*, core::int*>* #t4 in <core::int*, core::int*>{2: 2}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>})
-      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}{core::int*}, #t4.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
-    final core::Map<core::int*, core::int*>* #t5 = <core::int*, core::int*>{3: 3};
+  final core::Map<core::int, core::int> aMap = block {
+    final core::Map<core::int, core::int> #t3 = <core::int, core::int>{};
+    #t3.{core::Map::[]=}{Invariant}(1, 1){(core::int, core::int) → void};
+    for (final core::MapEntry<core::int, core::int> #t4 in <core::int, core::int>{2: 2}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>})
+      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}{core::int}, #t4.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
+    final core::Map<core::int, core::int>? #t5 = self::nullableMap;
     if(!(#t5 == null))
-      for (final core::MapEntry<core::int*, core::int*>* #t6 in #t5.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>})
-        #t3.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}{core::int*}, #t6.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
+      for (final core::MapEntry<core::int, core::int> #t6 in #t5{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>})
+        #t3.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}{core::int}, #t6.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
   } =>#t3;
-  final core::Set<core::int*>* aSet = block {
-    final core::Set<core::int*>* #t7 = col::LinkedHashSet::•<core::int*>();
-    #t7.{core::Set::add}{Invariant}(1){(core::int*) →* core::bool*};
-    #t7.{core::Set::addAll}{Invariant}(<core::int*>[2]){(core::Iterable<core::int*>*) →* void};
-    final core::Iterable<core::int*>* #t8 = <core::int*>[3];
+  final core::Set<core::int> aSet = block {
+    final core::Set<core::int> #t7 = col::LinkedHashSet::•<core::int>();
+    #t7.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
+    #t7.{core::Set::addAll}{Invariant}(<core::int>[2]){(core::Iterable<core::int>) → void};
+    final core::Iterable<core::int>? #t8 = self::nullableList;
     if(!(#t8 == null))
-      #t7.{core::Set::addAll}{Invariant}(#t8){(core::Iterable<core::int*>*) →* void};
+      #t7.{core::Set::addAll}{Invariant}(#t8{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
   } =>#t7;
-  final Never* aSetOrMap = invalid-expression "pkg/front_end/testcases/general/spread_collection.dart:21:21: Error: Not enough type information to disambiguate between literal set and literal map.
+  final Never aSetOrMap = invalid-expression "pkg/front_end/testcases/general/spread_collection.dart:24:21: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
   final aSetOrMap = {...foo()};
                     ^";
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.weak.outline.expect b/pkg/front_end/testcases/general/spread_collection.dart.weak.outline.expect
index 4c2eb20..46e25f5 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.weak.outline.expect
@@ -1,6 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
+import "dart:core" as core;
 
+static field core::List<core::int>? nullableList;
+static field core::Map<core::int, core::int>? nullableMap;
 static method main() → dynamic
   ;
 static method foo() → dynamic
diff --git a/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect b/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect
index 29f6481..e9f240b 100644
--- a/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/spread_collection.dart.weak.transformed.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/spread_collection.dart:21:21: Error: Not enough type information to disambiguate between literal set and literal map.
+// pkg/front_end/testcases/general/spread_collection.dart:24:21: Error: Not enough type information to disambiguate between literal set and literal map.
 // Try providing type arguments for the literal explicitly to disambiguate it.
 //   final aSetOrMap = {...foo()};
 //                     ^
@@ -11,42 +11,44 @@
 import "dart:core" as core;
 import "dart:collection" as col;
 
+static field core::List<core::int>? nullableList = core::_GrowableList::_literal1<core::int>(3);
+static field core::Map<core::int, core::int>? nullableMap = <core::int, core::int>{3: 3};
 static method main() → dynamic {
-  final core::List<core::int*>* aList = block {
-    final core::List<core::int*>* #t1 = core::_GrowableList::_literal1<core::int*>(1);
-    #t1.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(2)){(core::Iterable<core::int*>*) →* void};
-    final core::Iterable<core::int*>* #t2 = core::_GrowableList::_literal1<core::int*>(3);
+  final core::List<core::int> aList = block {
+    final core::List<core::int> #t1 = core::_GrowableList::_literal1<core::int>(1);
+    #t1.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(2)){(core::Iterable<core::int>) → void};
+    final core::Iterable<core::int>? #t2 = self::nullableList;
     if(!(#t2 == null))
-      #t1.{core::List::addAll}{Invariant}(#t2){(core::Iterable<core::int*>*) →* void};
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
   } =>#t1;
-  final core::Map<core::int*, core::int*>* aMap = block {
-    final core::Map<core::int*, core::int*>* #t3 = <core::int*, core::int*>{};
-    #t3.{core::Map::[]=}{Invariant}(1, 1){(core::int*, core::int*) →* void};
+  final core::Map<core::int, core::int> aMap = block {
+    final core::Map<core::int, core::int> #t3 = <core::int, core::int>{};
+    #t3.{core::Map::[]=}{Invariant}(1, 1){(core::int, core::int) → void};
     {
-      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{2: 2}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::int*>>*};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = <core::int, core::int>{2: 2}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
-        final core::MapEntry<core::int*, core::int*>* #t4 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::int*>};
-        #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}{core::int*}, #t4.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
+        final core::MapEntry<core::int, core::int> #t4 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
+        #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}{core::int}, #t4.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
-    final core::Map<core::int*, core::int*>* #t5 = <core::int*, core::int*>{3: 3};
+    final core::Map<core::int, core::int>? #t5 = self::nullableMap;
     if(!(#t5 == null)) {
-      core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = #t5.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::int*>>*};
+      core::Iterator<core::MapEntry<core::int, core::int>> :sync-for-iterator = #t5{core::Map<core::int, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int>>};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
-        final core::MapEntry<core::int*, core::int*>* #t6 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::int*>};
-        #t3.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}{core::int*}, #t6.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
+        final core::MapEntry<core::int, core::int> #t6 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int>};
+        #t3.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}{core::int}, #t6.{core::MapEntry::value}{core::int}){(core::int, core::int) → void};
       }
     }
   } =>#t3;
-  final core::Set<core::int*>* aSet = block {
-    final core::Set<core::int*>* #t7 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t7.{core::Set::add}{Invariant}(1){(core::int*) →* core::bool*};
-    #t7.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(2)){(core::Iterable<core::int*>*) →* void};
-    final core::Iterable<core::int*>* #t8 = core::_GrowableList::_literal1<core::int*>(3);
+  final core::Set<core::int> aSet = block {
+    final core::Set<core::int> #t7 = new col::_CompactLinkedHashSet::•<core::int>();
+    #t7.{core::Set::add}{Invariant}(1){(core::int) → core::bool};
+    #t7.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(2)){(core::Iterable<core::int>) → void};
+    final core::Iterable<core::int>? #t8 = self::nullableList;
     if(!(#t8 == null))
-      #t7.{core::Set::addAll}{Invariant}(#t8){(core::Iterable<core::int*>*) →* void};
+      #t7.{core::Set::addAll}{Invariant}(#t8{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
   } =>#t7;
-  final Never* aSetOrMap = invalid-expression "pkg/front_end/testcases/general/spread_collection.dart:21:21: Error: Not enough type information to disambiguate between literal set and literal map.
+  final Never aSetOrMap = invalid-expression "pkg/front_end/testcases/general/spread_collection.dart:24:21: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
   final aSetOrMap = {...foo()};
                     ^";
diff --git a/pkg/front_end/testcases/general/spread_collection_inference.dart b/pkg/front_end/testcases/general/spread_collection_inference.dart
index bb1790d..6829547 100644
--- a/pkg/front_end/testcases/general/spread_collection_inference.dart
+++ b/pkg/front_end/testcases/general/spread_collection_inference.dart
@@ -1,7 +1,9 @@
 // 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.
+
 // @dart=2.9
+
 // This test case checks that inference works for spread collections, and that
 // the errors are reported when necessary.
 
@@ -18,94 +20,94 @@
   Map<int, num> mapIntNum = <int, num>{42: 42};
   List<num> listNum = <num>[42];
 
-  var /*@ type=List<dynamic>* */ lhs10 = /*@ typeArgs=dynamic */ [
+  var /*@type=List<dynamic>**/ lhs10 = /*@ typeArgs=dynamic */ [
     ...
     /*@ typeArgs=dynamic */ []
   ];
 
-  var /*@ type=Set<dynamic>* */ set10 = <dynamic>{
+  var /*@type=Set<dynamic>**/ set10 = <dynamic>{
     ... /*@ typeArgs=dynamic */ []
   };
 
-  var /*@ type=Map<dynamic, dynamic>* */ map10 = <dynamic, dynamic>{
+  var /*@type=Map<dynamic, dynamic>**/ map10 = <dynamic, dynamic>{
     ...
     /*@ typeArgs=dynamic, dynamic */ {}
   };
 
-  var /*@ type=Map<dynamic, dynamic>* */ map10ambiguous =
+  var /*@type=Map<dynamic, dynamic>**/ map10ambiguous =
       /*@ typeArgs=dynamic, dynamic */ {
     ... /*@ typeArgs=dynamic, dynamic */ {}
   };
 
-  var /*@ type=List<int*>* */ lhs20 = /*@ typeArgs=int* */ [...spread];
+  var /*@type=List<int*>**/ lhs20 = /*@typeArgs=int**/ [...spread];
 
-  var /*@ type=Set<int*>* */ set20 = /*@ typeArgs=int* */ {...spread, 42};
+  var /*@type=Set<int*>**/ set20 = /*@typeArgs=int**/ {...spread, 42};
 
-  var /*@ type=Set<int*>* */ set20ambiguous = /*@ typeArgs=int* */ {...spread};
+  var /*@type=Set<int*>**/ set20ambiguous = /*@typeArgs=int**/ {...spread};
 
-  var /*@ type=Map<String*, int*>* */ map20 = /*@ typeArgs=String*, int* */
+  var /*@type=Map<String*, int*>**/ map20 = /*@typeArgs=String*, int**/
       {...mapSpread, "baz": 42};
 
-  var /*@ type=Map<String*, int*>* */ map20ambiguous = /*@ typeArgs=String*, int* */
+  var /*@type=Map<String*, int*>**/ map20ambiguous = /*@typeArgs=String*, int**/
       {...mapSpread};
 
-  var /*@ type=List<dynamic>* */ lhs21 = /*@ typeArgs=dynamic */ [
+  var /*@type=List<dynamic>**/ lhs21 = /*@ typeArgs=dynamic */ [
     ...(spread as dynamic)
   ];
 
-  var /*@ type=Set<dynamic>* */ set21 = /*@ typeArgs=dynamic */ {
+  var /*@type=Set<dynamic>**/ set21 = /*@ typeArgs=dynamic */ {
     ...(spread as dynamic),
     42
   };
 
-  var /*@ type=Map<dynamic, dynamic>* */ map21 = /*@ typeArgs=dynamic, dynamic */
+  var /*@type=Map<dynamic, dynamic>**/ map21 = /*@ typeArgs=dynamic, dynamic */
       {...(mapSpread as dynamic), "baz": 42};
 
   dynamic map21ambiguous = {...(mapSpread as dynamic)};
 
-  List<int> lhs22 = /*@ typeArgs=int* */ [... /*@ typeArgs=int* */ []];
+  List<int> lhs22 = /*@typeArgs=int**/ [... /*@typeArgs=int**/ []];
 
-  Set<int> set22 = /*@ typeArgs=int* */ {... /*@ typeArgs=int* */ [], 42};
+  Set<int> set22 = /*@typeArgs=int**/ {... /*@typeArgs=int**/ [], 42};
 
-  Set<int> set22ambiguous = /*@ typeArgs=int* */ {... /*@ typeArgs=int* */ []};
+  Set<int> set22ambiguous = /*@typeArgs=int**/ {... /*@typeArgs=int**/ []};
 
-  Map<String, int> map22 = /*@ typeArgs=String*, int* */
-      {... /*@ typeArgs=String*, int* */ {}};
+  Map<String, int> map22 = /*@typeArgs=String*, int**/
+      {... /*@typeArgs=String*, int**/ {}};
 
-  List<List<int>> lhs23 = /*@ typeArgs=List<int*>* */ [
-    ... /*@ typeArgs=List<int*>* */
-    [/*@ typeArgs=int* */ []]
+  List<List<int>> lhs23 = /*@typeArgs=List<int*>**/ [
+    ... /*@typeArgs=List<int*>**/
+    [/*@typeArgs=int**/ []]
   ];
 
-  Set<List<int>> set23 = /*@ typeArgs=List<int*>* */ {
-    ... /*@ typeArgs=List<int*>* */
-    [/*@ typeArgs=int* */ []],
+  Set<List<int>> set23 = /*@typeArgs=List<int*>**/ {
+    ... /*@typeArgs=List<int*>**/
+    [/*@typeArgs=int**/ []],
     <int>[42]
   };
 
-  Set<List<int>> set23ambiguous = /*@ typeArgs=List<int*>* */
+  Set<List<int>> set23ambiguous = /*@typeArgs=List<int*>**/
       {
-    ... /*@ typeArgs=List<int*>* */ [/*@ typeArgs=int* */ []]
+    ... /*@typeArgs=List<int*>**/ [/*@typeArgs=int**/ []]
   };
 
-  Map<String, List<int>> map23 = /*@ typeArgs=String*, List<int*>* */
+  Map<String, List<int>> map23 = /*@typeArgs=String*, List<int*>**/
       {
-    ... /*@ typeArgs=String*, List<int*>* */ {"baz": /*@ typeArgs=int* */ [] }
+    ... /*@typeArgs=String*, List<int*>**/ {"baz": /*@typeArgs=int**/ [] }
   };
 
   dynamic map24ambiguous = {...spread, ...mapSpread};
 
-  int lhs30 = /*@ typeArgs=int* */ [...spread];
+  int lhs30 = /*@typeArgs=int**/ [...spread];
 
-  int set30 = /*@ typeArgs=int* */ {...spread, 42};
+  int set30 = /*@typeArgs=int**/ {...spread, 42};
 
-  int set30ambiguous = /*@ typeArgs=int* */
+  int set30ambiguous = /*@typeArgs=int**/
       {...spread};
 
-  int map30 = /*@ typeArgs=String*, int* */
+  int map30 = /*@typeArgs=String*, int**/
       {...mapSpread, "baz": 42};
 
-  int map30ambiguous = /*@ typeArgs=String*, int* */
+  int map30ambiguous = /*@typeArgs=String*, int**/
       {...mapSpread};
 
   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
@@ -132,7 +134,7 @@
 
   Set<int> set70 = <int>{...null};
 
-  var /*@ type=Set<dynamic>* */ set71ambiguous = /*@ typeArgs=dynamic */
+  var /*@type=Set<dynamic>**/ set71ambiguous = /*@ typeArgs=dynamic */
       {
     ...null,
     ... /*@ typeArgs=dynamic */
@@ -145,13 +147,13 @@
 
   Set<int> set80 = <int>{...?null};
 
-  var /*@ type=Set<dynamic>* */ set81ambiguous = /*@ typeArgs=dynamic */
+  var /*@type=Set<dynamic>**/ set81ambiguous = /*@ typeArgs=dynamic */
       {...?null, ... /*@ typeArgs=dynamic */ []};
 
   Map<String, int> map80 = <String, int>{...?null};
 
-  var /*@ type=Map<String*, int*>* */ map90 = <String, int>{
-    ... /*@ typeArgs=String*, int* */ bar()
+  var /*@type=Map<String*, int*>**/ map90 = <String, int>{
+    ... /*@typeArgs=String*, int**/ bar()
   };
 
   List<int> list100 = <int>[...listNum];
diff --git a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.expect b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.expect
index 470fbda..57142b1 100644
--- a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.expect
+++ b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.expect
@@ -2,93 +2,93 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:64:28: Error: Not enough type information to disambiguate between literal set and literal map.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:66:28: Error: Not enough type information to disambiguate between literal set and literal map.
 // Try providing type arguments for the literal explicitly to disambiguate it.
 //   dynamic map21ambiguous = {...(mapSpread as dynamic)};
 //                            ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:96:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:98:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
 //   dynamic map24ambiguous = {...spread, ...mapSpread};
 //                            ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:98:36: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:100:34: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
 //  - 'List' is from 'dart:core'.
-//   int lhs30 = /*@ typeArgs=int* */ [...spread];
-//                                    ^
+//   int lhs30 = /*@typeArgs=int**/ [...spread];
+//                                  ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:100:36: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:102:34: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
 //  - 'Set' is from 'dart:core'.
-//   int set30 = /*@ typeArgs=int* */ {...spread, 42};
-//                                    ^
+//   int set30 = /*@typeArgs=int**/ {...spread, 42};
+//                                  ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:103:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:105:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
 //  - 'Set' is from 'dart:core'.
 //       {...spread};
 //       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:106:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:108:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
 //  - 'Map' is from 'dart:core'.
 //       {...mapSpread, "baz": 42};
 //       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:109:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:111:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
 //  - 'Map' is from 'dart:core'.
 //       {...mapSpread};
 //       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:111:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:113:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
 //   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
 //                                      ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
 //   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
 //                                     ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:115:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:117:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
 //   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
 //                                                       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:117:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:119:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
 //   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
 //                                      ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
 //   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
 //                                     ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:121:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:123:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
 //   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
 //                                                       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:123:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:125:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
 //   List<String> lhs60 = <String>[...spread];
 //                                    ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
 //   Set<String> set60 = <String>{...spread};
 //                                   ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:127:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:129:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
 //   Map<int, int> map60 = <int, int>{...mapSpread};
 //                                       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:129:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:131:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
 //   Map<String, String> map61 = <String, String>{...mapSpread};
 //                                                   ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
 //   List<int> lhs70 = <int>[...null];
 //                              ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
 //   Set<int> set70 = <int>{...null};
 //                             ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type 'Null'.
 //     ...null,
 //        ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
 //   Map<String, int> map70 = <String, int>{...null};
 //                                             ^
 //
@@ -159,7 +159,7 @@
       #t18.{core::Map::[]=}{Invariant}(#t19.{core::MapEntry::key}{dynamic}, #t19.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
     #t18.{core::Map::[]=}{Invariant}("baz", 42){(dynamic, dynamic) →* void};
   } =>#t18;
-  dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:64:28: Error: Not enough type information to disambiguate between literal set and literal map.
+  dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:66:28: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
   dynamic map21ambiguous = {...(mapSpread as dynamic)};
                            ^";
@@ -201,23 +201,23 @@
     for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 in <core::String*, core::List<core::int*>*>{"baz": <core::int*>[]}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>})
       #t32.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}{core::String*}, #t33.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
   } =>#t32;
-  dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:96:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+  dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:98:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
   dynamic map24ambiguous = {...spread, ...mapSpread};
                            ^";
-  core::int* lhs30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:98:36: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+  core::int* lhs30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:100:34: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
  - 'List' is from 'dart:core'.
-  int lhs30 = /*@ typeArgs=int* */ [...spread];
-                                   ^" in ( block {
+  int lhs30 = /*@typeArgs=int**/ [...spread];
+                                 ^" in ( block {
     final core::List<core::int*>* #t34 = core::List::of<core::int*>(spread);
   } =>#t34) as{TypeError} core::int*;
-  core::int* set30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:100:36: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+  core::int* set30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:102:34: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
  - 'Set' is from 'dart:core'.
-  int set30 = /*@ typeArgs=int* */ {...spread, 42};
-                                   ^" in ( block {
+  int set30 = /*@typeArgs=int**/ {...spread, 42};
+                                 ^" in ( block {
     final core::Set<core::int*>* #t35 = col::LinkedHashSet::of<core::int*>(spread);
     #t35.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
   } =>#t35) as{TypeError} core::int*;
-  core::int* set30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:103:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+  core::int* set30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:105:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
  - 'Set' is from 'dart:core'.
       {...spread};
       ^" in ( block {
@@ -227,7 +227,7 @@
       #t36.{core::Set::add}{Invariant}(#t38){(core::int*) →* core::bool*};
     }
   } =>#t36) as{TypeError} core::int*;
-  core::int* map30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:106:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+  core::int* map30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:108:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
  - 'Map' is from 'dart:core'.
       {...mapSpread, \"baz\": 42};
       ^" in ( block {
@@ -236,7 +236,7 @@
       #t39.{core::Map::[]=}{Invariant}(#t40.{core::MapEntry::key}{core::String*}, #t40.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
     #t39.{core::Map::[]=}{Invariant}("baz", 42){(core::String*, core::int*) →* void};
   } =>#t39) as{TypeError} core::int*;
-  core::int* map30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:109:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+  core::int* map30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:111:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
  - 'Map' is from 'dart:core'.
       {...mapSpread};
       ^" in ( block {
@@ -244,57 +244,57 @@
     for (final core::MapEntry<core::String*, core::int*>* #t42 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>})
       #t41.{core::Map::[]=}{Invariant}(#t42.{core::MapEntry::key}{core::String*}, #t42.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
   } =>#t41) as{TypeError} core::int*;
-  core::List<dynamic>* lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:111:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  core::List<dynamic>* lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
                                      ^"];
   core::Set<dynamic>* set40 = block {
     final core::Set<dynamic>* #t43 = col::LinkedHashSet::•<dynamic>();
-    #t43.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+    #t43.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
                                     ^"){(dynamic) →* core::bool*};
   } =>#t43;
-  core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+  core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:117:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
                                                       ^": null};
-  core::List<dynamic>* lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:117:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+  core::List<dynamic>* lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
                                      ^"];
   core::Set<dynamic>* set50 = block {
     final core::Set<dynamic>* #t44 = col::LinkedHashSet::•<dynamic>();
-    #t44.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+    #t44.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
                                     ^"){(dynamic) →* core::bool*};
   } =>#t44;
-  core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
+  core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:123:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
                                                       ^": null};
-  core::List<core::String*>* lhs60 = <core::String*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:123:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  core::List<core::String*>* lhs60 = <core::String*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   List<String> lhs60 = <String>[...spread];
                                    ^"];
   core::Set<core::String*>* set60 = block {
     final core::Set<core::String*>* #t45 = col::LinkedHashSet::•<core::String*>();
-    #t45.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+    #t45.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   Set<String> set60 = <String>{...spread};
                                   ^"){(core::String*) →* core::bool*};
   } =>#t45;
-  core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:127:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+  core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:129:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
   Map<int, int> map60 = <int, int>{...mapSpread};
                                       ^": null};
-  core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:129:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+  core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
   Map<String, String> map61 = <String, String>{...mapSpread};
                                                   ^"};
-  core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
+  core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
   List<int> lhs70 = <int>[...null];
                              ^"];
   core::Set<core::int*>* set70 = block {
     final core::Set<core::int*>* #t46 = col::LinkedHashSet::•<core::int*>();
-    #t46.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
+    #t46.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
   Set<int> set70 = <int>{...null};
                             ^"){(core::int*) →* core::bool*};
   } =>#t46;
   core::Set<dynamic>* set71ambiguous = block {
     final core::Set<dynamic>* #t47 = col::LinkedHashSet::•<dynamic>();
-    #t47.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
+    #t47.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type 'Null'.
     ...null,
        ^"){(dynamic) →* core::bool*};
     for (final dynamic #t48 in <dynamic>[]) {
@@ -302,7 +302,7 @@
       #t47.{core::Set::add}{Invariant}(#t49){(dynamic) →* core::bool*};
     }
   } =>#t47;
-  core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
+  core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
   Map<String, int> map70 = <String, int>{...null};
                                             ^": null};
   core::List<core::int*>* lhs80 = block {
diff --git a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.modular.expect b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.modular.expect
index 470fbda..57142b1 100644
--- a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.modular.expect
@@ -2,93 +2,93 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:64:28: Error: Not enough type information to disambiguate between literal set and literal map.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:66:28: Error: Not enough type information to disambiguate between literal set and literal map.
 // Try providing type arguments for the literal explicitly to disambiguate it.
 //   dynamic map21ambiguous = {...(mapSpread as dynamic)};
 //                            ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:96:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:98:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
 //   dynamic map24ambiguous = {...spread, ...mapSpread};
 //                            ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:98:36: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:100:34: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
 //  - 'List' is from 'dart:core'.
-//   int lhs30 = /*@ typeArgs=int* */ [...spread];
-//                                    ^
+//   int lhs30 = /*@typeArgs=int**/ [...spread];
+//                                  ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:100:36: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:102:34: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
 //  - 'Set' is from 'dart:core'.
-//   int set30 = /*@ typeArgs=int* */ {...spread, 42};
-//                                    ^
+//   int set30 = /*@typeArgs=int**/ {...spread, 42};
+//                                  ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:103:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:105:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
 //  - 'Set' is from 'dart:core'.
 //       {...spread};
 //       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:106:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:108:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
 //  - 'Map' is from 'dart:core'.
 //       {...mapSpread, "baz": 42};
 //       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:109:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:111:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
 //  - 'Map' is from 'dart:core'.
 //       {...mapSpread};
 //       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:111:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:113:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
 //   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
 //                                      ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
 //   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
 //                                     ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:115:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:117:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
 //   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
 //                                                       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:117:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:119:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
 //   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
 //                                      ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
 //   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
 //                                     ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:121:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:123:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
 //   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
 //                                                       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:123:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:125:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
 //   List<String> lhs60 = <String>[...spread];
 //                                    ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
 //   Set<String> set60 = <String>{...spread};
 //                                   ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:127:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:129:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
 //   Map<int, int> map60 = <int, int>{...mapSpread};
 //                                       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:129:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:131:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
 //   Map<String, String> map61 = <String, String>{...mapSpread};
 //                                                   ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
 //   List<int> lhs70 = <int>[...null];
 //                              ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
 //   Set<int> set70 = <int>{...null};
 //                             ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type 'Null'.
 //     ...null,
 //        ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
 //   Map<String, int> map70 = <String, int>{...null};
 //                                             ^
 //
@@ -159,7 +159,7 @@
       #t18.{core::Map::[]=}{Invariant}(#t19.{core::MapEntry::key}{dynamic}, #t19.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) →* void};
     #t18.{core::Map::[]=}{Invariant}("baz", 42){(dynamic, dynamic) →* void};
   } =>#t18;
-  dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:64:28: Error: Not enough type information to disambiguate between literal set and literal map.
+  dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:66:28: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
   dynamic map21ambiguous = {...(mapSpread as dynamic)};
                            ^";
@@ -201,23 +201,23 @@
     for (final core::MapEntry<core::String*, core::List<core::int*>*>* #t33 in <core::String*, core::List<core::int*>*>{"baz": <core::int*>[]}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::List<core::int*>*>>})
       #t32.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}{core::String*}, #t33.{core::MapEntry::value}{core::List<core::int*>*}){(core::String*, core::List<core::int*>*) →* void};
   } =>#t32;
-  dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:96:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+  dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:98:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
   dynamic map24ambiguous = {...spread, ...mapSpread};
                            ^";
-  core::int* lhs30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:98:36: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+  core::int* lhs30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:100:34: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
  - 'List' is from 'dart:core'.
-  int lhs30 = /*@ typeArgs=int* */ [...spread];
-                                   ^" in ( block {
+  int lhs30 = /*@typeArgs=int**/ [...spread];
+                                 ^" in ( block {
     final core::List<core::int*>* #t34 = core::List::of<core::int*>(spread);
   } =>#t34) as{TypeError} core::int*;
-  core::int* set30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:100:36: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+  core::int* set30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:102:34: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
  - 'Set' is from 'dart:core'.
-  int set30 = /*@ typeArgs=int* */ {...spread, 42};
-                                   ^" in ( block {
+  int set30 = /*@typeArgs=int**/ {...spread, 42};
+                                 ^" in ( block {
     final core::Set<core::int*>* #t35 = col::LinkedHashSet::of<core::int*>(spread);
     #t35.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
   } =>#t35) as{TypeError} core::int*;
-  core::int* set30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:103:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+  core::int* set30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:105:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
  - 'Set' is from 'dart:core'.
       {...spread};
       ^" in ( block {
@@ -227,7 +227,7 @@
       #t36.{core::Set::add}{Invariant}(#t38){(core::int*) →* core::bool*};
     }
   } =>#t36) as{TypeError} core::int*;
-  core::int* map30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:106:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+  core::int* map30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:108:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
  - 'Map' is from 'dart:core'.
       {...mapSpread, \"baz\": 42};
       ^" in ( block {
@@ -236,7 +236,7 @@
       #t39.{core::Map::[]=}{Invariant}(#t40.{core::MapEntry::key}{core::String*}, #t40.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
     #t39.{core::Map::[]=}{Invariant}("baz", 42){(core::String*, core::int*) →* void};
   } =>#t39) as{TypeError} core::int*;
-  core::int* map30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:109:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+  core::int* map30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:111:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
  - 'Map' is from 'dart:core'.
       {...mapSpread};
       ^" in ( block {
@@ -244,57 +244,57 @@
     for (final core::MapEntry<core::String*, core::int*>* #t42 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, core::int*>>})
       #t41.{core::Map::[]=}{Invariant}(#t42.{core::MapEntry::key}{core::String*}, #t42.{core::MapEntry::value}{core::int*}){(core::String*, core::int*) →* void};
   } =>#t41) as{TypeError} core::int*;
-  core::List<dynamic>* lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:111:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  core::List<dynamic>* lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
                                      ^"];
   core::Set<dynamic>* set40 = block {
     final core::Set<dynamic>* #t43 = col::LinkedHashSet::•<dynamic>();
-    #t43.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+    #t43.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
                                     ^"){(dynamic) →* core::bool*};
   } =>#t43;
-  core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+  core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:117:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
                                                       ^": null};
-  core::List<dynamic>* lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:117:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+  core::List<dynamic>* lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
                                      ^"];
   core::Set<dynamic>* set50 = block {
     final core::Set<dynamic>* #t44 = col::LinkedHashSet::•<dynamic>();
-    #t44.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+    #t44.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
                                     ^"){(dynamic) →* core::bool*};
   } =>#t44;
-  core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
+  core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:123:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
                                                       ^": null};
-  core::List<core::String*>* lhs60 = <core::String*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:123:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  core::List<core::String*>* lhs60 = <core::String*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   List<String> lhs60 = <String>[...spread];
                                    ^"];
   core::Set<core::String*>* set60 = block {
     final core::Set<core::String*>* #t45 = col::LinkedHashSet::•<core::String*>();
-    #t45.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+    #t45.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   Set<String> set60 = <String>{...spread};
                                   ^"){(core::String*) →* core::bool*};
   } =>#t45;
-  core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:127:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+  core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:129:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
   Map<int, int> map60 = <int, int>{...mapSpread};
                                       ^": null};
-  core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:129:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+  core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
   Map<String, String> map61 = <String, String>{...mapSpread};
                                                   ^"};
-  core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
+  core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
   List<int> lhs70 = <int>[...null];
                              ^"];
   core::Set<core::int*>* set70 = block {
     final core::Set<core::int*>* #t46 = col::LinkedHashSet::•<core::int*>();
-    #t46.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
+    #t46.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
   Set<int> set70 = <int>{...null};
                             ^"){(core::int*) →* core::bool*};
   } =>#t46;
   core::Set<dynamic>* set71ambiguous = block {
     final core::Set<dynamic>* #t47 = col::LinkedHashSet::•<dynamic>();
-    #t47.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
+    #t47.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type 'Null'.
     ...null,
        ^"){(dynamic) →* core::bool*};
     for (final dynamic #t48 in <dynamic>[]) {
@@ -302,7 +302,7 @@
       #t47.{core::Set::add}{Invariant}(#t49){(dynamic) →* core::bool*};
     }
   } =>#t47;
-  core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
+  core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
   Map<String, int> map70 = <String, int>{...null};
                                             ^": null};
   core::List<core::int*>* lhs80 = block {
diff --git a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect
index a1ed2c2..fe13a59 100644
--- a/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/spread_collection_inference.dart.weak.transformed.expect
@@ -2,93 +2,93 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:64:28: Error: Not enough type information to disambiguate between literal set and literal map.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:66:28: Error: Not enough type information to disambiguate between literal set and literal map.
 // Try providing type arguments for the literal explicitly to disambiguate it.
 //   dynamic map21ambiguous = {...(mapSpread as dynamic)};
 //                            ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:96:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:98:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
 //   dynamic map24ambiguous = {...spread, ...mapSpread};
 //                            ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:98:36: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:100:34: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
 //  - 'List' is from 'dart:core'.
-//   int lhs30 = /*@ typeArgs=int* */ [...spread];
-//                                    ^
+//   int lhs30 = /*@typeArgs=int**/ [...spread];
+//                                  ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:100:36: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:102:34: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
 //  - 'Set' is from 'dart:core'.
-//   int set30 = /*@ typeArgs=int* */ {...spread, 42};
-//                                    ^
+//   int set30 = /*@typeArgs=int**/ {...spread, 42};
+//                                  ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:103:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:105:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
 //  - 'Set' is from 'dart:core'.
 //       {...spread};
 //       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:106:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:108:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
 //  - 'Map' is from 'dart:core'.
 //       {...mapSpread, "baz": 42};
 //       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:109:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:111:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
 //  - 'Map' is from 'dart:core'.
 //       {...mapSpread};
 //       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:111:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:113:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
 //   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
 //                                      ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
 //   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
 //                                     ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:115:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:117:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
 //   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
 //                                                       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:117:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:119:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
 //   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
 //                                      ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
 //   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
 //                                     ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:121:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:123:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
 //   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
 //                                                       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:123:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:125:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
 //   List<String> lhs60 = <String>[...spread];
 //                                    ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
 //   Set<String> set60 = <String>{...spread};
 //                                   ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:127:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:129:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
 //   Map<int, int> map60 = <int, int>{...mapSpread};
 //                                       ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:129:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:131:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
 //   Map<String, String> map61 = <String, String>{...mapSpread};
 //                                                   ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
 //   List<int> lhs70 = <int>[...null];
 //                              ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
 //   Set<int> set70 = <int>{...null};
 //                             ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type 'Null'.
 //     ...null,
 //        ^
 //
-// pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
+// pkg/front_end/testcases/general/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
 //   Map<String, int> map70 = <String, int>{...null};
 //                                             ^
 //
@@ -190,7 +190,7 @@
     }
     #t18.{core::Map::[]=}{Invariant}("baz", 42){(dynamic, dynamic) →* void};
   } =>#t18;
-  dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:64:28: Error: Not enough type information to disambiguate between literal set and literal map.
+  dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:66:28: Error: Not enough type information to disambiguate between literal set and literal map.
 Try providing type arguments for the literal explicitly to disambiguate it.
   dynamic map21ambiguous = {...(mapSpread as dynamic)};
                            ^";
@@ -254,23 +254,23 @@
       }
     }
   } =>#t32;
-  dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:96:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+  dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:98:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
   dynamic map24ambiguous = {...spread, ...mapSpread};
                            ^";
-  core::int* lhs30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:98:36: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+  core::int* lhs30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:100:34: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
  - 'List' is from 'dart:core'.
-  int lhs30 = /*@ typeArgs=int* */ [...spread];
-                                   ^" in ( block {
+  int lhs30 = /*@typeArgs=int**/ [...spread];
+                                 ^" in ( block {
     final core::List<core::int*>* #t34 = core::List::of<core::int*>(spread);
   } =>#t34) as{TypeError} core::int*;
-  core::int* set30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:100:36: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+  core::int* set30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:102:34: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
  - 'Set' is from 'dart:core'.
-  int set30 = /*@ typeArgs=int* */ {...spread, 42};
-                                   ^" in ( block {
+  int set30 = /*@typeArgs=int**/ {...spread, 42};
+                                 ^" in ( block {
     final core::Set<core::int*>* #t35 = col::LinkedHashSet::of<core::int*>(spread);
     #t35.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
   } =>#t35) as{TypeError} core::int*;
-  core::int* set30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:103:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+  core::int* set30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:105:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
  - 'Set' is from 'dart:core'.
       {...spread};
       ^" in ( block {
@@ -286,7 +286,7 @@
       }
     }
   } =>#t36) as{TypeError} core::int*;
-  core::int* map30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:106:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+  core::int* map30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:108:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
  - 'Map' is from 'dart:core'.
       {...mapSpread, \"baz\": 42};
       ^" in ( block {
@@ -300,7 +300,7 @@
     }
     #t39.{core::Map::[]=}{Invariant}("baz", 42){(core::String*, core::int*) →* void};
   } =>#t39) as{TypeError} core::int*;
-  core::int* map30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:109:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+  core::int* map30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:111:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
  - 'Map' is from 'dart:core'.
       {...mapSpread};
       ^" in ( block {
@@ -313,57 +313,57 @@
       }
     }
   } =>#t41) as{TypeError} core::int*;
-  core::List<dynamic>* lhs40 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:111:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  core::List<dynamic>* lhs40 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
                                      ^");
   core::Set<dynamic>* set40 = block {
     final core::Set<dynamic>* #t43 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t43.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:113:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+    #t43.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
                                     ^"){(dynamic) →* core::bool*};
   } =>#t43;
-  core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:115:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+  core::Map<dynamic, dynamic>* map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:117:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
                                                       ^": null};
-  core::List<dynamic>* lhs50 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:117:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+  core::List<dynamic>* lhs50 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:38: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
                                      ^");
   core::Set<dynamic>* set50 = block {
     final core::Set<dynamic>* #t44 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t44.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:119:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
+    #t44.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:37: Error: Unexpected type 'int Function()' of a spread.  Expected 'dynamic' or an Iterable.
   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
                                     ^"){(dynamic) →* core::bool*};
   } =>#t44;
-  core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:121:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
+  core::Map<dynamic, dynamic>* map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:123:55: Error: Unexpected type 'int Function()' of a map spread entry.  Expected 'dynamic' or a Map.
   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
                                                       ^": null};
-  core::List<core::String*>* lhs60 = core::_GrowableList::_literal1<core::String*>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:123:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  core::List<core::String*>* lhs60 = core::_GrowableList::_literal1<core::String*>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   List<String> lhs60 = <String>[...spread];
                                    ^");
   core::Set<core::String*>* set60 = block {
     final core::Set<core::String*>* #t45 = new col::_CompactLinkedHashSet::•<core::String*>();
-    #t45.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:125:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+    #t45.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:127:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
   Set<String> set60 = <String>{...spread};
                                   ^"){(core::String*) →* core::bool*};
   } =>#t45;
-  core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:127:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+  core::Map<core::int*, core::int*>* map60 = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:129:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
   Map<int, int> map60 = <int, int>{...mapSpread};
                                       ^": null};
-  core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:129:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+  core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
   Map<String, String> map61 = <String, String>{...mapSpread};
                                                   ^"};
-  core::List<core::int*>* lhs70 = core::_GrowableList::_literal1<core::int*>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
+  core::List<core::int*>* lhs70 = core::_GrowableList::_literal1<core::int*>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
   List<int> lhs70 = <int>[...null];
                              ^");
   core::Set<core::int*>* set70 = block {
     final core::Set<core::int*>* #t46 = new col::_CompactLinkedHashSet::•<core::int*>();
-    #t46.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
+    #t46.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
   Set<int> set70 = <int>{...null};
                             ^"){(core::int*) →* core::bool*};
   } =>#t46;
   core::Set<dynamic>* set71ambiguous = block {
     final core::Set<dynamic>* #t47 = new col::_CompactLinkedHashSet::•<dynamic>();
-    #t47.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
+    #t47.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type 'Null'.
     ...null,
        ^"){(dynamic) →* core::bool*};
     {
@@ -377,7 +377,7 @@
       }
     }
   } =>#t47;
-  core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
+  core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
   Map<String, int> map70 = <String, int>{...null};
                                             ^": null};
   core::List<core::int*>* lhs80 = block {
diff --git a/pkg/front_end/testcases/general/spread_collection_inference2.dart b/pkg/front_end/testcases/general/spread_collection_inference2.dart
new file mode 100644
index 0000000..d642c27
--- /dev/null
+++ b/pkg/front_end/testcases/general/spread_collection_inference2.dart
@@ -0,0 +1,162 @@
+// 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.
+
+// This test case checks that inference works for spread collections, and that
+// the errors are reported when necessary.
+
+/*@testedFeatures=inference*/
+
+Map<K, V> bar<K, V>() => throw '';
+
+foo(dynamic dynVar) {
+  List<int> spread = <int>[1, 2, 3];
+  Map<String, int> mapSpread = <String, int>{"foo": 4, "bar": 2};
+  int notSpreadInt = 42;
+  int Function()? notSpreadFunction = null;
+  // Note that all values are actually ints.
+  Map<int, num> mapIntNum = <int, num>{42: 42};
+  List<num> listNum = <num>[42];
+
+  var /*@type=List<dynamic>*/ lhs10 = /*@ typeArgs=dynamic */ [
+    ... /*@ typeArgs=dynamic */ []
+  ];
+
+  var /*@type=Set<dynamic>*/ set10 = <dynamic>{... /*@ typeArgs=dynamic */ []};
+
+  var /*@type=Map<dynamic, dynamic>*/ map10 = <dynamic, dynamic>{
+    ... /*@ typeArgs=dynamic, dynamic */ {}
+  };
+
+  var /*@type=Map<dynamic, dynamic>*/ map10ambiguous =
+      /*@ typeArgs=dynamic, dynamic */ {
+    ... /*@ typeArgs=dynamic, dynamic */ {}
+  };
+
+  var /*@type=List<int>*/ lhs20 = /*@typeArgs=int*/ [...spread];
+
+  var /*@type=Set<int>*/ set20 = /*@typeArgs=int*/ {...spread, 42};
+
+  var /*@type=Set<int>*/ set20ambiguous = /*@typeArgs=int*/ {...spread};
+
+  var /*@type=Map<String, int>*/ map20 = /*@typeArgs=String, int*/
+      {...mapSpread, "baz": 42};
+
+  var /*@type=Map<String, int>*/ map20ambiguous = /*@typeArgs=String, int*/
+      {...mapSpread};
+
+  var /*@type=List<dynamic>*/ lhs21 = /*@ typeArgs=dynamic */ [
+    ...(spread as dynamic)
+  ];
+
+  var /*@type=Set<dynamic>*/ set21 = /*@ typeArgs=dynamic */ {
+    ...(spread as dynamic),
+    42
+  };
+
+  var /*@type=Map<dynamic, dynamic>*/ map21 = /*@ typeArgs=dynamic, dynamic */
+      {...(mapSpread as dynamic), "baz": 42};
+
+  dynamic map21ambiguous = {...(mapSpread as dynamic)};
+
+  List<int> lhs22 = /*@typeArgs=int*/ [... /*@typeArgs=int*/ []];
+
+  Set<int> set22 = /*@typeArgs=int*/ {... /*@typeArgs=int*/ [], 42};
+
+  Set<int> set22ambiguous = /*@typeArgs=int*/ {... /*@typeArgs=int*/ []};
+
+  Map<String, int> map22 = /*@typeArgs=String, int*/
+      {... /*@typeArgs=String, int*/ {}};
+
+  List<List<int>> lhs23 = /*@typeArgs=List<int>*/ [
+    ... /*@typeArgs=List<int>*/
+    [/*@typeArgs=int*/ []]
+  ];
+
+  Set<List<int>> set23 = /*@typeArgs=List<int>*/ {
+    ... /*@typeArgs=List<int>*/
+    [/*@typeArgs=int*/ []],
+    <int>[42]
+  };
+
+  Set<List<int>> set23ambiguous = /*@typeArgs=List<int>*/
+      {
+    ... /*@typeArgs=List<int>*/ [/*@typeArgs=int*/ []]
+  };
+
+  Map<String, List<int>> map23 = /*@typeArgs=String, List<int>*/
+      {
+    ... /*@typeArgs=String, List<int>*/ {"baz": /*@typeArgs=int*/ [] }
+  };
+
+  dynamic map24ambiguous = {...spread, ...mapSpread};
+
+  int lhs30 = /*@typeArgs=int*/ [...spread];
+
+  int set30 = /*@typeArgs=int*/ {...spread, 42};
+
+  int set30ambiguous = /*@typeArgs=int*/
+      {...spread};
+
+  int map30 = /*@typeArgs=String, int*/
+      {...mapSpread, "baz": 42};
+
+  int map30ambiguous = /*@typeArgs=String, int*/
+      {...mapSpread};
+
+  List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
+
+  Set<dynamic> set40 = <dynamic>{...notSpreadInt};
+
+  Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
+
+  List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+
+  Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+
+  Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
+
+  List<String> lhs60 = <String>[...spread];
+
+  Set<String> set60 = <String>{...spread};
+
+  Map<int, int> map60 = <int, int>{...mapSpread};
+
+  Map<String, String> map61 = <String, String>{...mapSpread};
+
+  List<int> lhs70 = <int>[...null];
+
+  Set<int> set70 = <int>{...null};
+
+  var /*@type=Set<dynamic>*/ set71ambiguous = /*@ typeArgs=dynamic */
+      {
+    ...null,
+    ... /*@ typeArgs=dynamic */
+    []
+  };
+
+  Map<String, int> map70 = <String, int>{...null};
+
+  List<int> lhs80 = <int>[...?null];
+
+  Set<int> set80 = <int>{...?null};
+
+  var /*@type=Set<dynamic>*/ set81ambiguous = /*@ typeArgs=dynamic */
+      {...?null, ... /*@ typeArgs=dynamic */ []};
+
+  Map<String, int> map80 = <String, int>{...?null};
+
+  var /*@type=Map<String, int>*/ map90 = <String, int>{
+    ... /*@typeArgs=String, int*/ bar()
+  };
+
+  List<int> list100 = <int>[...listNum];
+
+  Map<num, int> map100 = <num, int>{...mapIntNum};
+
+  List<int> list110 = <int>[...dynVar];
+
+  Map<num, int> map110 = <num, int>{...dynVar};
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/spread_collection_inference2.dart.textual_outline.expect b/pkg/front_end/testcases/general/spread_collection_inference2.dart.textual_outline.expect
new file mode 100644
index 0000000..1bf0e63
--- /dev/null
+++ b/pkg/front_end/testcases/general/spread_collection_inference2.dart.textual_outline.expect
@@ -0,0 +1,3 @@
+Map<K, V> bar<K, V>() => throw '';
+foo(dynamic dynVar) {}
+main() {}
diff --git a/pkg/front_end/testcases/general/spread_collection_inference2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/spread_collection_inference2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..1bf0e63
--- /dev/null
+++ b/pkg/front_end/testcases/general/spread_collection_inference2.dart.textual_outline_modelled.expect
@@ -0,0 +1,3 @@
+Map<K, V> bar<K, V>() => throw '';
+foo(dynamic dynVar) {}
+main() {}
diff --git a/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.expect b/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.expect
new file mode 100644
index 0000000..a27706e
--- /dev/null
+++ b/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.expect
@@ -0,0 +1,383 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:60:28: Error: Not enough type information to disambiguate between literal set and literal map.
+// Try providing type arguments for the literal explicitly to disambiguate it.
+//   dynamic map21ambiguous = {...(mapSpread as dynamic)};
+//                            ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:92:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+//   dynamic map24ambiguous = {...spread, ...mapSpread};
+//                            ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:94:33: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+//  - 'List' is from 'dart:core'.
+//   int lhs30 = /*@typeArgs=int*/ [...spread];
+//                                 ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:96:33: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+//  - 'Set' is from 'dart:core'.
+//   int set30 = /*@typeArgs=int*/ {...spread, 42};
+//                                 ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:99:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+//  - 'Set' is from 'dart:core'.
+//       {...spread};
+//       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:102:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+//  - 'Map' is from 'dart:core'.
+//       {...mapSpread, "baz": 42};
+//       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:105:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+//  - 'Map' is from 'dart:core'.
+//       {...mapSpread};
+//       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:107:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+//   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
+//                                      ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:109:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+//   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
+//                                     ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:111:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+//   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
+//                                                       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:113:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+//   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+//                                      ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:113:38: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+//   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+//                                      ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:115:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+//   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+//                                     ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:115:37: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+//   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+//                                     ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:117:55: Error: Unexpected type 'int Function()?' of a map spread entry.  Expected 'dynamic' or a Map.
+//   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
+//                                                       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:119:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+//   List<String> lhs60 = <String>[...spread];
+//                                    ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:121:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+//   Set<String> set60 = <String>{...spread};
+//                                   ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:123:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+//   Map<int, int> map60 = <int, int>{...mapSpread};
+//                                       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:125:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+//   Map<String, String> map61 = <String, String>{...mapSpread};
+//                                                   ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:127:30: Error: Can't spread a value with static type 'Null'.
+//   List<int> lhs70 = <int>[...null];
+//                              ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:129:29: Error: Can't spread a value with static type 'Null'.
+//   Set<int> set70 = <int>{...null};
+//                             ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:133:8: Error: Can't spread a value with static type 'Null'.
+//     ...null,
+//        ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:138:45: Error: Can't spread a value with static type 'Null'.
+//   Map<String, int> map70 = <String, int>{...null};
+//                                             ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:153:32: Error: Can't assign spread elements of type 'num' to collection elements of type 'int'.
+//   List<int> list100 = <int>[...listNum];
+//                                ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:155:40: Error: Can't assign spread entry values of type 'num' to map entry values of type 'int'.
+//   Map<num, int> map100 = <num, int>{...mapIntNum};
+//                                        ^
+//
+import self as self;
+import "dart:core" as core;
+import "dart:collection" as col;
+
+static method bar<K extends core::Object? = dynamic, V extends core::Object? = dynamic>() → core::Map<self::bar::K%, self::bar::V%>
+  return throw "";
+static method foo(dynamic dynVar) → dynamic {
+  core::List<core::int> spread = <core::int>[1, 2, 3];
+  core::Map<core::String, core::int> mapSpread = <core::String, core::int>{"foo": 4, "bar": 2};
+  core::int notSpreadInt = 42;
+  () →? core::int notSpreadFunction = null;
+  core::Map<core::int, core::num> mapIntNum = <core::int, core::num>{42: 42};
+  core::List<core::num> listNum = <core::num>[42];
+  core::List<dynamic> lhs10 = block {
+    final core::List<dynamic> #t1 = core::List::of<dynamic>(<dynamic>[]);
+  } =>#t1;
+  core::Set<dynamic> set10 = block {
+    final core::Set<dynamic> #t2 = col::LinkedHashSet::of<dynamic>(<dynamic>[]);
+  } =>#t2;
+  core::Map<dynamic, dynamic> map10 = block {
+    final core::Map<dynamic, dynamic> #t3 = <dynamic, dynamic>{};
+    for (final core::MapEntry<dynamic, dynamic> #t4 in <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>})
+      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}{dynamic}, #t4.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
+  } =>#t3;
+  core::Map<dynamic, dynamic> map10ambiguous = block {
+    final core::Map<dynamic, dynamic> #t5 = <dynamic, dynamic>{};
+    for (final core::MapEntry<dynamic, dynamic> #t6 in <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>})
+      #t5.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}{dynamic}, #t6.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
+  } =>#t5;
+  core::List<core::int> lhs20 = block {
+    final core::List<core::int> #t7 = core::List::of<core::int>(spread);
+  } =>#t7;
+  core::Set<core::int> set20 = block {
+    final core::Set<core::int> #t8 = col::LinkedHashSet::of<core::int>(spread);
+    #t8.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
+  } =>#t8;
+  core::Set<core::int> set20ambiguous = block {
+    final core::Set<core::int> #t9 = col::LinkedHashSet::•<core::int>();
+    for (final dynamic #t10 in spread) {
+      final core::int #t11 = #t10 as{TypeError,ForNonNullableByDefault} core::int;
+      #t9.{core::Set::add}{Invariant}(#t11){(core::int) → core::bool};
+    }
+  } =>#t9;
+  core::Map<core::String, core::int> map20 = block {
+    final core::Map<core::String, core::int> #t12 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t13 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t12.{core::Map::[]=}{Invariant}(#t13.{core::MapEntry::key}{core::String}, #t13.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+    #t12.{core::Map::[]=}{Invariant}("baz", 42){(core::String, core::int) → void};
+  } =>#t12;
+  core::Map<core::String, core::int> map20ambiguous = block {
+    final core::Map<core::String, core::int> #t14 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t15 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t14.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}{core::String}, #t15.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t14;
+  core::List<dynamic> lhs21 = block {
+    final core::List<dynamic> #t16 = core::List::of<dynamic>((spread as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  } =>#t16;
+  core::Set<dynamic> set21 = block {
+    final core::Set<dynamic> #t17 = col::LinkedHashSet::of<dynamic>((spread as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+    #t17.{core::Set::add}{Invariant}(42){(dynamic) → core::bool};
+  } =>#t17;
+  core::Map<dynamic, dynamic> map21 = block {
+    final core::Map<dynamic, dynamic> #t18 = <dynamic, dynamic>{};
+    for (final core::MapEntry<dynamic, dynamic> #t19 in ((mapSpread as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>})
+      #t18.{core::Map::[]=}{Invariant}(#t19.{core::MapEntry::key}{dynamic}, #t19.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
+    #t18.{core::Map::[]=}{Invariant}("baz", 42){(dynamic, dynamic) → void};
+  } =>#t18;
+  dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:60:28: Error: Not enough type information to disambiguate between literal set and literal map.
+Try providing type arguments for the literal explicitly to disambiguate it.
+  dynamic map21ambiguous = {...(mapSpread as dynamic)};
+                           ^";
+  core::List<core::int> lhs22 = block {
+    final core::List<core::int> #t20 = core::List::of<core::int>(<core::int>[]);
+  } =>#t20;
+  core::Set<core::int> set22 = block {
+    final core::Set<core::int> #t21 = col::LinkedHashSet::of<core::int>(<core::int>[]);
+    #t21.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
+  } =>#t21;
+  core::Set<core::int> set22ambiguous = block {
+    final core::Set<core::int> #t22 = col::LinkedHashSet::•<core::int>();
+    for (final dynamic #t23 in <core::int>[]) {
+      final core::int #t24 = #t23 as{TypeError,ForNonNullableByDefault} core::int;
+      #t22.{core::Set::add}{Invariant}(#t24){(core::int) → core::bool};
+    }
+  } =>#t22;
+  core::Map<core::String, core::int> map22 = block {
+    final core::Map<core::String, core::int> #t25 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t26 in <core::String, core::int>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t25.{core::Map::[]=}{Invariant}(#t26.{core::MapEntry::key}{core::String}, #t26.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t25;
+  core::List<core::List<core::int>> lhs23 = block {
+    final core::List<core::List<core::int>> #t27 = core::List::of<core::List<core::int>>(<core::List<core::int>>[<core::int>[]]);
+  } =>#t27;
+  core::Set<core::List<core::int>> set23 = block {
+    final core::Set<core::List<core::int>> #t28 = col::LinkedHashSet::of<core::List<core::int>>(<core::List<core::int>>[<core::int>[]]);
+    #t28.{core::Set::add}{Invariant}(<core::int>[42]){(core::List<core::int>) → core::bool};
+  } =>#t28;
+  core::Set<core::List<core::int>> set23ambiguous = block {
+    final core::Set<core::List<core::int>> #t29 = col::LinkedHashSet::•<core::List<core::int>>();
+    for (final dynamic #t30 in <core::List<core::int>>[<core::int>[]]) {
+      final core::List<core::int> #t31 = #t30 as{TypeError,ForNonNullableByDefault} core::List<core::int>;
+      #t29.{core::Set::add}{Invariant}(#t31){(core::List<core::int>) → core::bool};
+    }
+  } =>#t29;
+  core::Map<core::String, core::List<core::int>> map23 = block {
+    final core::Map<core::String, core::List<core::int>> #t32 = <core::String, core::List<core::int>>{};
+    for (final core::MapEntry<core::String, core::List<core::int>> #t33 in <core::String, core::List<core::int>>{"baz": <core::int>[]}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::List<core::int>>>})
+      #t32.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}{core::String}, #t33.{core::MapEntry::value}{core::List<core::int>}){(core::String, core::List<core::int>) → void};
+  } =>#t32;
+  dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:92:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+  dynamic map24ambiguous = {...spread, ...mapSpread};
+                           ^";
+  core::int lhs30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:94:33: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+ - 'List' is from 'dart:core'.
+  int lhs30 = /*@typeArgs=int*/ [...spread];
+                                ^" in ( block {
+    final core::List<core::int> #t34 = core::List::of<core::int>(spread);
+  } =>#t34) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int set30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:96:33: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+ - 'Set' is from 'dart:core'.
+  int set30 = /*@typeArgs=int*/ {...spread, 42};
+                                ^" in ( block {
+    final core::Set<core::int> #t35 = col::LinkedHashSet::of<core::int>(spread);
+    #t35.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
+  } =>#t35) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int set30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:99:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+ - 'Set' is from 'dart:core'.
+      {...spread};
+      ^" in ( block {
+    final core::Set<core::int> #t36 = col::LinkedHashSet::•<core::int>();
+    for (final dynamic #t37 in spread) {
+      final core::int #t38 = #t37 as{TypeError,ForNonNullableByDefault} core::int;
+      #t36.{core::Set::add}{Invariant}(#t38){(core::int) → core::bool};
+    }
+  } =>#t36) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int map30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:102:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+ - 'Map' is from 'dart:core'.
+      {...mapSpread, \"baz\": 42};
+      ^" in ( block {
+    final core::Map<core::String, core::int> #t39 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t40 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t39.{core::Map::[]=}{Invariant}(#t40.{core::MapEntry::key}{core::String}, #t40.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+    #t39.{core::Map::[]=}{Invariant}("baz", 42){(core::String, core::int) → void};
+  } =>#t39) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int map30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:105:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+ - 'Map' is from 'dart:core'.
+      {...mapSpread};
+      ^" in ( block {
+    final core::Map<core::String, core::int> #t41 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t42 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t41.{core::Map::[]=}{Invariant}(#t42.{core::MapEntry::key}{core::String}, #t42.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t41) as{TypeError,ForNonNullableByDefault} core::int;
+  core::List<dynamic> lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:107:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
+                                     ^"];
+  core::Set<dynamic> set40 = block {
+    final core::Set<dynamic> #t43 = col::LinkedHashSet::•<dynamic>();
+    #t43.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:109:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  Set<dynamic> set40 = <dynamic>{...notSpreadInt};
+                                    ^"){(dynamic) → core::bool};
+  } =>#t43;
+  core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:111:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+  Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
+                                                      ^": null};
+  core::List<dynamic> lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:113:38: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+  List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+                                     ^"];
+  core::Set<dynamic> set50 = block {
+    final core::Set<dynamic> #t44 = col::LinkedHashSet::•<dynamic>();
+    #t44.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:115:37: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+  Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+                                    ^"){(dynamic) → core::bool};
+  } =>#t44;
+  core::Map<dynamic, dynamic> map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:117:55: Error: Unexpected type 'int Function()?' of a map spread entry.  Expected 'dynamic' or a Map.
+  Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
+                                                      ^": null};
+  core::List<core::String> lhs60 = <core::String>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:119:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  List<String> lhs60 = <String>[...spread];
+                                   ^"];
+  core::Set<core::String> set60 = block {
+    final core::Set<core::String> #t45 = col::LinkedHashSet::•<core::String>();
+    #t45.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:121:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  Set<String> set60 = <String>{...spread};
+                                  ^"){(core::String) → core::bool};
+  } =>#t45;
+  core::Map<core::int, core::int> map60 = <core::int, core::int>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:123:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+  Map<int, int> map60 = <int, int>{...mapSpread};
+                                      ^": null};
+  core::Map<core::String, core::String> map61 = <core::String, core::String>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:125:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+  Map<String, String> map61 = <String, String>{...mapSpread};
+                                                  ^"};
+  core::List<core::int> lhs70 = <core::int>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:127:30: Error: Can't spread a value with static type 'Null'.
+  List<int> lhs70 = <int>[...null];
+                             ^"];
+  core::Set<core::int> set70 = block {
+    final core::Set<core::int> #t46 = col::LinkedHashSet::•<core::int>();
+    #t46.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:129:29: Error: Can't spread a value with static type 'Null'.
+  Set<int> set70 = <int>{...null};
+                            ^"){(core::int) → core::bool};
+  } =>#t46;
+  core::Set<dynamic> set71ambiguous = block {
+    final core::Set<dynamic> #t47 = col::LinkedHashSet::•<dynamic>();
+    #t47.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:133:8: Error: Can't spread a value with static type 'Null'.
+    ...null,
+       ^"){(dynamic) → core::bool};
+    for (final dynamic #t48 in <dynamic>[]) {
+      final dynamic #t49 = #t48 as{TypeError,ForNonNullableByDefault} dynamic;
+      #t47.{core::Set::add}{Invariant}(#t49){(dynamic) → core::bool};
+    }
+  } =>#t47;
+  core::Map<core::String, core::int> map70 = <core::String, core::int>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:138:45: Error: Can't spread a value with static type 'Null'.
+  Map<String, int> map70 = <String, int>{...null};
+                                            ^": null};
+  core::List<core::int> lhs80 = block {
+    final core::List<core::int> #t50 = <core::int>[];
+    final core::Iterable<core::int>? #t51 = null;
+    if(!(#t51 == null))
+      #t50.{core::List::addAll}{Invariant}(#t51{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+  } =>#t50;
+  core::Set<core::int> set80 = block {
+    final core::Set<core::int> #t52 = col::LinkedHashSet::•<core::int>();
+    final core::Iterable<core::int>? #t53 = null;
+    if(!(#t53 == null))
+      #t52.{core::Set::addAll}{Invariant}(#t53{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+  } =>#t52;
+  core::Set<dynamic> set81ambiguous = block {
+    final core::Set<dynamic> #t54 = col::LinkedHashSet::•<dynamic>();
+    final core::Iterable<dynamic>? #t55 = null;
+    if(!(#t55 == null))
+      for (final dynamic #t56 in #t55{core::Iterable<dynamic>}) {
+        final dynamic #t57 = #t56 as{TypeError,ForNonNullableByDefault} dynamic;
+        #t54.{core::Set::add}{Invariant}(#t57){(dynamic) → core::bool};
+      }
+    for (final dynamic #t58 in <dynamic>[]) {
+      final dynamic #t59 = #t58 as{TypeError,ForNonNullableByDefault} dynamic;
+      #t54.{core::Set::add}{Invariant}(#t59){(dynamic) → core::bool};
+    }
+  } =>#t54;
+  core::Map<core::String, core::int> map80 = block {
+    final core::Map<core::String, core::int> #t60 = <core::String, core::int>{};
+    final core::Map<core::String, core::int>? #t61 = null;
+    if(!(#t61 == null))
+      for (final core::MapEntry<core::String, core::int> #t62 in #t61{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+        #t60.{core::Map::[]=}{Invariant}(#t62.{core::MapEntry::key}{core::String}, #t62.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t60;
+  core::Map<core::String, core::int> map90 = block {
+    final core::Map<core::String, core::int> #t63 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t64 in self::bar<core::String, core::int>().{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t63.{core::Map::[]=}{Invariant}(#t64.{core::MapEntry::key}{core::String}, #t64.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t63;
+  core::List<core::int> list100 = <core::int>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:153:32: Error: Can't assign spread elements of type 'num' to collection elements of type 'int'.
+  List<int> list100 = <int>[...listNum];
+                               ^"];
+  core::Map<core::num, core::int> map100 = <core::num, core::int>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:155:40: Error: Can't assign spread entry values of type 'num' to map entry values of type 'int'.
+  Map<num, int> map100 = <num, int>{...mapIntNum};
+                                       ^"};
+  core::List<core::int> list110 = block {
+    final core::List<core::int> #t65 = <core::int>[];
+    for (final dynamic #t66 in dynVar as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
+      final core::int #t67 = #t66 as{TypeError,ForNonNullableByDefault} core::int;
+      #t65.{core::List::add}{Invariant}(#t67){(core::int) → void};
+    }
+  } =>#t65;
+  core::Map<core::num, core::int> map110 = block {
+    final core::Map<core::num, core::int> #t68 = <core::num, core::int>{};
+    for (final core::MapEntry<dynamic, dynamic> #t69 in (dynVar as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<core::num, core::int>>}) {
+      final core::num #t70 = #t69.{core::MapEntry::key}{dynamic} as{TypeError,ForNonNullableByDefault} core::num;
+      final core::int #t71 = #t69.{core::MapEntry::value}{dynamic} as{TypeError,ForNonNullableByDefault} core::int;
+      #t68.{core::Map::[]=}{Invariant}(#t70, #t71){(core::num, core::int) → void};
+    }
+  } =>#t68;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.modular.expect b/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.modular.expect
new file mode 100644
index 0000000..a27706e
--- /dev/null
+++ b/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.modular.expect
@@ -0,0 +1,383 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:60:28: Error: Not enough type information to disambiguate between literal set and literal map.
+// Try providing type arguments for the literal explicitly to disambiguate it.
+//   dynamic map21ambiguous = {...(mapSpread as dynamic)};
+//                            ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:92:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+//   dynamic map24ambiguous = {...spread, ...mapSpread};
+//                            ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:94:33: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+//  - 'List' is from 'dart:core'.
+//   int lhs30 = /*@typeArgs=int*/ [...spread];
+//                                 ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:96:33: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+//  - 'Set' is from 'dart:core'.
+//   int set30 = /*@typeArgs=int*/ {...spread, 42};
+//                                 ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:99:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+//  - 'Set' is from 'dart:core'.
+//       {...spread};
+//       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:102:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+//  - 'Map' is from 'dart:core'.
+//       {...mapSpread, "baz": 42};
+//       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:105:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+//  - 'Map' is from 'dart:core'.
+//       {...mapSpread};
+//       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:107:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+//   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
+//                                      ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:109:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+//   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
+//                                     ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:111:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+//   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
+//                                                       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:113:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+//   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+//                                      ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:113:38: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+//   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+//                                      ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:115:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+//   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+//                                     ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:115:37: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+//   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+//                                     ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:117:55: Error: Unexpected type 'int Function()?' of a map spread entry.  Expected 'dynamic' or a Map.
+//   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
+//                                                       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:119:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+//   List<String> lhs60 = <String>[...spread];
+//                                    ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:121:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+//   Set<String> set60 = <String>{...spread};
+//                                   ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:123:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+//   Map<int, int> map60 = <int, int>{...mapSpread};
+//                                       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:125:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+//   Map<String, String> map61 = <String, String>{...mapSpread};
+//                                                   ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:127:30: Error: Can't spread a value with static type 'Null'.
+//   List<int> lhs70 = <int>[...null];
+//                              ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:129:29: Error: Can't spread a value with static type 'Null'.
+//   Set<int> set70 = <int>{...null};
+//                             ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:133:8: Error: Can't spread a value with static type 'Null'.
+//     ...null,
+//        ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:138:45: Error: Can't spread a value with static type 'Null'.
+//   Map<String, int> map70 = <String, int>{...null};
+//                                             ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:153:32: Error: Can't assign spread elements of type 'num' to collection elements of type 'int'.
+//   List<int> list100 = <int>[...listNum];
+//                                ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:155:40: Error: Can't assign spread entry values of type 'num' to map entry values of type 'int'.
+//   Map<num, int> map100 = <num, int>{...mapIntNum};
+//                                        ^
+//
+import self as self;
+import "dart:core" as core;
+import "dart:collection" as col;
+
+static method bar<K extends core::Object? = dynamic, V extends core::Object? = dynamic>() → core::Map<self::bar::K%, self::bar::V%>
+  return throw "";
+static method foo(dynamic dynVar) → dynamic {
+  core::List<core::int> spread = <core::int>[1, 2, 3];
+  core::Map<core::String, core::int> mapSpread = <core::String, core::int>{"foo": 4, "bar": 2};
+  core::int notSpreadInt = 42;
+  () →? core::int notSpreadFunction = null;
+  core::Map<core::int, core::num> mapIntNum = <core::int, core::num>{42: 42};
+  core::List<core::num> listNum = <core::num>[42];
+  core::List<dynamic> lhs10 = block {
+    final core::List<dynamic> #t1 = core::List::of<dynamic>(<dynamic>[]);
+  } =>#t1;
+  core::Set<dynamic> set10 = block {
+    final core::Set<dynamic> #t2 = col::LinkedHashSet::of<dynamic>(<dynamic>[]);
+  } =>#t2;
+  core::Map<dynamic, dynamic> map10 = block {
+    final core::Map<dynamic, dynamic> #t3 = <dynamic, dynamic>{};
+    for (final core::MapEntry<dynamic, dynamic> #t4 in <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>})
+      #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}{dynamic}, #t4.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
+  } =>#t3;
+  core::Map<dynamic, dynamic> map10ambiguous = block {
+    final core::Map<dynamic, dynamic> #t5 = <dynamic, dynamic>{};
+    for (final core::MapEntry<dynamic, dynamic> #t6 in <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>})
+      #t5.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}{dynamic}, #t6.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
+  } =>#t5;
+  core::List<core::int> lhs20 = block {
+    final core::List<core::int> #t7 = core::List::of<core::int>(spread);
+  } =>#t7;
+  core::Set<core::int> set20 = block {
+    final core::Set<core::int> #t8 = col::LinkedHashSet::of<core::int>(spread);
+    #t8.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
+  } =>#t8;
+  core::Set<core::int> set20ambiguous = block {
+    final core::Set<core::int> #t9 = col::LinkedHashSet::•<core::int>();
+    for (final dynamic #t10 in spread) {
+      final core::int #t11 = #t10 as{TypeError,ForNonNullableByDefault} core::int;
+      #t9.{core::Set::add}{Invariant}(#t11){(core::int) → core::bool};
+    }
+  } =>#t9;
+  core::Map<core::String, core::int> map20 = block {
+    final core::Map<core::String, core::int> #t12 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t13 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t12.{core::Map::[]=}{Invariant}(#t13.{core::MapEntry::key}{core::String}, #t13.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+    #t12.{core::Map::[]=}{Invariant}("baz", 42){(core::String, core::int) → void};
+  } =>#t12;
+  core::Map<core::String, core::int> map20ambiguous = block {
+    final core::Map<core::String, core::int> #t14 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t15 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t14.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}{core::String}, #t15.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t14;
+  core::List<dynamic> lhs21 = block {
+    final core::List<dynamic> #t16 = core::List::of<dynamic>((spread as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  } =>#t16;
+  core::Set<dynamic> set21 = block {
+    final core::Set<dynamic> #t17 = col::LinkedHashSet::of<dynamic>((spread as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+    #t17.{core::Set::add}{Invariant}(42){(dynamic) → core::bool};
+  } =>#t17;
+  core::Map<dynamic, dynamic> map21 = block {
+    final core::Map<dynamic, dynamic> #t18 = <dynamic, dynamic>{};
+    for (final core::MapEntry<dynamic, dynamic> #t19 in ((mapSpread as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>})
+      #t18.{core::Map::[]=}{Invariant}(#t19.{core::MapEntry::key}{dynamic}, #t19.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
+    #t18.{core::Map::[]=}{Invariant}("baz", 42){(dynamic, dynamic) → void};
+  } =>#t18;
+  dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:60:28: Error: Not enough type information to disambiguate between literal set and literal map.
+Try providing type arguments for the literal explicitly to disambiguate it.
+  dynamic map21ambiguous = {...(mapSpread as dynamic)};
+                           ^";
+  core::List<core::int> lhs22 = block {
+    final core::List<core::int> #t20 = core::List::of<core::int>(<core::int>[]);
+  } =>#t20;
+  core::Set<core::int> set22 = block {
+    final core::Set<core::int> #t21 = col::LinkedHashSet::of<core::int>(<core::int>[]);
+    #t21.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
+  } =>#t21;
+  core::Set<core::int> set22ambiguous = block {
+    final core::Set<core::int> #t22 = col::LinkedHashSet::•<core::int>();
+    for (final dynamic #t23 in <core::int>[]) {
+      final core::int #t24 = #t23 as{TypeError,ForNonNullableByDefault} core::int;
+      #t22.{core::Set::add}{Invariant}(#t24){(core::int) → core::bool};
+    }
+  } =>#t22;
+  core::Map<core::String, core::int> map22 = block {
+    final core::Map<core::String, core::int> #t25 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t26 in <core::String, core::int>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t25.{core::Map::[]=}{Invariant}(#t26.{core::MapEntry::key}{core::String}, #t26.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t25;
+  core::List<core::List<core::int>> lhs23 = block {
+    final core::List<core::List<core::int>> #t27 = core::List::of<core::List<core::int>>(<core::List<core::int>>[<core::int>[]]);
+  } =>#t27;
+  core::Set<core::List<core::int>> set23 = block {
+    final core::Set<core::List<core::int>> #t28 = col::LinkedHashSet::of<core::List<core::int>>(<core::List<core::int>>[<core::int>[]]);
+    #t28.{core::Set::add}{Invariant}(<core::int>[42]){(core::List<core::int>) → core::bool};
+  } =>#t28;
+  core::Set<core::List<core::int>> set23ambiguous = block {
+    final core::Set<core::List<core::int>> #t29 = col::LinkedHashSet::•<core::List<core::int>>();
+    for (final dynamic #t30 in <core::List<core::int>>[<core::int>[]]) {
+      final core::List<core::int> #t31 = #t30 as{TypeError,ForNonNullableByDefault} core::List<core::int>;
+      #t29.{core::Set::add}{Invariant}(#t31){(core::List<core::int>) → core::bool};
+    }
+  } =>#t29;
+  core::Map<core::String, core::List<core::int>> map23 = block {
+    final core::Map<core::String, core::List<core::int>> #t32 = <core::String, core::List<core::int>>{};
+    for (final core::MapEntry<core::String, core::List<core::int>> #t33 in <core::String, core::List<core::int>>{"baz": <core::int>[]}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::List<core::int>>>})
+      #t32.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}{core::String}, #t33.{core::MapEntry::value}{core::List<core::int>}){(core::String, core::List<core::int>) → void};
+  } =>#t32;
+  dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:92:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+  dynamic map24ambiguous = {...spread, ...mapSpread};
+                           ^";
+  core::int lhs30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:94:33: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+ - 'List' is from 'dart:core'.
+  int lhs30 = /*@typeArgs=int*/ [...spread];
+                                ^" in ( block {
+    final core::List<core::int> #t34 = core::List::of<core::int>(spread);
+  } =>#t34) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int set30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:96:33: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+ - 'Set' is from 'dart:core'.
+  int set30 = /*@typeArgs=int*/ {...spread, 42};
+                                ^" in ( block {
+    final core::Set<core::int> #t35 = col::LinkedHashSet::of<core::int>(spread);
+    #t35.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
+  } =>#t35) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int set30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:99:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+ - 'Set' is from 'dart:core'.
+      {...spread};
+      ^" in ( block {
+    final core::Set<core::int> #t36 = col::LinkedHashSet::•<core::int>();
+    for (final dynamic #t37 in spread) {
+      final core::int #t38 = #t37 as{TypeError,ForNonNullableByDefault} core::int;
+      #t36.{core::Set::add}{Invariant}(#t38){(core::int) → core::bool};
+    }
+  } =>#t36) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int map30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:102:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+ - 'Map' is from 'dart:core'.
+      {...mapSpread, \"baz\": 42};
+      ^" in ( block {
+    final core::Map<core::String, core::int> #t39 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t40 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t39.{core::Map::[]=}{Invariant}(#t40.{core::MapEntry::key}{core::String}, #t40.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+    #t39.{core::Map::[]=}{Invariant}("baz", 42){(core::String, core::int) → void};
+  } =>#t39) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int map30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:105:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+ - 'Map' is from 'dart:core'.
+      {...mapSpread};
+      ^" in ( block {
+    final core::Map<core::String, core::int> #t41 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t42 in mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t41.{core::Map::[]=}{Invariant}(#t42.{core::MapEntry::key}{core::String}, #t42.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t41) as{TypeError,ForNonNullableByDefault} core::int;
+  core::List<dynamic> lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:107:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
+                                     ^"];
+  core::Set<dynamic> set40 = block {
+    final core::Set<dynamic> #t43 = col::LinkedHashSet::•<dynamic>();
+    #t43.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:109:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  Set<dynamic> set40 = <dynamic>{...notSpreadInt};
+                                    ^"){(dynamic) → core::bool};
+  } =>#t43;
+  core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:111:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+  Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
+                                                      ^": null};
+  core::List<dynamic> lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:113:38: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+  List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+                                     ^"];
+  core::Set<dynamic> set50 = block {
+    final core::Set<dynamic> #t44 = col::LinkedHashSet::•<dynamic>();
+    #t44.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:115:37: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+  Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+                                    ^"){(dynamic) → core::bool};
+  } =>#t44;
+  core::Map<dynamic, dynamic> map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:117:55: Error: Unexpected type 'int Function()?' of a map spread entry.  Expected 'dynamic' or a Map.
+  Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
+                                                      ^": null};
+  core::List<core::String> lhs60 = <core::String>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:119:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  List<String> lhs60 = <String>[...spread];
+                                   ^"];
+  core::Set<core::String> set60 = block {
+    final core::Set<core::String> #t45 = col::LinkedHashSet::•<core::String>();
+    #t45.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:121:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  Set<String> set60 = <String>{...spread};
+                                  ^"){(core::String) → core::bool};
+  } =>#t45;
+  core::Map<core::int, core::int> map60 = <core::int, core::int>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:123:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+  Map<int, int> map60 = <int, int>{...mapSpread};
+                                      ^": null};
+  core::Map<core::String, core::String> map61 = <core::String, core::String>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:125:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+  Map<String, String> map61 = <String, String>{...mapSpread};
+                                                  ^"};
+  core::List<core::int> lhs70 = <core::int>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:127:30: Error: Can't spread a value with static type 'Null'.
+  List<int> lhs70 = <int>[...null];
+                             ^"];
+  core::Set<core::int> set70 = block {
+    final core::Set<core::int> #t46 = col::LinkedHashSet::•<core::int>();
+    #t46.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:129:29: Error: Can't spread a value with static type 'Null'.
+  Set<int> set70 = <int>{...null};
+                            ^"){(core::int) → core::bool};
+  } =>#t46;
+  core::Set<dynamic> set71ambiguous = block {
+    final core::Set<dynamic> #t47 = col::LinkedHashSet::•<dynamic>();
+    #t47.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:133:8: Error: Can't spread a value with static type 'Null'.
+    ...null,
+       ^"){(dynamic) → core::bool};
+    for (final dynamic #t48 in <dynamic>[]) {
+      final dynamic #t49 = #t48 as{TypeError,ForNonNullableByDefault} dynamic;
+      #t47.{core::Set::add}{Invariant}(#t49){(dynamic) → core::bool};
+    }
+  } =>#t47;
+  core::Map<core::String, core::int> map70 = <core::String, core::int>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:138:45: Error: Can't spread a value with static type 'Null'.
+  Map<String, int> map70 = <String, int>{...null};
+                                            ^": null};
+  core::List<core::int> lhs80 = block {
+    final core::List<core::int> #t50 = <core::int>[];
+    final core::Iterable<core::int>? #t51 = null;
+    if(!(#t51 == null))
+      #t50.{core::List::addAll}{Invariant}(#t51{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+  } =>#t50;
+  core::Set<core::int> set80 = block {
+    final core::Set<core::int> #t52 = col::LinkedHashSet::•<core::int>();
+    final core::Iterable<core::int>? #t53 = null;
+    if(!(#t53 == null))
+      #t52.{core::Set::addAll}{Invariant}(#t53{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+  } =>#t52;
+  core::Set<dynamic> set81ambiguous = block {
+    final core::Set<dynamic> #t54 = col::LinkedHashSet::•<dynamic>();
+    final core::Iterable<dynamic>? #t55 = null;
+    if(!(#t55 == null))
+      for (final dynamic #t56 in #t55{core::Iterable<dynamic>}) {
+        final dynamic #t57 = #t56 as{TypeError,ForNonNullableByDefault} dynamic;
+        #t54.{core::Set::add}{Invariant}(#t57){(dynamic) → core::bool};
+      }
+    for (final dynamic #t58 in <dynamic>[]) {
+      final dynamic #t59 = #t58 as{TypeError,ForNonNullableByDefault} dynamic;
+      #t54.{core::Set::add}{Invariant}(#t59){(dynamic) → core::bool};
+    }
+  } =>#t54;
+  core::Map<core::String, core::int> map80 = block {
+    final core::Map<core::String, core::int> #t60 = <core::String, core::int>{};
+    final core::Map<core::String, core::int>? #t61 = null;
+    if(!(#t61 == null))
+      for (final core::MapEntry<core::String, core::int> #t62 in #t61{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+        #t60.{core::Map::[]=}{Invariant}(#t62.{core::MapEntry::key}{core::String}, #t62.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t60;
+  core::Map<core::String, core::int> map90 = block {
+    final core::Map<core::String, core::int> #t63 = <core::String, core::int>{};
+    for (final core::MapEntry<core::String, core::int> #t64 in self::bar<core::String, core::int>().{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>})
+      #t63.{core::Map::[]=}{Invariant}(#t64.{core::MapEntry::key}{core::String}, #t64.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+  } =>#t63;
+  core::List<core::int> list100 = <core::int>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:153:32: Error: Can't assign spread elements of type 'num' to collection elements of type 'int'.
+  List<int> list100 = <int>[...listNum];
+                               ^"];
+  core::Map<core::num, core::int> map100 = <core::num, core::int>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:155:40: Error: Can't assign spread entry values of type 'num' to map entry values of type 'int'.
+  Map<num, int> map100 = <num, int>{...mapIntNum};
+                                       ^"};
+  core::List<core::int> list110 = block {
+    final core::List<core::int> #t65 = <core::int>[];
+    for (final dynamic #t66 in dynVar as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
+      final core::int #t67 = #t66 as{TypeError,ForNonNullableByDefault} core::int;
+      #t65.{core::List::add}{Invariant}(#t67){(core::int) → void};
+    }
+  } =>#t65;
+  core::Map<core::num, core::int> map110 = block {
+    final core::Map<core::num, core::int> #t68 = <core::num, core::int>{};
+    for (final core::MapEntry<dynamic, dynamic> #t69 in (dynVar as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<core::num, core::int>>}) {
+      final core::num #t70 = #t69.{core::MapEntry::key}{dynamic} as{TypeError,ForNonNullableByDefault} core::num;
+      final core::int #t71 = #t69.{core::MapEntry::value}{dynamic} as{TypeError,ForNonNullableByDefault} core::int;
+      #t68.{core::Map::[]=}{Invariant}(#t70, #t71){(core::num, core::int) → void};
+    }
+  } =>#t68;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.outline.expect b/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.outline.expect
new file mode 100644
index 0000000..52e6295
--- /dev/null
+++ b/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.outline.expect
@@ -0,0 +1,10 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static method bar<K extends core::Object? = dynamic, V extends core::Object? = dynamic>() → core::Map<self::bar::K%, self::bar::V%>
+  ;
+static method foo(dynamic dynVar) → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.transformed.expect
new file mode 100644
index 0000000..9bdd143
--- /dev/null
+++ b/pkg/front_end/testcases/general/spread_collection_inference2.dart.weak.transformed.expect
@@ -0,0 +1,490 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:60:28: Error: Not enough type information to disambiguate between literal set and literal map.
+// Try providing type arguments for the literal explicitly to disambiguate it.
+//   dynamic map21ambiguous = {...(mapSpread as dynamic)};
+//                            ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:92:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+//   dynamic map24ambiguous = {...spread, ...mapSpread};
+//                            ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:94:33: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+//  - 'List' is from 'dart:core'.
+//   int lhs30 = /*@typeArgs=int*/ [...spread];
+//                                 ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:96:33: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+//  - 'Set' is from 'dart:core'.
+//   int set30 = /*@typeArgs=int*/ {...spread, 42};
+//                                 ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:99:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+//  - 'Set' is from 'dart:core'.
+//       {...spread};
+//       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:102:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+//  - 'Map' is from 'dart:core'.
+//       {...mapSpread, "baz": 42};
+//       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:105:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+//  - 'Map' is from 'dart:core'.
+//       {...mapSpread};
+//       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:107:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+//   List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
+//                                      ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:109:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+//   Set<dynamic> set40 = <dynamic>{...notSpreadInt};
+//                                     ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:111:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+//   Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
+//                                                       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:113:38: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+//   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+//                                      ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:113:38: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+//   List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+//                                      ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:115:37: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
+//   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+//                                     ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:115:37: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+//   Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+//                                     ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:117:55: Error: Unexpected type 'int Function()?' of a map spread entry.  Expected 'dynamic' or a Map.
+//   Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
+//                                                       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:119:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+//   List<String> lhs60 = <String>[...spread];
+//                                    ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:121:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+//   Set<String> set60 = <String>{...spread};
+//                                   ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:123:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+//   Map<int, int> map60 = <int, int>{...mapSpread};
+//                                       ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:125:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+//   Map<String, String> map61 = <String, String>{...mapSpread};
+//                                                   ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:127:30: Error: Can't spread a value with static type 'Null'.
+//   List<int> lhs70 = <int>[...null];
+//                              ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:129:29: Error: Can't spread a value with static type 'Null'.
+//   Set<int> set70 = <int>{...null};
+//                             ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:133:8: Error: Can't spread a value with static type 'Null'.
+//     ...null,
+//        ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:138:45: Error: Can't spread a value with static type 'Null'.
+//   Map<String, int> map70 = <String, int>{...null};
+//                                             ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:153:32: Error: Can't assign spread elements of type 'num' to collection elements of type 'int'.
+//   List<int> list100 = <int>[...listNum];
+//                                ^
+//
+// pkg/front_end/testcases/general/spread_collection_inference2.dart:155:40: Error: Can't assign spread entry values of type 'num' to map entry values of type 'int'.
+//   Map<num, int> map100 = <num, int>{...mapIntNum};
+//                                        ^
+//
+import self as self;
+import "dart:core" as core;
+import "dart:collection" as col;
+
+static method bar<K extends core::Object? = dynamic, V extends core::Object? = dynamic>() → core::Map<self::bar::K%, self::bar::V%>
+  return throw "";
+static method foo(dynamic dynVar) → dynamic {
+  core::List<core::int> spread = core::_GrowableList::_literal3<core::int>(1, 2, 3);
+  core::Map<core::String, core::int> mapSpread = <core::String, core::int>{"foo": 4, "bar": 2};
+  core::int notSpreadInt = 42;
+  () →? core::int notSpreadFunction = null;
+  core::Map<core::int, core::num> mapIntNum = <core::int, core::num>{42: 42};
+  core::List<core::num> listNum = core::_GrowableList::_literal1<core::num>(42);
+  core::List<dynamic> lhs10 = block {
+    final core::List<dynamic> #t1 = core::List::of<dynamic>(core::_GrowableList::•<dynamic>(0));
+  } =>#t1;
+  core::Set<dynamic> set10 = block {
+    final core::Set<dynamic> #t2 = col::LinkedHashSet::of<dynamic>(core::_GrowableList::•<dynamic>(0));
+  } =>#t2;
+  core::Map<dynamic, dynamic> map10 = block {
+    final core::Map<dynamic, dynamic> #t3 = <dynamic, dynamic>{};
+    {
+      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic> #t4 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
+        #t3.{core::Map::[]=}{Invariant}(#t4.{core::MapEntry::key}{dynamic}, #t4.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
+      }
+    }
+  } =>#t3;
+  core::Map<dynamic, dynamic> map10ambiguous = block {
+    final core::Map<dynamic, dynamic> #t5 = <dynamic, dynamic>{};
+    {
+      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = <dynamic, dynamic>{}.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic> #t6 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
+        #t5.{core::Map::[]=}{Invariant}(#t6.{core::MapEntry::key}{dynamic}, #t6.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
+      }
+    }
+  } =>#t5;
+  core::List<core::int> lhs20 = block {
+    final core::List<core::int> #t7 = core::List::of<core::int>(spread);
+  } =>#t7;
+  core::Set<core::int> set20 = block {
+    final core::Set<core::int> #t8 = col::LinkedHashSet::of<core::int>(spread);
+    #t8.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
+  } =>#t8;
+  core::Set<core::int> set20ambiguous = block {
+    final core::Set<core::int> #t9 = new col::_CompactLinkedHashSet::•<core::int>();
+    {
+      core::Iterator<core::int> :sync-for-iterator = spread.{core::Iterable::iterator}{core::Iterator<core::int>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{core::int};
+        {
+          final core::int #t11 = #t10 as{TypeError,ForNonNullableByDefault} core::int;
+          #t9.{core::Set::add}{Invariant}(#t11){(core::int) → core::bool};
+        }
+      }
+    }
+  } =>#t9;
+  core::Map<core::String, core::int> map20 = block {
+    final core::Map<core::String, core::int> #t12 = <core::String, core::int>{};
+    {
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t13 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
+        #t12.{core::Map::[]=}{Invariant}(#t13.{core::MapEntry::key}{core::String}, #t13.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+      }
+    }
+    #t12.{core::Map::[]=}{Invariant}("baz", 42){(core::String, core::int) → void};
+  } =>#t12;
+  core::Map<core::String, core::int> map20ambiguous = block {
+    final core::Map<core::String, core::int> #t14 = <core::String, core::int>{};
+    {
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t15 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
+        #t14.{core::Map::[]=}{Invariant}(#t15.{core::MapEntry::key}{core::String}, #t15.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+      }
+    }
+  } =>#t14;
+  core::List<dynamic> lhs21 = block {
+    final core::List<dynamic> #t16 = core::List::of<dynamic>((spread as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+  } =>#t16;
+  core::Set<dynamic> set21 = block {
+    final core::Set<dynamic> #t17 = col::LinkedHashSet::of<dynamic>((spread as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>);
+    #t17.{core::Set::add}{Invariant}(42){(dynamic) → core::bool};
+  } =>#t17;
+  core::Map<dynamic, dynamic> map21 = block {
+    final core::Map<dynamic, dynamic> #t18 = <dynamic, dynamic>{};
+    {
+      core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = ((mapSpread as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic> #t19 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<dynamic, dynamic>};
+        #t18.{core::Map::[]=}{Invariant}(#t19.{core::MapEntry::key}{dynamic}, #t19.{core::MapEntry::value}{dynamic}){(dynamic, dynamic) → void};
+      }
+    }
+    #t18.{core::Map::[]=}{Invariant}("baz", 42){(dynamic, dynamic) → void};
+  } =>#t18;
+  dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:60:28: Error: Not enough type information to disambiguate between literal set and literal map.
+Try providing type arguments for the literal explicitly to disambiguate it.
+  dynamic map21ambiguous = {...(mapSpread as dynamic)};
+                           ^";
+  core::List<core::int> lhs22 = block {
+    final core::List<core::int> #t20 = core::List::of<core::int>(core::_GrowableList::•<core::int>(0));
+  } =>#t20;
+  core::Set<core::int> set22 = block {
+    final core::Set<core::int> #t21 = col::LinkedHashSet::of<core::int>(core::_GrowableList::•<core::int>(0));
+    #t21.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
+  } =>#t21;
+  core::Set<core::int> set22ambiguous = block {
+    final core::Set<core::int> #t22 = new col::_CompactLinkedHashSet::•<core::int>();
+    {
+      core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::•<core::int>(0).{core::Iterable::iterator}{core::Iterator<core::int>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t23 = :sync-for-iterator.{core::Iterator::current}{core::int};
+        {
+          final core::int #t24 = #t23 as{TypeError,ForNonNullableByDefault} core::int;
+          #t22.{core::Set::add}{Invariant}(#t24){(core::int) → core::bool};
+        }
+      }
+    }
+  } =>#t22;
+  core::Map<core::String, core::int> map22 = block {
+    final core::Map<core::String, core::int> #t25 = <core::String, core::int>{};
+    {
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = <core::String, core::int>{}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t26 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
+        #t25.{core::Map::[]=}{Invariant}(#t26.{core::MapEntry::key}{core::String}, #t26.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+      }
+    }
+  } =>#t25;
+  core::List<core::List<core::int>> lhs23 = block {
+    final core::List<core::List<core::int>> #t27 = core::List::of<core::List<core::int>>(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0)));
+  } =>#t27;
+  core::Set<core::List<core::int>> set23 = block {
+    final core::Set<core::List<core::int>> #t28 = col::LinkedHashSet::of<core::List<core::int>>(core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0)));
+    #t28.{core::Set::add}{Invariant}(core::_GrowableList::_literal1<core::int>(42)){(core::List<core::int>) → core::bool};
+  } =>#t28;
+  core::Set<core::List<core::int>> set23ambiguous = block {
+    final core::Set<core::List<core::int>> #t29 = new col::_CompactLinkedHashSet::•<core::List<core::int>>();
+    {
+      core::Iterator<core::List<core::int>> :sync-for-iterator = core::_GrowableList::_literal1<core::List<core::int>>(core::_GrowableList::•<core::int>(0)).{core::Iterable::iterator}{core::Iterator<core::List<core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t30 = :sync-for-iterator.{core::Iterator::current}{core::List<core::int>};
+        {
+          final core::List<core::int> #t31 = #t30 as{TypeError,ForNonNullableByDefault} core::List<core::int>;
+          #t29.{core::Set::add}{Invariant}(#t31){(core::List<core::int>) → core::bool};
+        }
+      }
+    }
+  } =>#t29;
+  core::Map<core::String, core::List<core::int>> map23 = block {
+    final core::Map<core::String, core::List<core::int>> #t32 = <core::String, core::List<core::int>>{};
+    {
+      core::Iterator<core::MapEntry<core::String, core::List<core::int>>> :sync-for-iterator = <core::String, core::List<core::int>>{"baz": core::_GrowableList::•<core::int>(0)}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::List<core::int>>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::List<core::int>>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::List<core::int>> #t33 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::List<core::int>>};
+        #t32.{core::Map::[]=}{Invariant}(#t33.{core::MapEntry::key}{core::String}, #t33.{core::MapEntry::value}{core::List<core::int>}){(core::String, core::List<core::int>) → void};
+      }
+    }
+  } =>#t32;
+  dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:92:28: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
+  dynamic map24ambiguous = {...spread, ...mapSpread};
+                           ^";
+  core::int lhs30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:94:33: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+ - 'List' is from 'dart:core'.
+  int lhs30 = /*@typeArgs=int*/ [...spread];
+                                ^" in ( block {
+    final core::List<core::int> #t34 = core::List::of<core::int>(spread);
+  } =>#t34) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int set30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:96:33: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+ - 'Set' is from 'dart:core'.
+  int set30 = /*@typeArgs=int*/ {...spread, 42};
+                                ^" in ( block {
+    final core::Set<core::int> #t35 = col::LinkedHashSet::of<core::int>(spread);
+    #t35.{core::Set::add}{Invariant}(42){(core::int) → core::bool};
+  } =>#t35) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int set30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:99:7: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+ - 'Set' is from 'dart:core'.
+      {...spread};
+      ^" in ( block {
+    final core::Set<core::int> #t36 = new col::_CompactLinkedHashSet::•<core::int>();
+    {
+      core::Iterator<core::int> :sync-for-iterator = spread.{core::Iterable::iterator}{core::Iterator<core::int>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t37 = :sync-for-iterator.{core::Iterator::current}{core::int};
+        {
+          final core::int #t38 = #t37 as{TypeError,ForNonNullableByDefault} core::int;
+          #t36.{core::Set::add}{Invariant}(#t38){(core::int) → core::bool};
+        }
+      }
+    }
+  } =>#t36) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int map30 = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:102:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+ - 'Map' is from 'dart:core'.
+      {...mapSpread, \"baz\": 42};
+      ^" in ( block {
+    final core::Map<core::String, core::int> #t39 = <core::String, core::int>{};
+    {
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t40 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
+        #t39.{core::Map::[]=}{Invariant}(#t40.{core::MapEntry::key}{core::String}, #t40.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+      }
+    }
+    #t39.{core::Map::[]=}{Invariant}("baz", 42){(core::String, core::int) → void};
+  } =>#t39) as{TypeError,ForNonNullableByDefault} core::int;
+  core::int map30ambiguous = invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:105:7: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+ - 'Map' is from 'dart:core'.
+      {...mapSpread};
+      ^" in ( block {
+    final core::Map<core::String, core::int> #t41 = <core::String, core::int>{};
+    {
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = mapSpread.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t42 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
+        #t41.{core::Map::[]=}{Invariant}(#t42.{core::MapEntry::key}{core::String}, #t42.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+      }
+    }
+  } =>#t41) as{TypeError,ForNonNullableByDefault} core::int;
+  core::List<dynamic> lhs40 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:107:38: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  List<dynamic> lhs40 = <dynamic>[...notSpreadInt];
+                                     ^");
+  core::Set<dynamic> set40 = block {
+    final core::Set<dynamic> #t43 = new col::_CompactLinkedHashSet::•<dynamic>();
+    #t43.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:109:37: Error: Unexpected type 'int' of a spread.  Expected 'dynamic' or an Iterable.
+  Set<dynamic> set40 = <dynamic>{...notSpreadInt};
+                                    ^"){(dynamic) → core::bool};
+  } =>#t43;
+  core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:111:55: Error: Unexpected type 'int' of a map spread entry.  Expected 'dynamic' or a Map.
+  Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...notSpreadInt};
+                                                      ^": null};
+  core::List<dynamic> lhs50 = core::_GrowableList::_literal1<dynamic>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:113:38: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+  List<dynamic> lhs50 = <dynamic>[...notSpreadFunction];
+                                     ^");
+  core::Set<dynamic> set50 = block {
+    final core::Set<dynamic> #t44 = new col::_CompactLinkedHashSet::•<dynamic>();
+    #t44.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:115:37: Error: Unexpected type 'int Function()?' of a spread.  Expected 'dynamic' or an Iterable.
+  Set<dynamic> set50 = <dynamic>{...notSpreadFunction};
+                                    ^"){(dynamic) → core::bool};
+  } =>#t44;
+  core::Map<dynamic, dynamic> map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:117:55: Error: Unexpected type 'int Function()?' of a map spread entry.  Expected 'dynamic' or a Map.
+  Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...notSpreadFunction};
+                                                      ^": null};
+  core::List<core::String> lhs60 = core::_GrowableList::_literal1<core::String>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:119:36: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  List<String> lhs60 = <String>[...spread];
+                                   ^");
+  core::Set<core::String> set60 = block {
+    final core::Set<core::String> #t45 = new col::_CompactLinkedHashSet::•<core::String>();
+    #t45.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:121:35: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+  Set<String> set60 = <String>{...spread};
+                                  ^"){(core::String) → core::bool};
+  } =>#t45;
+  core::Map<core::int, core::int> map60 = <core::int, core::int>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:123:39: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+  Map<int, int> map60 = <int, int>{...mapSpread};
+                                      ^": null};
+  core::Map<core::String, core::String> map61 = <core::String, core::String>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:125:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+  Map<String, String> map61 = <String, String>{...mapSpread};
+                                                  ^"};
+  core::List<core::int> lhs70 = core::_GrowableList::_literal1<core::int>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:127:30: Error: Can't spread a value with static type 'Null'.
+  List<int> lhs70 = <int>[...null];
+                             ^");
+  core::Set<core::int> set70 = block {
+    final core::Set<core::int> #t46 = new col::_CompactLinkedHashSet::•<core::int>();
+    #t46.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:129:29: Error: Can't spread a value with static type 'Null'.
+  Set<int> set70 = <int>{...null};
+                            ^"){(core::int) → core::bool};
+  } =>#t46;
+  core::Set<dynamic> set71ambiguous = block {
+    final core::Set<dynamic> #t47 = new col::_CompactLinkedHashSet::•<dynamic>();
+    #t47.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:133:8: Error: Can't spread a value with static type 'Null'.
+    ...null,
+       ^"){(dynamic) → core::bool};
+    {
+      core::Iterator<dynamic> :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t48 = :sync-for-iterator.{core::Iterator::current}{dynamic};
+        {
+          final dynamic #t49 = #t48 as{TypeError,ForNonNullableByDefault} dynamic;
+          #t47.{core::Set::add}{Invariant}(#t49){(dynamic) → core::bool};
+        }
+      }
+    }
+  } =>#t47;
+  core::Map<core::String, core::int> map70 = <core::String, core::int>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:138:45: Error: Can't spread a value with static type 'Null'.
+  Map<String, int> map70 = <String, int>{...null};
+                                            ^": null};
+  core::List<core::int> lhs80 = block {
+    final core::List<core::int> #t50 = core::_GrowableList::•<core::int>(0);
+    final core::Iterable<core::int>? #t51 = null;
+    if(!(#t51 == null))
+      #t50.{core::List::addAll}{Invariant}(#t51{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+  } =>#t50;
+  core::Set<core::int> set80 = block {
+    final core::Set<core::int> #t52 = new col::_CompactLinkedHashSet::•<core::int>();
+    final core::Iterable<core::int>? #t53 = null;
+    if(!(#t53 == null))
+      #t52.{core::Set::addAll}{Invariant}(#t53{core::Iterable<core::int>}){(core::Iterable<core::int>) → void};
+  } =>#t52;
+  core::Set<dynamic> set81ambiguous = block {
+    final core::Set<dynamic> #t54 = new col::_CompactLinkedHashSet::•<dynamic>();
+    final core::Iterable<dynamic>? #t55 = null;
+    if(!(#t55 == null)) {
+      core::Iterator<dynamic> :sync-for-iterator = #t55{core::Iterable<dynamic>}.{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t56 = :sync-for-iterator.{core::Iterator::current}{dynamic};
+        {
+          final dynamic #t57 = #t56 as{TypeError,ForNonNullableByDefault} dynamic;
+          #t54.{core::Set::add}{Invariant}(#t57){(dynamic) → core::bool};
+        }
+      }
+    }
+    {
+      core::Iterator<dynamic> :sync-for-iterator = core::_GrowableList::•<dynamic>(0).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t58 = :sync-for-iterator.{core::Iterator::current}{dynamic};
+        {
+          final dynamic #t59 = #t58 as{TypeError,ForNonNullableByDefault} dynamic;
+          #t54.{core::Set::add}{Invariant}(#t59){(dynamic) → core::bool};
+        }
+      }
+    }
+  } =>#t54;
+  core::Map<core::String, core::int> map80 = block {
+    final core::Map<core::String, core::int> #t60 = <core::String, core::int>{};
+    final core::Map<core::String, core::int>? #t61 = null;
+    if(!(#t61 == null)) {
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = #t61{core::Map<core::String, core::int>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t62 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
+        #t60.{core::Map::[]=}{Invariant}(#t62.{core::MapEntry::key}{core::String}, #t62.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+      }
+    }
+  } =>#t60;
+  core::Map<core::String, core::int> map90 = block {
+    final core::Map<core::String, core::int> #t63 = <core::String, core::int>{};
+    {
+      core::Iterator<core::MapEntry<core::String, core::int>> :sync-for-iterator = self::bar<core::String, core::int>().{core::Map::entries}{core::Iterable<core::MapEntry<core::String, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::String, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::String, core::int> #t64 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::String, core::int>};
+        #t63.{core::Map::[]=}{Invariant}(#t64.{core::MapEntry::key}{core::String}, #t64.{core::MapEntry::value}{core::int}){(core::String, core::int) → void};
+      }
+    }
+  } =>#t63;
+  core::List<core::int> list100 = core::_GrowableList::_literal1<core::int>(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:153:32: Error: Can't assign spread elements of type 'num' to collection elements of type 'int'.
+  List<int> list100 = <int>[...listNum];
+                               ^");
+  core::Map<core::num, core::int> map100 = <core::num, core::int>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference2.dart:155:40: Error: Can't assign spread entry values of type 'num' to map entry values of type 'int'.
+  Map<num, int> map100 = <num, int>{...mapIntNum};
+                                       ^"};
+  core::List<core::int> list110 = block {
+    final core::List<core::int> #t65 = core::_GrowableList::•<core::int>(0);
+    {
+      core::Iterator<dynamic> :sync-for-iterator = (dynVar as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final dynamic #t66 = :sync-for-iterator.{core::Iterator::current}{dynamic};
+        {
+          final core::int #t67 = #t66 as{TypeError,ForNonNullableByDefault} core::int;
+          #t65.{core::List::add}{Invariant}(#t67){(core::int) → void};
+        }
+      }
+    }
+  } =>#t65;
+  core::Map<core::num, core::int> map110 = block {
+    final core::Map<core::num, core::int> #t68 = <core::num, core::int>{};
+    {
+      core::Iterator<core::MapEntry<core::num, core::int>> :sync-for-iterator = (dynVar as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<dynamic, dynamic>).{core::Map::entries}{core::Iterable<core::MapEntry<core::num, core::int>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::num, core::int>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<dynamic, dynamic> #t69 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::num, core::int>};
+        {
+          final core::num #t70 = #t69.{core::MapEntry::key}{dynamic} as{TypeError,ForNonNullableByDefault} core::num;
+          final core::int #t71 = #t69.{core::MapEntry::value}{dynamic} as{TypeError,ForNonNullableByDefault} core::int;
+          #t68.{core::Map::[]=}{Invariant}(#t70, #t71){(core::num, core::int) → void};
+        }
+      }
+    }
+  } =>#t68;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/statements.dart b/pkg/front_end/testcases/general/statements.dart
index 6121514..e12e2fc 100644
--- a/pkg/front_end/testcases/general/statements.dart
+++ b/pkg/front_end/testcases/general/statements.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 foo() {
   try {
     return;
diff --git a/pkg/front_end/testcases/general/statements.dart.textual_outline.expect b/pkg/front_end/testcases/general/statements.dart.textual_outline.expect
index b23d16d..2431514 100644
--- a/pkg/front_end/testcases/general/statements.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/statements.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 foo() {}
 bar(d) async* {}
 main() {}
diff --git a/pkg/front_end/testcases/general/statements.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/statements.dart.textual_outline_modelled.expect
index 77069be..3453492 100644
--- a/pkg/front_end/testcases/general/statements.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/statements.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 bar(d) async* {}
 foo() {}
 main() {}
diff --git a/pkg/front_end/testcases/general/statements.dart.weak.expect b/pkg/front_end/testcases/general/statements.dart.weak.expect
index 8d3c256..8e6804c 100644
--- a/pkg/front_end/testcases/general/statements.dart.weak.expect
+++ b/pkg/front_end/testcases/general/statements.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
@@ -12,9 +12,9 @@
   }
 }
 static method bar(dynamic d) → dynamic async* {
-  await for (dynamic x in d as{TypeError,ForDynamic} asy::Stream<dynamic>*) {
+  await for (dynamic x in d as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>) {
     yield x;
-    yield* x as{TypeError,ForDynamic} asy::Stream<dynamic>*;
+    yield* x as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>;
   }
 }
 static method main() → dynamic {
@@ -26,10 +26,10 @@
     void x = core::print("Hello from do-while!");
   }
   while (false)
-  for (core::String* s in <core::String*>["Hello from for-in!"]) {
+  for (core::String s in <core::String>["Hello from for-in!"]) {
     core::print(s);
   }
-  for (core::String* s in <core::String*>["Hello from for-in without block!"])
+  for (core::String s in <core::String>["Hello from for-in without block!"])
     core::print(s);
   dynamic s;
   for (final dynamic #t1 in <dynamic>["Hello from for-in without decl!"]) {
@@ -45,15 +45,15 @@
     try {
       throw "Hello from rethrow!";
     }
-    on dynamic catch(final dynamic e) {
+    on core::Object catch(final core::Object e) {
       rethrow;
     }
   }
-  on dynamic catch(final dynamic e) {
+  on core::Object catch(final core::Object e) {
     core::print(e);
   }
   self::foo();
-  core::bool* done = false;
+  core::bool done = false;
   while (!done) {
     done = true;
     core::print("Hello from while!");
@@ -64,7 +64,7 @@
   try {
     assert(false, "Hello from assert!");
   }
-  on dynamic catch(final dynamic e) {
+  on core::Object catch(final core::Object e) {
     core::print(e);
   }
   #L1:
@@ -128,13 +128,13 @@
         continue #L11;
       }
   }
-  core::int* i = 0;
+  core::int i = 0;
   #L13:
   do
     #L14:
     {
       core::print("Hello from do-while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1){(core::num) → core::int}).{core::num::<}(3){(core::num) → core::bool})
         break #L14;
       break #L13;
     }
@@ -145,7 +145,7 @@
     #L16:
     {
       core::print("Hello from while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1){(core::num) → core::int}).{core::num::<}(3){(core::num) → core::bool})
         break #L16;
       break #L15;
     }
diff --git a/pkg/front_end/testcases/general/statements.dart.weak.modular.expect b/pkg/front_end/testcases/general/statements.dart.weak.modular.expect
index 8d3c256..8e6804c 100644
--- a/pkg/front_end/testcases/general/statements.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/statements.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
@@ -12,9 +12,9 @@
   }
 }
 static method bar(dynamic d) → dynamic async* {
-  await for (dynamic x in d as{TypeError,ForDynamic} asy::Stream<dynamic>*) {
+  await for (dynamic x in d as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>) {
     yield x;
-    yield* x as{TypeError,ForDynamic} asy::Stream<dynamic>*;
+    yield* x as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>;
   }
 }
 static method main() → dynamic {
@@ -26,10 +26,10 @@
     void x = core::print("Hello from do-while!");
   }
   while (false)
-  for (core::String* s in <core::String*>["Hello from for-in!"]) {
+  for (core::String s in <core::String>["Hello from for-in!"]) {
     core::print(s);
   }
-  for (core::String* s in <core::String*>["Hello from for-in without block!"])
+  for (core::String s in <core::String>["Hello from for-in without block!"])
     core::print(s);
   dynamic s;
   for (final dynamic #t1 in <dynamic>["Hello from for-in without decl!"]) {
@@ -45,15 +45,15 @@
     try {
       throw "Hello from rethrow!";
     }
-    on dynamic catch(final dynamic e) {
+    on core::Object catch(final core::Object e) {
       rethrow;
     }
   }
-  on dynamic catch(final dynamic e) {
+  on core::Object catch(final core::Object e) {
     core::print(e);
   }
   self::foo();
-  core::bool* done = false;
+  core::bool done = false;
   while (!done) {
     done = true;
     core::print("Hello from while!");
@@ -64,7 +64,7 @@
   try {
     assert(false, "Hello from assert!");
   }
-  on dynamic catch(final dynamic e) {
+  on core::Object catch(final core::Object e) {
     core::print(e);
   }
   #L1:
@@ -128,13 +128,13 @@
         continue #L11;
       }
   }
-  core::int* i = 0;
+  core::int i = 0;
   #L13:
   do
     #L14:
     {
       core::print("Hello from do-while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1){(core::num) → core::int}).{core::num::<}(3){(core::num) → core::bool})
         break #L14;
       break #L13;
     }
@@ -145,7 +145,7 @@
     #L16:
     {
       core::print("Hello from while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1){(core::num) → core::int}).{core::num::<}(3){(core::num) → core::bool})
         break #L16;
       break #L15;
     }
diff --git a/pkg/front_end/testcases/general/statements.dart.weak.outline.expect b/pkg/front_end/testcases/general/statements.dart.weak.outline.expect
index d66ca8e..233d838 100644
--- a/pkg/front_end/testcases/general/statements.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/statements.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 static method foo() → dynamic
diff --git a/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect b/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
index 522ac94..012142b 100644
--- a/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
@@ -13,11 +13,11 @@
   }
 }
 static method bar(dynamic d) → dynamic /* originally async* */ {
-  asy::_AsyncStarStreamController<dynamic>* :controller;
+  asy::_AsyncStarStreamController<dynamic>? :controller;
   dynamic :controller_stream;
-  (dynamic) →* dynamic :async_op_then;
-  (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-  core::int* :await_jump_var = 0;
+  (dynamic) → dynamic :async_op_then;
+  (core::Object, core::StackTrace) → dynamic :async_op_error;
+  core::int :await_jump_var = 0;
   dynamic :await_ctx_var;
   dynamic :saved_try_context_var0;
   dynamic :saved_try_context_var1;
@@ -30,8 +30,8 @@
         #L1:
         {
           {
-            asy::Stream<dynamic>* :stream = d as{TypeError,ForDynamic} asy::Stream<dynamic>*;
-            asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+            asy::Stream<dynamic> :stream = d as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>;
+            asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
             try
               #L2:
               while (true) {
@@ -44,7 +44,7 @@
                       return null;
                     else
                       [yield] null;
-                    if(:controller.{asy::_AsyncStarStreamController::addStream}(x as{TypeError,ForDynamic} asy::Stream<dynamic>*){(asy::Stream<dynamic>) → core::bool})
+                    if(:controller.{asy::_AsyncStarStreamController::addStream}(x as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>){(asy::Stream<dynamic>) → core::bool})
                       return null;
                     else
                       [yield] null;
@@ -62,7 +62,7 @@
         }
         return;
       }
-      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
         :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
@@ -84,24 +84,24 @@
   }
   while (false)
   {
-    core::Iterator<core::String*>* :sync-for-iterator = core::_GrowableList::_literal1<core::String*>("Hello from for-in!").{core::Iterable::iterator}{core::Iterator<core::String*>*};
+    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("Hello from for-in!").{core::Iterable::iterator}{core::Iterator<core::String>};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
-      core::String* s = :sync-for-iterator.{core::Iterator::current}{core::String*};
+      core::String s = :sync-for-iterator.{core::Iterator::current}{core::String};
       {
         core::print(s);
       }
     }
   }
   {
-    core::Iterator<core::String*>* :sync-for-iterator = core::_GrowableList::_literal1<core::String*>("Hello from for-in without block!").{core::Iterable::iterator}{core::Iterator<core::String*>*};
+    core::Iterator<core::String> :sync-for-iterator = core::_GrowableList::_literal1<core::String>("Hello from for-in without block!").{core::Iterable::iterator}{core::Iterator<core::String>};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
-      core::String* s = :sync-for-iterator.{core::Iterator::current}{core::String*};
+      core::String s = :sync-for-iterator.{core::Iterator::current}{core::String};
       core::print(s);
     }
   }
   dynamic s;
   {
-    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl!").{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    core::Iterator<dynamic> :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl!").{core::Iterable::iterator}{core::Iterator<dynamic>};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
       final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
@@ -111,7 +111,7 @@
     }
   }
   {
-    core::Iterator<dynamic>* :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl and block!").{core::Iterable::iterator}{core::Iterator<dynamic>*};
+    core::Iterator<dynamic> :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl and block!").{core::Iterable::iterator}{core::Iterator<dynamic>};
     for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
       final dynamic #t5 = :sync-for-iterator.{core::Iterator::current}{dynamic};
       {
@@ -125,15 +125,15 @@
     try {
       throw "Hello from rethrow!";
     }
-    on dynamic catch(final dynamic e) {
+    on core::Object catch(final core::Object e) {
       rethrow;
     }
   }
-  on dynamic catch(final dynamic e) {
+  on core::Object catch(final core::Object e) {
     core::print(e);
   }
   self::foo();
-  core::bool* done = false;
+  core::bool done = false;
   while (!done) {
     done = true;
     core::print("Hello from while!");
@@ -144,7 +144,7 @@
   try {
     assert(false, "Hello from assert!");
   }
-  on dynamic catch(final dynamic e) {
+  on core::Object catch(final core::Object e) {
     core::print(e);
   }
   #L3:
@@ -208,13 +208,13 @@
         continue #L13;
       }
   }
-  core::int* i = 0;
+  core::int i = 0;
   #L15:
   do
     #L16:
     {
       core::print("Hello from do-while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1){(core::num) → core::int}).{core::num::<}(3){(core::num) → core::bool})
         break #L16;
       break #L15;
     }
@@ -225,7 +225,7 @@
     #L18:
     {
       core::print("Hello from while!");
-      if((i = i.{core::num::+}(1){(core::num*) →* core::int*}).{core::num::<}(3){(core::num*) →* core::bool*})
+      if((i = i.{core::num::+}(1){(core::num) → core::int}).{core::num::<}(3){(core::num) → core::bool})
         break #L18;
       break #L17;
     }
diff --git a/pkg/front_end/testcases/general/static_setter.dart b/pkg/front_end/testcases/general/static_setter.dart
index e773018..4a9392b 100644
--- a/pkg/front_end/testcases/general/static_setter.dart
+++ b/pkg/front_end/testcases/general/static_setter.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class Foo {}
 
 set foo(x) {}
diff --git a/pkg/front_end/testcases/general/static_setter.dart.textual_outline.expect b/pkg/front_end/testcases/general/static_setter.dart.textual_outline.expect
index 73b630c..e45f3a8 100644
--- a/pkg/front_end/testcases/general/static_setter.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/static_setter.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {}
 
 set foo(x) {}
diff --git a/pkg/front_end/testcases/general/static_setter.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/static_setter.dart.textual_outline_modelled.expect
index 73ad9d4..cad463e 100644
--- a/pkg/front_end/testcases/general/static_setter.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/static_setter.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {}
 
 main() {}
diff --git a/pkg/front_end/testcases/general/static_setter.dart.weak.expect b/pkg/front_end/testcases/general/static_setter.dart.weak.expect
index 33c8de3..1429577 100644
--- a/pkg/front_end/testcases/general/static_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/general/static_setter.dart.weak.expect
@@ -1,21 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static set foo(dynamic x) → void {}
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/static_setter.dart.weak.modular.expect b/pkg/front_end/testcases/general/static_setter.dart.weak.modular.expect
index 33c8de3..1429577 100644
--- a/pkg/front_end/testcases/general/static_setter.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/static_setter.dart.weak.modular.expect
@@ -1,21 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static set foo(dynamic x) → void {}
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/static_setter.dart.weak.outline.expect b/pkg/front_end/testcases/general/static_setter.dart.weak.outline.expect
index 950e232..f2d4094 100644
--- a/pkg/front_end/testcases/general/static_setter.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/static_setter.dart.weak.outline.expect
@@ -1,20 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static set foo(dynamic x) → void
   ;
diff --git a/pkg/front_end/testcases/general/static_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/general/static_setter.dart.weak.transformed.expect
index 33c8de3..1429577 100644
--- a/pkg/front_end/testcases/general/static_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/static_setter.dart.weak.transformed.expect
@@ -1,21 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static set foo(dynamic x) → void {}
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/general/store_load.dart b/pkg/front_end/testcases/general/store_load.dart
index 1edbe1c8..7f8e421 100644
--- a/pkg/front_end/testcases/general/store_load.dart
+++ b/pkg/front_end/testcases/general/store_load.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart=2.9
-
 class Foo {
   var _field;
 }
diff --git a/pkg/front_end/testcases/general/store_load.dart.textual_outline.expect b/pkg/front_end/testcases/general/store_load.dart.textual_outline.expect
index d97c46e..12677c1 100644
--- a/pkg/front_end/testcases/general/store_load.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {
   var _field;
 }
diff --git a/pkg/front_end/testcases/general/store_load.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/store_load.dart.textual_outline_modelled.expect
index aeef11b..d24c44c 100644
--- a/pkg/front_end/testcases/general/store_load.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Bar {
   var _field;
 }
diff --git a/pkg/front_end/testcases/general/store_load.dart.weak.expect b/pkg/front_end/testcases/general/store_load.dart.weak.expect
index b5b20a2..5fe805c 100644
--- a/pkg/front_end/testcases/general/store_load.dart.weak.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.weak.expect
@@ -1,75 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
   field dynamic _field = null;
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class FooValue extends core::Object {
-  synthetic constructor •() → self::FooValue*
+  synthetic constructor •() → self::FooValue
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Bar extends core::Object {
   field dynamic _field = null;
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class BarValue extends core::Object {
-  synthetic constructor •() → self::BarValue*
+  synthetic constructor •() → self::BarValue
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  self::Foo* foo = new self::Foo::•();
+  self::Foo foo = new self::Foo::•();
   foo.{self::Foo::_field} = new self::FooValue::•();
   dynamic fooValue = foo.{self::Foo::_field}{dynamic};
   core::print(fooValue);
-  self::Bar* bar = new self::Bar::•();
+  self::Bar bar = new self::Bar::•();
   bar.{self::Bar::_field} = new self::BarValue::•();
   dynamic barValue = bar.{self::Bar::_field}{dynamic};
   core::print(barValue);
diff --git a/pkg/front_end/testcases/general/store_load.dart.weak.modular.expect b/pkg/front_end/testcases/general/store_load.dart.weak.modular.expect
index b5b20a2..5fe805c 100644
--- a/pkg/front_end/testcases/general/store_load.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.weak.modular.expect
@@ -1,75 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
   field dynamic _field = null;
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class FooValue extends core::Object {
-  synthetic constructor •() → self::FooValue*
+  synthetic constructor •() → self::FooValue
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Bar extends core::Object {
   field dynamic _field = null;
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class BarValue extends core::Object {
-  synthetic constructor •() → self::BarValue*
+  synthetic constructor •() → self::BarValue
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  self::Foo* foo = new self::Foo::•();
+  self::Foo foo = new self::Foo::•();
   foo.{self::Foo::_field} = new self::FooValue::•();
   dynamic fooValue = foo.{self::Foo::_field}{dynamic};
   core::print(fooValue);
-  self::Bar* bar = new self::Bar::•();
+  self::Bar bar = new self::Bar::•();
   bar.{self::Bar::_field} = new self::BarValue::•();
   dynamic barValue = bar.{self::Bar::_field}{dynamic};
   core::print(barValue);
diff --git a/pkg/front_end/testcases/general/store_load.dart.weak.outline.expect b/pkg/front_end/testcases/general/store_load.dart.weak.outline.expect
index 6aaf967..8e799c2 100644
--- a/pkg/front_end/testcases/general/store_load.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.weak.outline.expect
@@ -1,64 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
   field dynamic _field;
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class FooValue extends core::Object {
-  synthetic constructor •() → self::FooValue*
+  synthetic constructor •() → self::FooValue
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Bar extends core::Object {
   field dynamic _field;
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class BarValue extends core::Object {
-  synthetic constructor •() → self::BarValue*
+  synthetic constructor •() → self::BarValue
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/store_load.dart.weak.transformed.expect b/pkg/front_end/testcases/general/store_load.dart.weak.transformed.expect
index b5b20a2..5fe805c 100644
--- a/pkg/front_end/testcases/general/store_load.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/store_load.dart.weak.transformed.expect
@@ -1,75 +1,35 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
   field dynamic _field = null;
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class FooValue extends core::Object {
-  synthetic constructor •() → self::FooValue*
+  synthetic constructor •() → self::FooValue
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Bar extends core::Object {
   field dynamic _field = null;
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class BarValue extends core::Object {
-  synthetic constructor •() → self::BarValue*
+  synthetic constructor •() → self::BarValue
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  self::Foo* foo = new self::Foo::•();
+  self::Foo foo = new self::Foo::•();
   foo.{self::Foo::_field} = new self::FooValue::•();
   dynamic fooValue = foo.{self::Foo::_field}{dynamic};
   core::print(fooValue);
-  self::Bar* bar = new self::Bar::•();
+  self::Bar bar = new self::Bar::•();
   bar.{self::Bar::_field} = new self::BarValue::•();
   dynamic barValue = bar.{self::Bar::_field}{dynamic};
   core::print(barValue);
diff --git a/pkg/front_end/testcases/general/stream_future.dart b/pkg/front_end/testcases/general/stream_future.dart
index 213cc5d..8904ea0 100644
--- a/pkg/front_end/testcases/general/stream_future.dart
+++ b/pkg/front_end/testcases/general/stream_future.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. 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
+
 import 'dart:async';
 
 class Class {}
diff --git a/pkg/front_end/testcases/general/stream_future.dart.textual_outline.expect b/pkg/front_end/testcases/general/stream_future.dart.textual_outline.expect
index 58da8eb..b720b02 100644
--- a/pkg/front_end/testcases/general/stream_future.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/stream_future.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'dart:async';
 
 class Class {}
diff --git a/pkg/front_end/testcases/general/stream_future.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/stream_future.dart.textual_outline_modelled.expect
index 3799403..38f650e 100644
--- a/pkg/front_end/testcases/general/stream_future.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/stream_future.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'dart:async';
 
 Class returnClass() => new Class();
diff --git a/pkg/front_end/testcases/general/stream_future.dart.weak.expect b/pkg/front_end/testcases/general/stream_future.dart.weak.expect
index 2914b7b..b2cbd2b 100644
--- a/pkg/front_end/testcases/general/stream_future.dart.weak.expect
+++ b/pkg/front_end/testcases/general/stream_future.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,42 +15,32 @@
 import "dart:async";
 
 class Class extends core::Object {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method returnDynamic() → dynamic
   return new self::Class::•();
-static method returnClass() → self::Class*
+static method returnClass() → self::Class
   return new self::Class::•();
-static method returnFutureDynamic() → asy::Future<dynamic>* async 
+static method returnFutureDynamic() → asy::Future<dynamic> async 
   return new self::Class::•();
-static method returnFutureClass() → asy::Future<self::Class*>* async 
+static method returnFutureClass() → asy::Future<self::Class> async 
   return new self::Class::•();
-static method error() → asy::Stream<FutureOr<self::Class*>*>* async* {
+static method error() → asy::Stream<FutureOr<self::Class>> async* {
   yield invalid-expression "pkg/front_end/testcases/general/stream_future.dart:18:9: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'FutureOr<Class>'.
  - 'Future' is from 'dart:async'.
  - 'Class' is from 'pkg/front_end/testcases/general/stream_future.dart'.
   yield returnFutureDynamic();
-        ^" in self::returnFutureDynamic() as{TypeError} FutureOr<self::Class*>*;
+        ^" in self::returnFutureDynamic() as{TypeError,ForNonNullableByDefault} FutureOr<self::Class>;
 }
-static method stream() → asy::Stream<FutureOr<self::Class*>*>* async* {
-  yield self::returnDynamic() as{TypeError,ForDynamic} FutureOr<self::Class*>*;
+static method stream() → asy::Stream<FutureOr<self::Class>> async* {
+  yield self::returnDynamic() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<self::Class>;
   yield self::returnClass();
   yield self::returnFutureClass();
 }
 static method main() → dynamic async {
-  await for (FutureOr<self::Class*>* cls in self::stream()) {
+  await for (FutureOr<self::Class>cls in self::stream()) {
     core::print(cls);
   }
 }
diff --git a/pkg/front_end/testcases/general/stream_future.dart.weak.modular.expect b/pkg/front_end/testcases/general/stream_future.dart.weak.modular.expect
index 2914b7b..b2cbd2b 100644
--- a/pkg/front_end/testcases/general/stream_future.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/stream_future.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -15,42 +15,32 @@
 import "dart:async";
 
 class Class extends core::Object {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method returnDynamic() → dynamic
   return new self::Class::•();
-static method returnClass() → self::Class*
+static method returnClass() → self::Class
   return new self::Class::•();
-static method returnFutureDynamic() → asy::Future<dynamic>* async 
+static method returnFutureDynamic() → asy::Future<dynamic> async 
   return new self::Class::•();
-static method returnFutureClass() → asy::Future<self::Class*>* async 
+static method returnFutureClass() → asy::Future<self::Class> async 
   return new self::Class::•();
-static method error() → asy::Stream<FutureOr<self::Class*>*>* async* {
+static method error() → asy::Stream<FutureOr<self::Class>> async* {
   yield invalid-expression "pkg/front_end/testcases/general/stream_future.dart:18:9: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'FutureOr<Class>'.
  - 'Future' is from 'dart:async'.
  - 'Class' is from 'pkg/front_end/testcases/general/stream_future.dart'.
   yield returnFutureDynamic();
-        ^" in self::returnFutureDynamic() as{TypeError} FutureOr<self::Class*>*;
+        ^" in self::returnFutureDynamic() as{TypeError,ForNonNullableByDefault} FutureOr<self::Class>;
 }
-static method stream() → asy::Stream<FutureOr<self::Class*>*>* async* {
-  yield self::returnDynamic() as{TypeError,ForDynamic} FutureOr<self::Class*>*;
+static method stream() → asy::Stream<FutureOr<self::Class>> async* {
+  yield self::returnDynamic() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<self::Class>;
   yield self::returnClass();
   yield self::returnFutureClass();
 }
 static method main() → dynamic async {
-  await for (FutureOr<self::Class*>* cls in self::stream()) {
+  await for (FutureOr<self::Class>cls in self::stream()) {
     core::print(cls);
   }
 }
diff --git a/pkg/front_end/testcases/general/stream_future.dart.weak.outline.expect b/pkg/front_end/testcases/general/stream_future.dart.weak.outline.expect
index f45cc85..cc394d3 100644
--- a/pkg/front_end/testcases/general/stream_future.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/stream_future.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
@@ -6,30 +6,20 @@
 import "dart:async";
 
 class Class extends core::Object {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method returnDynamic() → dynamic
   ;
-static method returnClass() → self::Class*
+static method returnClass() → self::Class
   ;
-static method returnFutureDynamic() → asy::Future<dynamic>* async 
+static method returnFutureDynamic() → asy::Future<dynamic> async 
   ;
-static method returnFutureClass() → asy::Future<self::Class*>* async 
+static method returnFutureClass() → asy::Future<self::Class> async 
   ;
-static method error() → asy::Stream<FutureOr<self::Class*>*>* async* 
+static method error() → asy::Stream<FutureOr<self::Class>> async* 
   ;
-static method stream() → asy::Stream<FutureOr<self::Class*>*>* async* 
+static method stream() → asy::Stream<FutureOr<self::Class>> async* 
   ;
 static method main() → dynamic async 
   ;
diff --git a/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect b/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect
index 7730f84..d609d5a 100644
--- a/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -16,31 +16,21 @@
 import "dart:async";
 
 class Class extends core::Object {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method returnDynamic() → dynamic
   return new self::Class::•();
-static method returnClass() → self::Class*
+static method returnClass() → self::Class
   return new self::Class::•();
-static method returnFutureDynamic() → asy::Future<dynamic>* /* originally async */ {
-  final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
+static method returnFutureDynamic() → asy::Future<dynamic> /* originally async */ {
+  final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
   core::bool* :is_sync = false;
   dynamic :return_value;
-  (dynamic) →* dynamic :async_op_then;
-  (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-  core::int* :await_jump_var = 0;
+  (dynamic) → dynamic :async_op_then;
+  (core::Object, core::StackTrace) → dynamic :async_op_error;
+  core::int :await_jump_var = 0;
   dynamic :await_ctx_var;
   function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding 
     try {
@@ -52,22 +42,22 @@
       asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
     }
-    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
       asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op(null, null){() →* dynamic};
+  :async_op(null, null){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
-static method returnFutureClass() → asy::Future<self::Class*>* /* originally async */ {
-  final asy::_Future<self::Class*>* :async_future = new asy::_Future::•<self::Class*>();
+static method returnFutureClass() → asy::Future<self::Class> /* originally async */ {
+  final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
   core::bool* :is_sync = false;
   self::Class? :return_value;
-  (dynamic) →* dynamic :async_op_then;
-  (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-  core::int* :await_jump_var = 0;
+  (dynamic) → dynamic :async_op_then;
+  (core::Object, core::StackTrace) → dynamic :async_op_error;
+  core::int :await_jump_var = 0;
   dynamic :await_ctx_var;
   function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding 
     try {
@@ -79,21 +69,21 @@
       asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
     }
-    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
       asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op(null, null){() →* dynamic};
+  :async_op(null, null){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
-static method error() → asy::Stream<FutureOr<self::Class*>*>* /* originally async* */ {
-  asy::_AsyncStarStreamController<FutureOr<self::Class*>*>* :controller;
+static method error() → asy::Stream<FutureOr<self::Class>> /* originally async* */ {
+  asy::_AsyncStarStreamController<FutureOr<self::Class>>? :controller;
   dynamic :controller_stream;
-  (dynamic) →* dynamic :async_op_then;
-  (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-  core::int* :await_jump_var = 0;
+  (dynamic) → dynamic :async_op_then;
+  (core::Object, core::StackTrace) → dynamic :async_op_error;
+  core::int :await_jump_var = 0;
   dynamic :await_ctx_var;
   dynamic :saved_try_context_var0;
   dynamic :saved_try_context_var1;
@@ -106,14 +96,14 @@
  - 'Future' is from 'dart:async'.
  - 'Class' is from 'pkg/front_end/testcases/general/stream_future.dart'.
   yield returnFutureDynamic();
-        ^" in self::returnFutureDynamic() as{TypeError} FutureOr<self::Class*>*){(FutureOr<self::Class*>*) → core::bool})
+        ^" in self::returnFutureDynamic() as{TypeError,ForNonNullableByDefault} FutureOr<self::Class>){(FutureOr<self::Class>) → core::bool})
             return null;
           else
             [yield] null;
         }
         return;
       }
-      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
         :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
@@ -121,16 +111,16 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :controller = new asy::_AsyncStarStreamController::•<FutureOr<self::Class*>*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<FutureOr<self::Class*>*>};
+  :controller = new asy::_AsyncStarStreamController::•<FutureOr<self::Class>>(:async_op);
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<FutureOr<self::Class>>};
   return :controller_stream;
 }
-static method stream() → asy::Stream<FutureOr<self::Class*>*>* /* originally async* */ {
-  asy::_AsyncStarStreamController<FutureOr<self::Class*>*>* :controller;
+static method stream() → asy::Stream<FutureOr<self::Class>> /* originally async* */ {
+  asy::_AsyncStarStreamController<FutureOr<self::Class>>? :controller;
   dynamic :controller_stream;
-  (dynamic) →* dynamic :async_op_then;
-  (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-  core::int* :await_jump_var = 0;
+  (dynamic) → dynamic :async_op_then;
+  (core::Object, core::StackTrace) → dynamic :async_op_error;
+  core::int :await_jump_var = 0;
   dynamic :await_ctx_var;
   dynamic :saved_try_context_var0;
   dynamic :saved_try_context_var1;
@@ -139,22 +129,22 @@
       try {
         #L4:
         {
-          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnDynamic() as{TypeError,ForDynamic} FutureOr<self::Class*>*){(FutureOr<self::Class*>*) → core::bool})
+          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnDynamic() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<self::Class>){(FutureOr<self::Class>) → core::bool})
             return null;
           else
             [yield] null;
-          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnClass()){(FutureOr<self::Class*>*) → core::bool})
+          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnClass()){(FutureOr<self::Class>) → core::bool})
             return null;
           else
             [yield] null;
-          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnFutureClass()){(FutureOr<self::Class*>*) → core::bool})
+          if(:controller.{asy::_AsyncStarStreamController::add}(self::returnFutureClass()){(FutureOr<self::Class>) → core::bool})
             return null;
           else
             [yield] null;
         }
         return;
       }
-      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
         :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
       }
     finally {
@@ -162,17 +152,17 @@
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :controller = new asy::_AsyncStarStreamController::•<FutureOr<self::Class*>*>(:async_op);
-  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<FutureOr<self::Class*>*>};
+  :controller = new asy::_AsyncStarStreamController::•<FutureOr<self::Class>>(:async_op);
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<FutureOr<self::Class>>};
   return :controller_stream;
 }
 static method main() → dynamic /* originally async */ {
-  final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
+  final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
   core::bool* :is_sync = false;
   dynamic :return_value;
-  (dynamic) →* dynamic :async_op_then;
-  (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-  core::int* :await_jump_var = 0;
+  (dynamic) → dynamic :async_op_then;
+  (core::Object, core::StackTrace) → dynamic :async_op_error;
+  core::int :await_jump_var = 0;
   dynamic :await_ctx_var;
   dynamic :saved_try_context_var0;
   dynamic :saved_try_context_var1;
@@ -183,15 +173,15 @@
       #L5:
       {
         {
-          asy::Stream<FutureOr<self::Class*>*>* :stream = self::stream();
-          asy::_StreamIterator<FutureOr<self::Class*>*>* :for-iterator = new asy::_StreamIterator::•<FutureOr<self::Class*>*>(:stream);
+          asy::Stream<FutureOr<self::Class>> :stream = self::stream();
+          asy::_StreamIterator<FutureOr<self::Class>>? :for-iterator = new asy::_StreamIterator::•<FutureOr<self::Class>>(:stream);
           try
             #L6:
             while (true) {
               dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
               [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
               if(_in::unsafeCast<core::bool>(:result_or_exception)) {
-                FutureOr<self::Class*>* cls = :for-iterator.{asy::_StreamIterator::current}{FutureOr<self::Class*>*};
+                FutureOr<self::Class>cls = :for-iterator.{asy::_StreamIterator::current}{FutureOr<self::Class>};
                 {
                   core::print(cls);
                 }
@@ -200,7 +190,7 @@
                 break #L6;
             }
           finally
-            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<FutureOr<self::Class*>*>?} == null)) {
+            if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<FutureOr<self::Class>>?} == null)) {
               [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
               :result_or_exception;
             }
@@ -209,12 +199,12 @@
       asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
       return;
     }
-    on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+    on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
       asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
     }
   :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
   :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-  :async_op(null, null){() →* dynamic};
+  :async_op(null, null){() → dynamic};
   :is_sync = true;
   return :async_future;
 }
diff --git a/pkg/front_end/testcases/general/stringliteral.dart b/pkg/front_end/testcases/general/stringliteral.dart
index 52791ab..bb1bc643 100644
--- a/pkg/front_end/testcases/general/stringliteral.dart
+++ b/pkg/front_end/testcases/general/stringliteral.dart
@@ -1,11 +1,12 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
+
 var color = 'brown';
 var thing = 'lazy dog';
 var phrase = "The quick $color fox\njumped over the $thing.\n";
 var adjacent = '$color$color$color';
 var linebreaks = '$color\n$color\n$color';
 var other = '$color\n is \n$color';
-// @dart=2.9
+
 main() {}
diff --git a/pkg/front_end/testcases/general/super_access_in_initializer.dart b/pkg/front_end/testcases/general/super_access_in_initializer.dart
index ee351d0..2bab9f4 100644
--- a/pkg/front_end/testcases/general/super_access_in_initializer.dart
+++ b/pkg/front_end/testcases/general/super_access_in_initializer.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. 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
+
 class Super {
   bool get property => true;
 
diff --git a/pkg/front_end/testcases/general/super_access_in_initializer.dart.textual_outline.expect b/pkg/front_end/testcases/general/super_access_in_initializer.dart.textual_outline.expect
index 90a2cf1..5548e99 100644
--- a/pkg/front_end/testcases/general/super_access_in_initializer.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/super_access_in_initializer.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Super {
   bool get property => true;
   Super(bool value);
diff --git a/pkg/front_end/testcases/general/super_access_in_initializer.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/super_access_in_initializer.dart.textual_outline_modelled.expect
index 94cf602..b009d58 100644
--- a/pkg/front_end/testcases/general/super_access_in_initializer.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/super_access_in_initializer.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Class extends Super {
   Class(bool value)
       : assert(property),
diff --git a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.expect b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.expect
index 651a9c4..f632d17 100644
--- a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -22,25 +22,15 @@
 import "dart:core" as core;
 
 class Super extends core::Object {
-  constructor •(core::bool* value) → self::Super*
+  constructor •(core::bool value) → self::Super
     : super core::Object::•()
     ;
-  get property() → core::bool*
+  get property() → core::bool
     return true;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Class extends self::Super {
-  field core::bool* field;
-  constructor •(core::bool* value) → self::Class*
+  field core::bool field;
+  constructor •(core::bool value) → self::Class
     : assert(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Undefined name 'property'.
       : assert(property),
                ^^^^^^^^"), self::Class::field = invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Undefined name 'property'.
@@ -49,7 +39,7 @@
         super(property);
               ^^^^^^^^")
     ;
-  constructor redirect() → self::Class*
+  constructor redirect() → self::Class
     : this self::Class::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Undefined name 'property'.
   Class.redirect() : this(property);
                           ^^^^^^^^")
diff --git a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.modular.expect b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.modular.expect
index 651a9c4..f632d17 100644
--- a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -22,25 +22,15 @@
 import "dart:core" as core;
 
 class Super extends core::Object {
-  constructor •(core::bool* value) → self::Super*
+  constructor •(core::bool value) → self::Super
     : super core::Object::•()
     ;
-  get property() → core::bool*
+  get property() → core::bool
     return true;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Class extends self::Super {
-  field core::bool* field;
-  constructor •(core::bool* value) → self::Class*
+  field core::bool field;
+  constructor •(core::bool value) → self::Class
     : assert(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Undefined name 'property'.
       : assert(property),
                ^^^^^^^^"), self::Class::field = invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Undefined name 'property'.
@@ -49,7 +39,7 @@
         super(property);
               ^^^^^^^^")
     ;
-  constructor redirect() → self::Class*
+  constructor redirect() → self::Class
     : this self::Class::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Undefined name 'property'.
   Class.redirect() : this(property);
                           ^^^^^^^^")
diff --git a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.outline.expect b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.outline.expect
index 3b22099..0dda552 100644
--- a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.outline.expect
@@ -1,28 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Super extends core::Object {
-  constructor •(core::bool* value) → self::Super*
+  constructor •(core::bool value) → self::Super
     ;
-  get property() → core::bool*
+  get property() → core::bool
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Class extends self::Super {
-  field core::bool* field;
-  constructor •(core::bool* value) → self::Class*
+  field core::bool field;
+  constructor •(core::bool value) → self::Class
     ;
-  constructor redirect() → self::Class*
+  constructor redirect() → self::Class
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.transformed.expect
index 651a9c4..f632d17 100644
--- a/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/super_access_in_initializer.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -22,25 +22,15 @@
 import "dart:core" as core;
 
 class Super extends core::Object {
-  constructor •(core::bool* value) → self::Super*
+  constructor •(core::bool value) → self::Super
     : super core::Object::•()
     ;
-  get property() → core::bool*
+  get property() → core::bool
     return true;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Class extends self::Super {
-  field core::bool* field;
-  constructor •(core::bool* value) → self::Class*
+  field core::bool field;
+  constructor •(core::bool value) → self::Class
     : assert(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:15:16: Error: Undefined name 'property'.
       : assert(property),
                ^^^^^^^^"), self::Class::field = invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:16:22: Error: Undefined name 'property'.
@@ -49,7 +39,7 @@
         super(property);
               ^^^^^^^^")
     ;
-  constructor redirect() → self::Class*
+  constructor redirect() → self::Class
     : this self::Class::•(invalid-expression "pkg/front_end/testcases/general/super_access_in_initializer.dart:19:27: Error: Undefined name 'property'.
   Class.redirect() : this(property);
                           ^^^^^^^^")
diff --git a/pkg/front_end/testcases/general/super_call.dart b/pkg/front_end/testcases/general/super_call.dart
index 0ba2666..fe0edf0 100644
--- a/pkg/front_end/testcases/general/super_call.dart
+++ b/pkg/front_end/testcases/general/super_call.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart=2.9
-
 class A {
   int call(int x) => x * 2;
 }
diff --git a/pkg/front_end/testcases/general/super_call.dart.textual_outline.expect b/pkg/front_end/testcases/general/super_call.dart.textual_outline.expect
index c9282f5..08fd0e2 100644
--- a/pkg/front_end/testcases/general/super_call.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   int call(int x) => x * 2;
 }
diff --git a/pkg/front_end/testcases/general/super_call.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/super_call.dart.textual_outline_modelled.expect
index c9282f5..08fd0e2 100644
--- a/pkg/front_end/testcases/general/super_call.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   int call(int x) => x * 2;
 }
diff --git a/pkg/front_end/testcases/general/super_call.dart.weak.expect b/pkg/front_end/testcases/general/super_call.dart.weak.expect
index 1e7e27c..895bf30 100644
--- a/pkg/front_end/testcases/general/super_call.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.weak.expect
@@ -1,34 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method call(core::int* x) → core::int*
-    return x.{core::num::*}(2){(core::num*) →* core::int*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method call(core::int x) → core::int
+    return x.{core::num::*}(2){(core::num) → core::int};
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  method call(core::int* x) → core::int*
-    return x.{core::num::*}(3){(core::num*) →* core::int*};
-  method call_super() → core::int* {
+  method call(core::int x) → core::int
+    return x.{core::num::*}(3){(core::num) → core::int};
+  method call_super() → core::int {
     return super.{self::A::call}(5);
   }
 }
 static method main() → dynamic {
-  assert(new self::B::•().{self::B::call_super}(){() →* core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 10);
+  assert(new self::B::•().{self::B::call_super}(){() → core::int} =={core::num::==}{(core::Object) → core::bool} 10);
 }
diff --git a/pkg/front_end/testcases/general/super_call.dart.weak.modular.expect b/pkg/front_end/testcases/general/super_call.dart.weak.modular.expect
index 1e7e27c..895bf30 100644
--- a/pkg/front_end/testcases/general/super_call.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.weak.modular.expect
@@ -1,34 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method call(core::int* x) → core::int*
-    return x.{core::num::*}(2){(core::num*) →* core::int*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method call(core::int x) → core::int
+    return x.{core::num::*}(2){(core::num) → core::int};
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  method call(core::int* x) → core::int*
-    return x.{core::num::*}(3){(core::num*) →* core::int*};
-  method call_super() → core::int* {
+  method call(core::int x) → core::int
+    return x.{core::num::*}(3){(core::num) → core::int};
+  method call_super() → core::int {
     return super.{self::A::call}(5);
   }
 }
 static method main() → dynamic {
-  assert(new self::B::•().{self::B::call_super}(){() →* core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 10);
+  assert(new self::B::•().{self::B::call_super}(){() → core::int} =={core::num::==}{(core::Object) → core::bool} 10);
 }
diff --git a/pkg/front_end/testcases/general/super_call.dart.weak.outline.expect b/pkg/front_end/testcases/general/super_call.dart.weak.outline.expect
index 5ec03c1..0fcdffb 100644
--- a/pkg/front_end/testcases/general/super_call.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.weak.outline.expect
@@ -1,29 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  method call(core::int* x) → core::int*
+  method call(core::int x) → core::int
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  method call(core::int* x) → core::int*
+  method call(core::int x) → core::int
     ;
-  method call_super() → core::int*
+  method call_super() → core::int
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/super_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_call.dart.weak.transformed.expect
index 1e7e27c..895bf30 100644
--- a/pkg/front_end/testcases/general/super_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/super_call.dart.weak.transformed.expect
@@ -1,34 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  method call(core::int* x) → core::int*
-    return x.{core::num::*}(2){(core::num*) →* core::int*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method call(core::int x) → core::int
+    return x.{core::num::*}(2){(core::num) → core::int};
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
-  method call(core::int* x) → core::int*
-    return x.{core::num::*}(3){(core::num*) →* core::int*};
-  method call_super() → core::int* {
+  method call(core::int x) → core::int
+    return x.{core::num::*}(3){(core::num) → core::int};
+  method call_super() → core::int {
     return super.{self::A::call}(5);
   }
 }
 static method main() → dynamic {
-  assert(new self::B::•().{self::B::call_super}(){() →* core::int*} =={core::num::==}{(core::Object*) →* core::bool*} 10);
+  assert(new self::B::•().{self::B::call_super}(){() → core::int} =={core::num::==}{(core::Object) → core::bool} 10);
 }
diff --git a/pkg/front_end/testcases/general/super_nsm.dart b/pkg/front_end/testcases/general/super_nsm.dart
index b94b99e..d4cfc6d 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart
+++ b/pkg/front_end/testcases/general/super_nsm.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 abstract class I {
   interfaceMethod();
 }
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.textual_outline.expect b/pkg/front_end/testcases/general/super_nsm.dart.textual_outline.expect
index c9c9e06..39c0416 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class I {
   interfaceMethod();
 }
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/super_nsm.dart.textual_outline_modelled.expect
index f127290..8dcf482 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class I {
   interfaceMethod();
 }
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
index 671d437..214ac1e 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.expect
@@ -1,53 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class I extends core::Object {
-  synthetic constructor •() → self::I*
+  synthetic constructor •() → self::I
     : super core::Object::•()
     ;
   abstract method interfaceMethod() → dynamic;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object implements self::I {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method noSuchMethod(core::Invocation* _) → dynamic
+  method noSuchMethod(core::Invocation _) → dynamic
     return "C";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} dynamic;
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  method noSuchMethod(core::Invocation* _) → dynamic
+  method noSuchMethod(core::Invocation _) → dynamic
     return "D";
   method dMethod() → dynamic
     return super.{self::C::interfaceMethod}();
 }
 static method main() → dynamic {
-  dynamic result = new self::D::•().{self::D::dMethod}(){() →* dynamic};
-  if(!(result =={core::Object::==}{(core::Object*) →* core::bool*} "D"))
+  dynamic result = new self::D::•().{self::D::dMethod}(){() → dynamic};
+  if(!(result =={core::Object::==}{(core::Object) → core::bool} "D"))
     throw "Expected 'D' but got: '${result}'";
 }
 
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.modular.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.modular.expect
index 671d437..214ac1e 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.modular.expect
@@ -1,53 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class I extends core::Object {
-  synthetic constructor •() → self::I*
+  synthetic constructor •() → self::I
     : super core::Object::•()
     ;
   abstract method interfaceMethod() → dynamic;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object implements self::I {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method noSuchMethod(core::Invocation* _) → dynamic
+  method noSuchMethod(core::Invocation _) → dynamic
     return "C";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} dynamic;
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  method noSuchMethod(core::Invocation* _) → dynamic
+  method noSuchMethod(core::Invocation _) → dynamic
     return "D";
   method dMethod() → dynamic
     return super.{self::C::interfaceMethod}();
 }
 static method main() → dynamic {
-  dynamic result = new self::D::•().{self::D::dMethod}(){() →* dynamic};
-  if(!(result =={core::Object::==}{(core::Object*) →* core::bool*} "D"))
+  dynamic result = new self::D::•().{self::D::dMethod}(){() → dynamic};
+  if(!(result =={core::Object::==}{(core::Object) → core::bool} "D"))
     throw "Expected 'D' but got: '${result}'";
 }
 
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
index 436dba3..a2bcec4 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.outline.expect
@@ -1,43 +1,24 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class I extends core::Object {
-  synthetic constructor •() → self::I*
+  synthetic constructor •() → self::I
     ;
   abstract method interfaceMethod() → dynamic;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object implements self::I {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  method noSuchMethod(core::Invocation* _) → dynamic
+  method noSuchMethod(core::Invocation _) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#interfaceMethod, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} dynamic;
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  method noSuchMethod(core::Invocation* _) → dynamic
+  method noSuchMethod(core::Invocation _) → dynamic
     ;
   method dMethod() → dynamic
     ;
diff --git a/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect
index 671d437..214ac1e 100644
--- a/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/super_nsm.dart.weak.transformed.expect
@@ -1,53 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class I extends core::Object {
-  synthetic constructor •() → self::I*
+  synthetic constructor •() → self::I
     : super core::Object::•()
     ;
   abstract method interfaceMethod() → dynamic;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object implements self::I {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  method noSuchMethod(core::Invocation* _) → dynamic
+  method noSuchMethod(core::Invocation _) → dynamic
     return "C";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method interfaceMethod() → dynamic
-    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} dynamic;
+    return this.{self::C::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} dynamic;
 }
 class D extends self::C {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
-  method noSuchMethod(core::Invocation* _) → dynamic
+  method noSuchMethod(core::Invocation _) → dynamic
     return "D";
   method dMethod() → dynamic
     return super.{self::C::interfaceMethod}();
 }
 static method main() → dynamic {
-  dynamic result = new self::D::•().{self::D::dMethod}(){() →* dynamic};
-  if(!(result =={core::Object::==}{(core::Object*) →* core::bool*} "D"))
+  dynamic result = new self::D::•().{self::D::dMethod}(){() → dynamic};
+  if(!(result =={core::Object::==}{(core::Object) → core::bool} "D"))
     throw "Expected 'D' but got: '${result}'";
 }
 
diff --git a/pkg/front_end/testcases/general/super_set_abstract.dart b/pkg/front_end/testcases/general/super_set_abstract.dart
index a77248f..2bc0c7d 100644
--- a/pkg/front_end/testcases/general/super_set_abstract.dart
+++ b/pkg/front_end/testcases/general/super_set_abstract.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
 // for details. 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
+
 class SuperClass {
   void set setter(int o) {}
 }
diff --git a/pkg/front_end/testcases/general/super_set_abstract.dart.textual_outline.expect b/pkg/front_end/testcases/general/super_set_abstract.dart.textual_outline.expect
index c75d50d..0310022 100644
--- a/pkg/front_end/testcases/general/super_set_abstract.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/super_set_abstract.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class SuperClass {
   void set setter(int o) {}
 }
diff --git a/pkg/front_end/testcases/general/super_set_abstract.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/super_set_abstract.dart.textual_outline_modelled.expect
index 11095ba..2833ed3 100644
--- a/pkg/front_end/testcases/general/super_set_abstract.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/super_set_abstract.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Class extends SuperClass {
   void set setter(Object o);
 }
diff --git a/pkg/front_end/testcases/general/super_set_abstract.dart.weak.expect b/pkg/front_end/testcases/general/super_set_abstract.dart.weak.expect
index 096efc9..3585745 100644
--- a/pkg/front_end/testcases/general/super_set_abstract.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_set_abstract.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,35 +10,25 @@
 import "dart:core" as core;
 
 class SuperClass extends core::Object {
-  synthetic constructor •() → self::SuperClass*
+  synthetic constructor •() → self::SuperClass
     : super core::Object::•()
     ;
-  set setter(core::int* o) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set setter(core::int o) → void {}
 }
 abstract class Class extends self::SuperClass {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super self::SuperClass::•()
     ;
-  abstract set setter(core::Object* o) → void;
+  abstract set setter(core::Object o) → void;
 }
 class SubClass extends self::Class {
-  synthetic constructor •() → self::SubClass*
+  synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
-  set setter(core::Object* o) → void {
+  set setter(core::Object o) → void {
     super.{self::SuperClass::setter} = invalid-expression "pkg/front_end/testcases/general/super_set_abstract.dart:15:24: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
     super.setter = '\$o';
-                       ^" in "${o}" as{TypeError} core::int*;
+                       ^" in "${o}" as{TypeError,ForNonNullableByDefault} core::int;
   }
 }
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general/super_set_abstract.dart.weak.modular.expect b/pkg/front_end/testcases/general/super_set_abstract.dart.weak.modular.expect
index 096efc9..3585745 100644
--- a/pkg/front_end/testcases/general/super_set_abstract.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/super_set_abstract.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,35 +10,25 @@
 import "dart:core" as core;
 
 class SuperClass extends core::Object {
-  synthetic constructor •() → self::SuperClass*
+  synthetic constructor •() → self::SuperClass
     : super core::Object::•()
     ;
-  set setter(core::int* o) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set setter(core::int o) → void {}
 }
 abstract class Class extends self::SuperClass {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super self::SuperClass::•()
     ;
-  abstract set setter(core::Object* o) → void;
+  abstract set setter(core::Object o) → void;
 }
 class SubClass extends self::Class {
-  synthetic constructor •() → self::SubClass*
+  synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
-  set setter(core::Object* o) → void {
+  set setter(core::Object o) → void {
     super.{self::SuperClass::setter} = invalid-expression "pkg/front_end/testcases/general/super_set_abstract.dart:15:24: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
     super.setter = '\$o';
-                       ^" in "${o}" as{TypeError} core::int*;
+                       ^" in "${o}" as{TypeError,ForNonNullableByDefault} core::int;
   }
 }
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general/super_set_abstract.dart.weak.outline.expect b/pkg/front_end/testcases/general/super_set_abstract.dart.weak.outline.expect
index 265157d..8a4084c 100644
--- a/pkg/front_end/testcases/general/super_set_abstract.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/super_set_abstract.dart.weak.outline.expect
@@ -1,32 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class SuperClass extends core::Object {
-  synthetic constructor •() → self::SuperClass*
+  synthetic constructor •() → self::SuperClass
     ;
-  set setter(core::int* o) → void
+  set setter(core::int o) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Class extends self::SuperClass {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     ;
-  abstract set setter(core::Object* o) → void;
+  abstract set setter(core::Object o) → void;
 }
 class SubClass extends self::Class {
-  synthetic constructor •() → self::SubClass*
+  synthetic constructor •() → self::SubClass
     ;
-  set setter(core::Object* o) → void
+  set setter(core::Object o) → void
     ;
 }
 static method test() → dynamic
diff --git a/pkg/front_end/testcases/general/super_set_abstract.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_set_abstract.dart.weak.transformed.expect
index 096efc9..3585745 100644
--- a/pkg/front_end/testcases/general/super_set_abstract.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/super_set_abstract.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,35 +10,25 @@
 import "dart:core" as core;
 
 class SuperClass extends core::Object {
-  synthetic constructor •() → self::SuperClass*
+  synthetic constructor •() → self::SuperClass
     : super core::Object::•()
     ;
-  set setter(core::int* o) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set setter(core::int o) → void {}
 }
 abstract class Class extends self::SuperClass {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super self::SuperClass::•()
     ;
-  abstract set setter(core::Object* o) → void;
+  abstract set setter(core::Object o) → void;
 }
 class SubClass extends self::Class {
-  synthetic constructor •() → self::SubClass*
+  synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
-  set setter(core::Object* o) → void {
+  set setter(core::Object o) → void {
     super.{self::SuperClass::setter} = invalid-expression "pkg/front_end/testcases/general/super_set_abstract.dart:15:24: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
     super.setter = '\$o';
-                       ^" in "${o}" as{TypeError} core::int*;
+                       ^" in "${o}" as{TypeError,ForNonNullableByDefault} core::int;
   }
 }
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general/super_set_covariant.dart b/pkg/front_end/testcases/general/super_set_covariant.dart
index a7d4d45..f2e1229 100644
--- a/pkg/front_end/testcases/general/super_set_covariant.dart
+++ b/pkg/front_end/testcases/general/super_set_covariant.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart=2.9
-
 class SuperClass {
   void set setter(Object o) {}
 }
diff --git a/pkg/front_end/testcases/general/super_set_covariant.dart.textual_outline.expect b/pkg/front_end/testcases/general/super_set_covariant.dart.textual_outline.expect
index f611304..8a079ae 100644
--- a/pkg/front_end/testcases/general/super_set_covariant.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/super_set_covariant.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class SuperClass {
   void set setter(Object o) {}
 }
diff --git a/pkg/front_end/testcases/general/super_set_covariant.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/super_set_covariant.dart.textual_outline_modelled.expect
index 8ec925e..b6f108c 100644
--- a/pkg/front_end/testcases/general/super_set_covariant.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/super_set_covariant.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Class extends SuperClass {
   void set setter(covariant int o);
 }
diff --git a/pkg/front_end/testcases/general/super_set_covariant.dart.weak.expect b/pkg/front_end/testcases/general/super_set_covariant.dart.weak.expect
index fede2f5..8b391e4 100644
--- a/pkg/front_end/testcases/general/super_set_covariant.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_set_covariant.dart.weak.expect
@@ -1,35 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class SuperClass extends core::Object {
-  synthetic constructor •() → self::SuperClass*
+  synthetic constructor •() → self::SuperClass
     : super core::Object::•()
     ;
-  set setter(core::Object* o) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set setter(core::Object o) → void {}
 }
 abstract class Class extends self::SuperClass {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super self::SuperClass::•()
     ;
-  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int*) →* void */ setter(covariant-by-declaration core::Object* o) → void
+  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter(covariant-by-declaration core::Object o) → void
     return super.{self::SuperClass::setter} = o;
 }
 class SubClass extends self::Class {
-  synthetic constructor •() → self::SubClass*
+  synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
-  set setter(covariant-by-declaration core::int* o) → void {
+  set setter(covariant-by-declaration core::int o) → void {
     super.{self::Class::setter} = "${o}";
   }
 }
diff --git a/pkg/front_end/testcases/general/super_set_covariant.dart.weak.modular.expect b/pkg/front_end/testcases/general/super_set_covariant.dart.weak.modular.expect
index fede2f5..8b391e4 100644
--- a/pkg/front_end/testcases/general/super_set_covariant.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/super_set_covariant.dart.weak.modular.expect
@@ -1,35 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class SuperClass extends core::Object {
-  synthetic constructor •() → self::SuperClass*
+  synthetic constructor •() → self::SuperClass
     : super core::Object::•()
     ;
-  set setter(core::Object* o) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set setter(core::Object o) → void {}
 }
 abstract class Class extends self::SuperClass {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super self::SuperClass::•()
     ;
-  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int*) →* void */ setter(covariant-by-declaration core::Object* o) → void
+  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter(covariant-by-declaration core::Object o) → void
     return super.{self::SuperClass::setter} = o;
 }
 class SubClass extends self::Class {
-  synthetic constructor •() → self::SubClass*
+  synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
-  set setter(covariant-by-declaration core::int* o) → void {
+  set setter(covariant-by-declaration core::int o) → void {
     super.{self::Class::setter} = "${o}";
   }
 }
diff --git a/pkg/front_end/testcases/general/super_set_covariant.dart.weak.outline.expect b/pkg/front_end/testcases/general/super_set_covariant.dart.weak.outline.expect
index 84045f4..c2a93cb 100644
--- a/pkg/front_end/testcases/general/super_set_covariant.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/super_set_covariant.dart.weak.outline.expect
@@ -1,33 +1,23 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class SuperClass extends core::Object {
-  synthetic constructor •() → self::SuperClass*
+  synthetic constructor •() → self::SuperClass
     ;
-  set setter(core::Object* o) → void
+  set setter(core::Object o) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Class extends self::SuperClass {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     ;
-  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int*) →* void */ setter(covariant-by-declaration core::Object* o) → void
+  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter(covariant-by-declaration core::Object o) → void
     return super.{self::SuperClass::setter} = o;
 }
 class SubClass extends self::Class {
-  synthetic constructor •() → self::SubClass*
+  synthetic constructor •() → self::SubClass
     ;
-  set setter(covariant-by-declaration core::int* o) → void
+  set setter(covariant-by-declaration core::int o) → void
     ;
 }
 static method test() → dynamic
diff --git a/pkg/front_end/testcases/general/super_set_covariant.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_set_covariant.dart.weak.transformed.expect
index fede2f5..8b391e4 100644
--- a/pkg/front_end/testcases/general/super_set_covariant.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/super_set_covariant.dart.weak.transformed.expect
@@ -1,35 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class SuperClass extends core::Object {
-  synthetic constructor •() → self::SuperClass*
+  synthetic constructor •() → self::SuperClass
     : super core::Object::•()
     ;
-  set setter(core::Object* o) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set setter(core::Object o) → void {}
 }
 abstract class Class extends self::SuperClass {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super self::SuperClass::•()
     ;
-  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int*) →* void */ setter(covariant-by-declaration core::Object* o) → void
+  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter(covariant-by-declaration core::Object o) → void
     return super.{self::SuperClass::setter} = o;
 }
 class SubClass extends self::Class {
-  synthetic constructor •() → self::SubClass*
+  synthetic constructor •() → self::SubClass
     : super self::Class::•()
     ;
-  set setter(covariant-by-declaration core::int* o) → void {
+  set setter(covariant-by-declaration core::int o) → void {
     super.{self::Class::setter} = "${o}";
   }
 }
diff --git a/tools/VERSION b/tools/VERSION
index fff819f..bdb6626 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 186
+PRERELEASE 187
 PRERELEASE_PATCH 0
\ No newline at end of file