Version 2.17.0-192.0.dev

Merge commit '9dc81176ab8dabad51b42a24203eb85cee7334e3' into 'dev'
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index b8da52c..ff593a0 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -6710,7 +6710,7 @@
         break;
       }
       Token? colon = null;
-      if (optional(':', next.next!)) {
+      if (optional(':', next.next!) || /* recovery */ optional(':', next)) {
         token =
             ensureIdentifier(token, IdentifierContext.namedArgumentReference)
                 .next!;
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
index 2fee0c2..9a11b19 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/arglist_contributor.dart
@@ -2,7 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import 'package:_fe_analyzer_shared/src/scanner/token.dart';
 import 'package:analysis_server/src/provisional/completion/completion_core.dart';
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
@@ -200,16 +199,15 @@
   bool _isEditingNamedArgLabel() {
     if (argumentList != null) {
       var entity = request.target.entity;
-      if (entity is SimpleIdentifier &&
-          entity.isSynthetic &&
-          entity.token.next?.type == TokenType.COLON) {
-        return true;
-      }
       if (entity is NamedExpression) {
         var offset = request.offset;
-        if (entity.offset < offset && offset < entity.end) {
-          return true;
+        var nameId = entity.name.label;
+        // `^id: value` - add a new named argument.
+        // `^: value` - edit the name of this named argument.
+        if (offset == nameId.offset && !nameId.isSynthetic) {
+          return false;
         }
+        return nameId.offset <= offset && offset <= nameId.end;
       }
     }
     return false;
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart
new file mode 100644
index 0000000..5aeef11
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart
@@ -0,0 +1,3 @@
+void f(int x) {
+  g(: 1, bbb: 0);
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.expect
new file mode 100644
index 0000000..a19ccf7
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.expect
@@ -0,0 +1,44 @@
+Problems reported:
+
+parser/error_recovery/issue_48288:2:5: Expected an identifier, but got ':'.
+  g(: 1, bbb: 0);
+    ^
+
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(, null, null)
+      handleVoidKeyword(void)
+      handleIdentifier(f, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        handleIdentifier(g, expression)
+        handleNoTypeArguments(()
+        beginArguments(()
+          handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ':'., Try inserting an identifier before ':'., {lexeme: :}], :, :)
+          handleIdentifier(, namedArgumentReference)
+          handleLiteralInt(1)
+          handleNamedArgument(:)
+          handleIdentifier(bbb, namedArgumentReference)
+          handleLiteralInt(0)
+          handleNamedArgument(:)
+        endArguments(2, (, ))
+        handleSend(g, ;)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(1, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.intertwined.expect
new file mode 100644
index 0000000..1c7b843
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.intertwined.expect
@@ -0,0 +1,92 @@
+parseUnit(void)
+  skipErrorTokens(void)
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(, null, null, , Instance of 'VoidType', null, f, false)
+        listener: beginTopLevelMethod(, null, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(f, topLevelFunctionDeclaration)
+        parseMethodTypeVar(f)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(f, f, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(f, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, g)
+          parseStatement({)
+            parseStatementX({)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                looksLikeLocalFunction(g)
+                parseExpressionStatement({)
+                  parseExpression({)
+                    parsePrecedenceExpression({, 1, true)
+                      parseUnaryExpression({, true)
+                        parsePrimary({, expression)
+                          parseSendOrFunctionLiteral({, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend({, expression)
+                              isNextIdentifier({)
+                              ensureIdentifier({, expression)
+                                listener: handleIdentifier(g, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(g)
+                                parseArguments(g)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    ensureIdentifier((, namedArgumentReference)
+                                      insertSyntheticIdentifier((, namedArgumentReference, message: Message[ExpectedIdentifier, Expected an identifier, but got ':'., Try inserting an identifier before ':'., {lexeme: :}], messageOnToken: null)
+                                        reportRecoverableError(:, Message[ExpectedIdentifier, Expected an identifier, but got ':'., Try inserting an identifier before ':'., {lexeme: :}])
+                                          listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ':'., Try inserting an identifier before ':'., {lexeme: :}], :, :)
+                                        rewriter()
+                                      listener: handleIdentifier(, namedArgumentReference)
+                                    parseExpression(:)
+                                      parsePrecedenceExpression(:, 1, true)
+                                        parseUnaryExpression(:, true)
+                                          parsePrimary(:, expression)
+                                            parseLiteralInt(:)
+                                              listener: handleLiteralInt(1)
+                                    listener: handleNamedArgument(:)
+                                    ensureIdentifier(,, namedArgumentReference)
+                                      listener: handleIdentifier(bbb, namedArgumentReference)
+                                    parseExpression(:)
+                                      parsePrecedenceExpression(:, 1, true)
+                                        parseUnaryExpression(:, true)
+                                          parsePrimary(:, expression)
+                                            parseLiteralInt(:)
+                                              listener: handleLiteralInt(0)
+                                    listener: handleNamedArgument(:)
+                                    listener: endArguments(2, (, ))
+                              listener: handleSend(g, ;)
+                  ensureSemicolon())
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(1, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(void)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.parser.expect
new file mode 100644
index 0000000..57b6b56a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.parser.expect
@@ -0,0 +1,11 @@
+NOTICE: Stream was rewritten by parser!
+
+void f(int x) {
+g(*synthetic*: 1, bbb: 0);
+}
+
+
+void[KeywordToken] f[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+g[StringToken]([BeginToken][SyntheticStringToken]:[SimpleToken] 1[StringToken],[SimpleToken] bbb[StringToken]:[SimpleToken] 0[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.scanner.expect
new file mode 100644
index 0000000..b02d99b
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288.dart.scanner.expect
@@ -0,0 +1,9 @@
+void f(int x) {
+g(: 1, bbb: 0);
+}
+
+
+void[KeywordToken] f[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+g[StringToken]([BeginToken]:[SimpleToken] 1[StringToken],[SimpleToken] bbb[StringToken]:[SimpleToken] 0[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288.equivalence_info b/pkg/front_end/parser_testcases/error_recovery/issue_48288.equivalence_info
new file mode 100644
index 0000000..b479e22
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288.equivalence_info
@@ -0,0 +1,7 @@
+files:
+  - issue_48288.dart
+  - issue_48288_prime.dart
+filters:
+  - ignoreListenerArguments
+ignored:
+  - handleRecoverableError
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart
new file mode 100644
index 0000000..b547da1
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart
@@ -0,0 +1,3 @@
+void f(int x) {
+  g(foo: 1, bbb: 0);
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.expect
new file mode 100644
index 0000000..061f44a
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.expect
@@ -0,0 +1,37 @@
+beginCompilationUnit(void)
+  beginMetadataStar(void)
+  endMetadataStar(0)
+  beginTopLevelMember(void)
+    beginTopLevelMethod(, null, null)
+      handleVoidKeyword(void)
+      handleIdentifier(f, topLevelFunctionDeclaration)
+      handleNoTypeVariables(()
+      beginFormalParameters((, MemberKind.TopLevelMethod)
+        beginMetadataStar(int)
+        endMetadataStar(0)
+        beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+          handleIdentifier(int, typeReference)
+          handleNoTypeArguments(x)
+          handleType(int, null)
+          handleIdentifier(x, formalParameterDeclaration)
+          handleFormalParameterWithoutValue())
+        endFormalParameter(null, null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+      handleAsyncModifier(null, null)
+      beginBlockFunctionBody({)
+        handleIdentifier(g, expression)
+        handleNoTypeArguments(()
+        beginArguments(()
+          handleIdentifier(foo, namedArgumentReference)
+          handleLiteralInt(1)
+          handleNamedArgument(:)
+          handleIdentifier(bbb, namedArgumentReference)
+          handleLiteralInt(0)
+          handleNamedArgument(:)
+        endArguments(2, (, ))
+        handleSend(g, ;)
+        handleExpressionStatement(;)
+      endBlockFunctionBody(1, {, })
+    endTopLevelMethod(void, null, })
+  endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.intertwined.expect
new file mode 100644
index 0000000..def81ae
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.intertwined.expect
@@ -0,0 +1,88 @@
+parseUnit(void)
+  skipErrorTokens(void)
+  listener: beginCompilationUnit(void)
+  syntheticPreviousToken(void)
+  parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+    parseMetadataStar()
+      listener: beginMetadataStar(void)
+      listener: endMetadataStar(0)
+    parseTopLevelMemberImpl()
+      listener: beginTopLevelMember(void)
+      parseTopLevelMethod(, null, null, , Instance of 'VoidType', null, f, false)
+        listener: beginTopLevelMethod(, null, null)
+        listener: handleVoidKeyword(void)
+        ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+          listener: handleIdentifier(f, topLevelFunctionDeclaration)
+        parseMethodTypeVar(f)
+          listener: handleNoTypeVariables(()
+        parseGetterOrFormalParameters(f, f, false, MemberKind.TopLevelMethod)
+          parseFormalParameters(f, MemberKind.TopLevelMethod)
+            parseFormalParametersRest((, MemberKind.TopLevelMethod)
+              listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+              parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+                parseMetadataStar(()
+                  listener: beginMetadataStar(int)
+                  listener: endMetadataStar(0)
+                listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+                listener: handleIdentifier(int, typeReference)
+                listener: handleNoTypeArguments(x)
+                listener: handleType(int, null)
+                ensureIdentifier(int, formalParameterDeclaration)
+                  listener: handleIdentifier(x, formalParameterDeclaration)
+                listener: handleFormalParameterWithoutValue())
+                listener: endFormalParameter(null, null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.TopLevelMethod)
+              listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+        parseAsyncModifierOpt())
+          listener: handleAsyncModifier(null, null)
+          inPlainSync()
+        parseFunctionBody(), false, false)
+          listener: beginBlockFunctionBody({)
+          notEofOrValue(}, g)
+          parseStatement({)
+            parseStatementX({)
+              parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+                looksLikeLocalFunction(g)
+                parseExpressionStatement({)
+                  parseExpression({)
+                    parsePrecedenceExpression({, 1, true)
+                      parseUnaryExpression({, true)
+                        parsePrimary({, expression)
+                          parseSendOrFunctionLiteral({, expression)
+                            looksLikeFunctionBody(;)
+                            parseSend({, expression)
+                              isNextIdentifier({)
+                              ensureIdentifier({, expression)
+                                listener: handleIdentifier(g, expression)
+                              listener: handleNoTypeArguments(()
+                              parseArgumentsOpt(g)
+                                parseArguments(g)
+                                  parseArgumentsRest(()
+                                    listener: beginArguments(()
+                                    ensureIdentifier((, namedArgumentReference)
+                                      listener: handleIdentifier(foo, namedArgumentReference)
+                                    parseExpression(:)
+                                      parsePrecedenceExpression(:, 1, true)
+                                        parseUnaryExpression(:, true)
+                                          parsePrimary(:, expression)
+                                            parseLiteralInt(:)
+                                              listener: handleLiteralInt(1)
+                                    listener: handleNamedArgument(:)
+                                    ensureIdentifier(,, namedArgumentReference)
+                                      listener: handleIdentifier(bbb, namedArgumentReference)
+                                    parseExpression(:)
+                                      parsePrecedenceExpression(:, 1, true)
+                                        parseUnaryExpression(:, true)
+                                          parsePrimary(:, expression)
+                                            parseLiteralInt(:)
+                                              listener: handleLiteralInt(0)
+                                    listener: handleNamedArgument(:)
+                                    listener: endArguments(2, (, ))
+                              listener: handleSend(g, ;)
+                  ensureSemicolon())
+                  listener: handleExpressionStatement(;)
+          notEofOrValue(}, })
+          listener: endBlockFunctionBody(1, {, })
+        listener: endTopLevelMethod(void, null, })
+  listener: endTopLevelDeclaration()
+  reportAllErrorTokens(void)
+  listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.parser.expect
new file mode 100644
index 0000000..a4c0177
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.parser.expect
@@ -0,0 +1,9 @@
+void f(int x) {
+g(foo: 1, bbb: 0);
+}
+
+
+void[KeywordToken] f[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+g[StringToken]([BeginToken]foo[StringToken]:[SimpleToken] 1[StringToken],[SimpleToken] bbb[StringToken]:[SimpleToken] 0[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.scanner.expect
new file mode 100644
index 0000000..a4c0177
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_48288_prime.dart.scanner.expect
@@ -0,0 +1,9 @@
+void f(int x) {
+g(foo: 1, bbb: 0);
+}
+
+
+void[KeywordToken] f[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
+g[StringToken]([BeginToken]foo[StringToken]:[SimpleToken] 1[StringToken],[SimpleToken] bbb[StringToken]:[SimpleToken] 0[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/testcases/general/tabs.dart b/pkg/front_end/testcases/general/tabs.dart
index 32b56da..17daaf4 100644
--- a/pkg/front_end/testcases/general/tabs.dart
+++ b/pkg/front_end/testcases/general/tabs.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
+
 // Test that error messages are indented correctly
 // in the presence of tabs.
 
diff --git a/pkg/front_end/testcases/general/tabs.dart.textual_outline.expect b/pkg/front_end/testcases/general/tabs.dart.textual_outline.expect
index 001308b..ec6b9e0 100644
--- a/pkg/front_end/testcases/general/tabs.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/tabs.dart.textual_outline.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 test() {}
 main() {}
diff --git a/pkg/front_end/testcases/general/tabs.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/tabs.dart.textual_outline_modelled.expect
index 38df08d..f67dbb0 100644
--- a/pkg/front_end/testcases/general/tabs.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/tabs.dart.textual_outline_modelled.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 main() {}
 test() {}
diff --git a/pkg/front_end/testcases/general/tabs.dart.weak.expect b/pkg/front_end/testcases/general/tabs.dart.weak.expect
index c69fb6b..75f5781 100644
--- a/pkg/front_end/testcases/general/tabs.dart.weak.expect
+++ b/pkg/front_end/testcases/general/tabs.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
diff --git a/pkg/front_end/testcases/general/tabs.dart.weak.modular.expect b/pkg/front_end/testcases/general/tabs.dart.weak.modular.expect
index c69fb6b..75f5781 100644
--- a/pkg/front_end/testcases/general/tabs.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/tabs.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
diff --git a/pkg/front_end/testcases/general/tabs.dart.weak.outline.expect b/pkg/front_end/testcases/general/tabs.dart.weak.outline.expect
index a29647d..64923de 100644
--- a/pkg/front_end/testcases/general/tabs.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/tabs.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 static method test() → dynamic
diff --git a/pkg/front_end/testcases/general/tabs.dart.weak.transformed.expect b/pkg/front_end/testcases/general/tabs.dart.weak.transformed.expect
index c69fb6b..75f5781 100644
--- a/pkg/front_end/testcases/general/tabs.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/tabs.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
diff --git a/pkg/front_end/testcases/general/this_field_call.dart b/pkg/front_end/testcases/general/this_field_call.dart
index b7b47d6..8b26b24 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart
+++ b/pkg/front_end/testcases/general/this_field_call.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 A<T> {
   void Function(T) f;
   A(this.f);
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.textual_outline.expect b/pkg/front_end/testcases/general/this_field_call.dart.textual_outline.expect
index 116a8da..eb3e361 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<T> {
   void Function(T) f;
   A(this.f);
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/this_field_call.dart.textual_outline_modelled.expect
index 4b5395b..b5116cc 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<T> {
   A(this.f);
   foo(T x) => this.f(x);
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.weak.expect b/pkg/front_end/testcases/general/this_field_call.dart.weak.expect
index 1156174..0512ad4 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.weak.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.weak.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  field (self::A::T*) →* void f;
-  constructor •((self::A::T*) →* void f) → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  field (self::A::T%) → void f;
+  constructor •((self::A::T%) → void f) → self::A<self::A::T%>
     : self::A::f = f, super core::Object::•()
     ;
-  method foo(covariant-by-class self::A::T* x) → dynamic
-    return let final self::A::T* #t1 = x in this.{self::A::f}{(self::A::T*) →* void}(#t1){(self::A::T*) →* 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 foo(covariant-by-class self::A::T% x) → dynamic
+    return let final self::A::T% #t1 = x in this.{self::A::f}{(self::A::T%) → void}(#t1){(self::A::T%) → void};
 }
 static method main() → dynamic {
-  new self::A::•<core::int*>((core::int* x) → Null {}).{self::A::foo}(3){(core::int*) →* dynamic};
+  new self::A::•<core::int>((core::int x) → void {}).{self::A::foo}(3){(core::int) → dynamic};
 }
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.weak.modular.expect b/pkg/front_end/testcases/general/this_field_call.dart.weak.modular.expect
index 1156174..0512ad4 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.weak.modular.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  field (self::A::T*) →* void f;
-  constructor •((self::A::T*) →* void f) → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  field (self::A::T%) → void f;
+  constructor •((self::A::T%) → void f) → self::A<self::A::T%>
     : self::A::f = f, super core::Object::•()
     ;
-  method foo(covariant-by-class self::A::T* x) → dynamic
-    return let final self::A::T* #t1 = x in this.{self::A::f}{(self::A::T*) →* void}(#t1){(self::A::T*) →* 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 foo(covariant-by-class self::A::T% x) → dynamic
+    return let final self::A::T% #t1 = x in this.{self::A::f}{(self::A::T%) → void}(#t1){(self::A::T%) → void};
 }
 static method main() → dynamic {
-  new self::A::•<core::int*>((core::int* x) → Null {}).{self::A::foo}(3){(core::int*) →* dynamic};
+  new self::A::•<core::int>((core::int x) → void {}).{self::A::foo}(3){(core::int) → dynamic};
 }
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.weak.outline.expect b/pkg/front_end/testcases/general/this_field_call.dart.weak.outline.expect
index 5ef3cd8..71acb0c 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.weak.outline.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  field (self::A::T*) →* void f;
-  constructor •((self::A::T*) →* void f) → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  field (self::A::T%) → void f;
+  constructor •((self::A::T%) → void f) → self::A<self::A::T%>
     ;
-  method foo(covariant-by-class self::A::T* x) → dynamic
+  method foo(covariant-by-class self::A::T% x) → 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
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/this_field_call.dart.weak.transformed.expect b/pkg/front_end/testcases/general/this_field_call.dart.weak.transformed.expect
index 1156174..0512ad4 100644
--- a/pkg/front_end/testcases/general/this_field_call.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/this_field_call.dart.weak.transformed.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  field (self::A::T*) →* void f;
-  constructor •((self::A::T*) →* void f) → self::A<self::A::T*>*
+class A<T extends core::Object? = dynamic> extends core::Object {
+  field (self::A::T%) → void f;
+  constructor •((self::A::T%) → void f) → self::A<self::A::T%>
     : self::A::f = f, super core::Object::•()
     ;
-  method foo(covariant-by-class self::A::T* x) → dynamic
-    return let final self::A::T* #t1 = x in this.{self::A::f}{(self::A::T*) →* void}(#t1){(self::A::T*) →* 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 foo(covariant-by-class self::A::T% x) → dynamic
+    return let final self::A::T% #t1 = x in this.{self::A::f}{(self::A::T%) → void}(#t1){(self::A::T%) → void};
 }
 static method main() → dynamic {
-  new self::A::•<core::int*>((core::int* x) → Null {}).{self::A::foo}(3){(core::int*) →* dynamic};
+  new self::A::•<core::int>((core::int x) → void {}).{self::A::foo}(3){(core::int) → dynamic};
 }
diff --git a/pkg/front_end/testcases/general/three_typedefs_loop.dart b/pkg/front_end/testcases/general/three_typedefs_loop.dart
index da2c06d..d4f0110 100644
--- a/pkg/front_end/testcases/general/three_typedefs_loop.dart
+++ b/pkg/front_end/testcases/general/three_typedefs_loop.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
+
 // The test for recursive typedef declaration involving multiple typedefs.
 
 typedef Foo<T> = void Function(Bar<T>);
diff --git a/pkg/front_end/testcases/general/three_typedefs_loop.dart.textual_outline.expect b/pkg/front_end/testcases/general/three_typedefs_loop.dart.textual_outline.expect
index 37b7fd2..0e6af39 100644
--- a/pkg/front_end/testcases/general/three_typedefs_loop.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/three_typedefs_loop.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 typedef Foo<T> = void Function(Bar<T>);
 typedef Bar<T> = void Function(Baz<T>);
 typedef Baz<T> = void Function(Foo<T>);
diff --git a/pkg/front_end/testcases/general/three_typedefs_loop.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/three_typedefs_loop.dart.textual_outline_modelled.expect
index 3164897..d241b1c 100644
--- a/pkg/front_end/testcases/general/three_typedefs_loop.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/three_typedefs_loop.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 main() {}
 typedef Bar<T> = void Function(Baz<T>);
 typedef Baz<T> = void Function(Foo<T>);
diff --git a/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.expect b/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.expect
index bd2fff9..5a5dbe0 100644
--- a/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.expect
+++ b/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -13,7 +13,7 @@
 import self as self;
 import "dart:core" as core;
 
-typedef Foo<unrelated T extends core::Object* = dynamic> = invalid-type;
-typedef Bar<unrelated T extends core::Object* = dynamic> = ((invalid-type) →* void) →* void;
-typedef Baz<unrelated T extends core::Object* = dynamic> = (invalid-type) →* void;
+typedef Foo<unrelated T extends core::Object? = dynamic> = invalid-type;
+typedef Bar<unrelated T extends core::Object? = dynamic> = ((invalid-type) → void) → void;
+typedef Baz<unrelated T extends core::Object? = dynamic> = (invalid-type) → void;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.modular.expect b/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.modular.expect
index bd2fff9..5a5dbe0 100644
--- a/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -13,7 +13,7 @@
 import self as self;
 import "dart:core" as core;
 
-typedef Foo<unrelated T extends core::Object* = dynamic> = invalid-type;
-typedef Bar<unrelated T extends core::Object* = dynamic> = ((invalid-type) →* void) →* void;
-typedef Baz<unrelated T extends core::Object* = dynamic> = (invalid-type) →* void;
+typedef Foo<unrelated T extends core::Object? = dynamic> = invalid-type;
+typedef Bar<unrelated T extends core::Object? = dynamic> = ((invalid-type) → void) → void;
+typedef Baz<unrelated T extends core::Object? = dynamic> = (invalid-type) → void;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.outline.expect b/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.outline.expect
index f030616..c40c627 100644
--- a/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -13,8 +13,8 @@
 import self as self;
 import "dart:core" as core;
 
-typedef Foo<unrelated T extends core::Object* = dynamic> = invalid-type;
-typedef Bar<unrelated T extends core::Object* = dynamic> = ((invalid-type) →* void) →* void;
-typedef Baz<unrelated T extends core::Object* = dynamic> = (invalid-type) →* void;
+typedef Foo<unrelated T extends core::Object? = dynamic> = invalid-type;
+typedef Bar<unrelated T extends core::Object? = dynamic> = ((invalid-type) → void) → void;
+typedef Baz<unrelated T extends core::Object? = dynamic> = (invalid-type) → void;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.transformed.expect b/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.transformed.expect
index bd2fff9..5a5dbe0 100644
--- a/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/three_typedefs_loop.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -13,7 +13,7 @@
 import self as self;
 import "dart:core" as core;
 
-typedef Foo<unrelated T extends core::Object* = dynamic> = invalid-type;
-typedef Bar<unrelated T extends core::Object* = dynamic> = ((invalid-type) →* void) →* void;
-typedef Baz<unrelated T extends core::Object* = dynamic> = (invalid-type) →* void;
+typedef Foo<unrelated T extends core::Object? = dynamic> = invalid-type;
+typedef Bar<unrelated T extends core::Object? = dynamic> = ((invalid-type) → void) → void;
+typedef Baz<unrelated T extends core::Object? = dynamic> = (invalid-type) → void;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/top_level_accessors.dart b/pkg/front_end/testcases/general/top_level_accessors.dart
index dc770bb..a0dbc51 100644
--- a/pkg/front_end/testcases/general/top_level_accessors.dart
+++ b/pkg/front_end/testcases/general/top_level_accessors.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 top_level_accessors;
 
 part 'top_level_accessors_part.dart';
diff --git a/pkg/front_end/testcases/general/top_level_accessors.dart.textual_outline.expect b/pkg/front_end/testcases/general/top_level_accessors.dart.textual_outline.expect
index 679edd0..184dba8 100644
--- a/pkg/front_end/testcases/general/top_level_accessors.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/top_level_accessors.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library top_level_accessors;
 
 part 'top_level_accessors_part.dart';
diff --git a/pkg/front_end/testcases/general/top_level_accessors.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/top_level_accessors.dart.textual_outline_modelled.expect
index 679edd0..184dba8 100644
--- a/pkg/front_end/testcases/general/top_level_accessors.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/top_level_accessors.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 library top_level_accessors;
 
 part 'top_level_accessors_part.dart';
diff --git a/pkg/front_end/testcases/general/top_level_accessors.dart.weak.expect b/pkg/front_end/testcases/general/top_level_accessors.dart.weak.expect
index 9898bf6..837a217 100644
--- a/pkg/front_end/testcases/general/top_level_accessors.dart.weak.expect
+++ b/pkg/front_end/testcases/general/top_level_accessors.dart.weak.expect
@@ -1,12 +1,12 @@
-library top_level_accessors;
+library top_level_accessors /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 part top_level_accessors_part.dart;
-static set /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode(core::int* code) → void {
+static set /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode(core::int code) → void {
   core::print(code);
 }
-static get /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode() → core::int*
+static get /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode() → core::int
   return 0;
 static method /* from org-dartlang-testcase:///top_level_accessors_part.dart */ main() → dynamic {
   self::exitCode = 42;
diff --git a/pkg/front_end/testcases/general/top_level_accessors.dart.weak.modular.expect b/pkg/front_end/testcases/general/top_level_accessors.dart.weak.modular.expect
index 9898bf6..837a217 100644
--- a/pkg/front_end/testcases/general/top_level_accessors.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/top_level_accessors.dart.weak.modular.expect
@@ -1,12 +1,12 @@
-library top_level_accessors;
+library top_level_accessors /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 part top_level_accessors_part.dart;
-static set /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode(core::int* code) → void {
+static set /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode(core::int code) → void {
   core::print(code);
 }
-static get /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode() → core::int*
+static get /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode() → core::int
   return 0;
 static method /* from org-dartlang-testcase:///top_level_accessors_part.dart */ main() → dynamic {
   self::exitCode = 42;
diff --git a/pkg/front_end/testcases/general/top_level_accessors.dart.weak.outline.expect b/pkg/front_end/testcases/general/top_level_accessors.dart.weak.outline.expect
index bbdb2a7..298c657 100644
--- a/pkg/front_end/testcases/general/top_level_accessors.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/top_level_accessors.dart.weak.outline.expect
@@ -1,11 +1,11 @@
-library top_level_accessors;
+library top_level_accessors /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 part top_level_accessors_part.dart;
-static set /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode(core::int* code) → void
+static set /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode(core::int code) → void
   ;
-static get /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode() → core::int*
+static get /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode() → core::int
   ;
 static method /* from org-dartlang-testcase:///top_level_accessors_part.dart */ main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/top_level_accessors.dart.weak.transformed.expect b/pkg/front_end/testcases/general/top_level_accessors.dart.weak.transformed.expect
index 9898bf6..837a217 100644
--- a/pkg/front_end/testcases/general/top_level_accessors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/top_level_accessors.dart.weak.transformed.expect
@@ -1,12 +1,12 @@
-library top_level_accessors;
+library top_level_accessors /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 part top_level_accessors_part.dart;
-static set /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode(core::int* code) → void {
+static set /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode(core::int code) → void {
   core::print(code);
 }
-static get /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode() → core::int*
+static get /* from org-dartlang-testcase:///top_level_accessors_part.dart */ exitCode() → core::int
   return 0;
 static method /* from org-dartlang-testcase:///top_level_accessors_part.dart */ main() → dynamic {
   self::exitCode = 42;
diff --git a/pkg/front_end/testcases/general/top_level_accessors_part.dart b/pkg/front_end/testcases/general/top_level_accessors_part.dart
index e7d124c..6aeed08 100644
--- a/pkg/front_end/testcases/general/top_level_accessors_part.dart
+++ b/pkg/front_end/testcases/general/top_level_accessors_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 top_level_accessors;
 
 void set exitCode(int code) {
diff --git a/pkg/front_end/testcases/general/top_level_variance2.dart b/pkg/front_end/testcases/general/top_level_variance2.dart
new file mode 100644
index 0000000..f9f1b69
--- /dev/null
+++ b/pkg/front_end/testcases/general/top_level_variance2.dart
@@ -0,0 +1,163 @@
+// 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.
+
+// Testing that instantiate-to-bound and super-bounded types take the
+// variance of formal type parameters into account when a type alias is
+// used as a raw type.
+
+// Standard type comparison support.
+
+typedef F<X> = void Function<Y extends X>();
+F<X> toF<X>(X x) => throw '';
+
+// Material specific to this test.
+
+typedef Fcov<X> = X Function();
+typedef Fcon<X> = Function(X);
+typedef Finv<X> = X Function(X);
+
+typedef FcovBound<X extends num> = X Function();
+typedef FconBound<X extends num> = Function(X);
+typedef FinvBound<X extends num> = X Function(X);
+
+class A<X> {}
+
+typedef FcovCyclicBound<X extends A<X>> = X Function();
+typedef FconCyclicBound<X extends A<X>> = Function(X);
+typedef FinvCyclicBound<X extends A<X>> = X Function(X);
+
+typedef FcovCyclicCoBound<X extends Function(X)> = X Function();
+typedef FconCyclicCoBound<X extends Function(X)> = Function(X);
+typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
+
+class B<X> {}
+
+void testTopLevel(
+    Fcov source1,
+    Fcon source2,
+    Finv source3,
+    FcovBound source4,
+    FconBound source5,
+    FinvBound source6,
+    FcovCyclicBound source7,
+    FconCyclicBound source8,
+    FcovCyclicCoBound source10,
+    FconCyclicCoBound source11,
+    FinvCyclicCoBound source12) {
+  // I2b initial value for a covariant type parameter w/o bound: dynamic.
+  var fsource1 = toF(source1);
+  F<Fcov<dynamic>> target1 = fsource1;
+
+  // I2b initial value for a contravariant type parameter w/o bound: dynamic.
+  var fsource2 = toF(source2);
+  F<Fcon<dynamic>> target2 = fsource2;
+
+  // I2b initial value for an invariant type parameter w/o bound: dynamic.
+  var fsource3 = toF(source3);
+  F<Finv<dynamic>> target3 = fsource3;
+
+  // I2b initial value for a covariant type parameter: bound.
+  var fsource4 = toF(source4);
+  F<FcovBound<num>> target4 = fsource4;
+
+  // I2b initial value for a contravariant type parameter: bound.
+  var fsource5 = toF(source5);
+  F<FconBound<num>> target5 = fsource5;
+
+  // I2b initial value for an invariant type parameter: bound.
+  var fsource6 = toF(source6);
+  F<FinvBound<num>> target6 = fsource6;
+
+  // I2b for a covariant type parameter w F-bound: Use bound, then break
+  // cycle by replacing covariant occurrence by `dynamic`. Resulting type
+  // is super-bounded: FcovCyclicBound<A<Null>> is regular-bounded.
+  var fsource7 = toF(source7);
+  F<FcovCyclicBound<A<dynamic>>> target7 = fsource7;
+
+  // I2b for a contravariant type parameter w F-bound: Use bound, then break
+  // cycle by replacing contravariant occurrence by `Never`. Resulting type
+  // is super-bounded: FconCyclicBound<A<Object>> is regular-bounded.
+  var fsource8 = toF(source8);
+  F<FconCyclicBound<A<Never>>> target8 = fsource8;
+
+  // I2b for an invariant type parameter w F-bound: Use bound, then break
+  // cycle by replacing invariant occurrence by `dynamic`. Resulting type is
+  // _not_ super-bounded: FinvCyclicBound<A<dynamic>> not regular-bounded.
+  FinvCyclicBound source9; //# 01: compile-time error
+  // var fsource9 = toF(source9);
+  // F<FinvCyclicBound<A<dynamic>>> target9 = fsource9;
+
+  // I2b for a covariant type parameter w F-bound: Use bound, then break
+  // cycle by replacing contravariant occurrence by `Never`. Resulting type
+  // is super-bounded: FcovCyclicBound<Function(Object)> is regular-bounded.
+  var fsource10 = toF(source10);
+  F<FcovCyclicCoBound<Function(Never)>> target10 = fsource10;
+
+  // I2b for a contravariant type parameter w F-bound: Use bound, then break
+  // cycle by replacing covariant occurrence by `dynamic`. Resulting type
+  // FconCyclicCoBound<Function(dynamic)> is regular-bounded.
+  var fsource11 = toF(source11);
+  F<FconCyclicCoBound<Function(dynamic)>> target11 = fsource11;
+
+  // I2b for an invariant type parameter w F-bound: Use bound, then break
+  // cycle by replacing invariant occurrence by `dynamic`. Resulting type
+  // F<FinvCyclicCoBound<Function(dynamic)>> is regular-bounded.
+  var fsource12 = toF(source12);
+  F<FinvCyclicCoBound<Function(dynamic)>> target12 = fsource12;
+}
+
+void testNested(
+    B<Fcov> source1,
+    B<Fcon> source2,
+    B<Finv> source3,
+    B<FcovBound> source4,
+    B<FconBound> source5,
+    B<FinvBound> source6,
+    B<FcovCyclicBound> source7,
+    B<FconCyclicBound> source8,
+    B<FcovCyclicCoBound> source10,
+    B<FconCyclicCoBound> source11,
+    B<FinvCyclicCoBound> source12) {
+  // Everything gets the same treatment when the cases from
+  // `testTopLevel` are duplicated at the nested level.
+
+  var fsource1 = toF(source1);
+  F<B<Fcov<dynamic>>> target1 = fsource1;
+
+  var fsource2 = toF(source2);
+  F<B<Fcon<dynamic>>> target2 = fsource2;
+
+  var fsource3 = toF(source3);
+  F<B<Finv<dynamic>>> target3 = fsource3;
+
+  var fsource4 = toF(source4);
+  F<B<FcovBound<num>>> target4 = fsource4;
+
+  var fsource5 = toF(source5);
+  F<B<FconBound<num>>> target5 = fsource5;
+
+  var fsource6 = toF(source6);
+  F<B<FinvBound<num>>> target6 = fsource6;
+
+  var fsource7 = toF(source7);
+  F<B<FcovCyclicBound<A<dynamic>>>> target7 = fsource7;
+
+  var fsource8 = toF(source8);
+  F<B<FconCyclicBound<A<Never>>>> target8 = fsource8;
+
+  B<FinvCyclicBound> source9; //# 02: compile-time error
+  // var fsource9 = toF(source9);
+  // F<B<FinvCyclicBound<A<dynamic>>>> target9 = fsource9;
+
+  var fsource10 = toF(source10);
+  F<B<FcovCyclicCoBound<Function(Never)>>> target10 = fsource10;
+
+  var fsource11 = toF(source11);
+  F<B<FconCyclicCoBound<Function(dynamic)>>> target11 = fsource11;
+
+  var fsource12 = toF(source12);
+  F<B<FinvCyclicCoBound<Function(dynamic)>>> target12 = fsource12;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/top_level_variance2.dart.textual_outline.expect b/pkg/front_end/testcases/general/top_level_variance2.dart.textual_outline.expect
new file mode 100644
index 0000000..cc6feb2
--- /dev/null
+++ b/pkg/front_end/testcases/general/top_level_variance2.dart.textual_outline.expect
@@ -0,0 +1,45 @@
+typedef F<X> = void Function<Y extends X>();
+F<X> toF<X>(X x) => throw '';
+typedef Fcov<X> = X Function();
+typedef Fcon<X> = Function(X);
+typedef Finv<X> = X Function(X);
+typedef FcovBound<X extends num> = X Function();
+typedef FconBound<X extends num> = Function(X);
+typedef FinvBound<X extends num> = X Function(X);
+
+class A<X> {}
+
+typedef FcovCyclicBound<X extends A<X>> = X Function();
+typedef FconCyclicBound<X extends A<X>> = Function(X);
+typedef FinvCyclicBound<X extends A<X>> = X Function(X);
+typedef FcovCyclicCoBound<X extends Function(X)> = X Function();
+typedef FconCyclicCoBound<X extends Function(X)> = Function(X);
+typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
+
+class B<X> {}
+
+void testTopLevel(
+    Fcov source1,
+    Fcon source2,
+    Finv source3,
+    FcovBound source4,
+    FconBound source5,
+    FinvBound source6,
+    FcovCyclicBound source7,
+    FconCyclicBound source8,
+    FcovCyclicCoBound source10,
+    FconCyclicCoBound source11,
+    FinvCyclicCoBound source12) {}
+void testNested(
+    B<Fcov> source1,
+    B<Fcon> source2,
+    B<Finv> source3,
+    B<FcovBound> source4,
+    B<FconBound> source5,
+    B<FinvBound> source6,
+    B<FcovCyclicBound> source7,
+    B<FconCyclicBound> source8,
+    B<FcovCyclicCoBound> source10,
+    B<FconCyclicCoBound> source11,
+    B<FinvCyclicCoBound> source12) {}
+main() {}
diff --git a/pkg/front_end/testcases/general/top_level_variance2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/top_level_variance2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..688697a
--- /dev/null
+++ b/pkg/front_end/testcases/general/top_level_variance2.dart.textual_outline_modelled.expect
@@ -0,0 +1,44 @@
+F<X> toF<X>(X x) => throw '';
+
+class A<X> {}
+
+class B<X> {}
+
+main() {}
+typedef F<X> = void Function<Y extends X>();
+typedef Fcon<X> = Function(X);
+typedef FconBound<X extends num> = Function(X);
+typedef FconCyclicBound<X extends A<X>> = Function(X);
+typedef FconCyclicCoBound<X extends Function(X)> = Function(X);
+typedef Fcov<X> = X Function();
+typedef FcovBound<X extends num> = X Function();
+typedef FcovCyclicBound<X extends A<X>> = X Function();
+typedef FcovCyclicCoBound<X extends Function(X)> = X Function();
+typedef Finv<X> = X Function(X);
+typedef FinvBound<X extends num> = X Function(X);
+typedef FinvCyclicBound<X extends A<X>> = X Function(X);
+typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
+void testNested(
+    B<Fcov> source1,
+    B<Fcon> source2,
+    B<Finv> source3,
+    B<FcovBound> source4,
+    B<FconBound> source5,
+    B<FinvBound> source6,
+    B<FcovCyclicBound> source7,
+    B<FconCyclicBound> source8,
+    B<FcovCyclicCoBound> source10,
+    B<FconCyclicCoBound> source11,
+    B<FinvCyclicCoBound> source12) {}
+void testTopLevel(
+    Fcov source1,
+    Fcon source2,
+    Finv source3,
+    FcovBound source4,
+    FconBound source5,
+    FinvBound source6,
+    FcovCyclicBound source7,
+    FconCyclicBound source8,
+    FcovCyclicCoBound source10,
+    FconCyclicCoBound source11,
+    FinvCyclicCoBound source12) {}
diff --git a/pkg/front_end/testcases/general/top_level_variance2.dart.weak.expect b/pkg/front_end/testcases/general/top_level_variance2.dart.weak.expect
new file mode 100644
index 0000000..85c9d46
--- /dev/null
+++ b/pkg/front_end/testcases/general/top_level_variance2.dart.weak.expect
@@ -0,0 +1,80 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef F<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
+typedef Fcov<X extends core::Object? = dynamic> = () → X%;
+typedef Fcon<contravariant X extends core::Object? = dynamic> = (X%) → dynamic;
+typedef Finv<invariant X extends core::Object? = dynamic> = (X%) → X%;
+typedef FcovBound<X extends core::num> = () → X;
+typedef FconBound<contravariant X extends core::num> = (X) → dynamic;
+typedef FinvBound<invariant X extends core::num> = (X) → X;
+typedef FcovCyclicBound<X extends self::A<X> = self::A<dynamic>> = () → X;
+typedef FconCyclicBound<contravariant X extends self::A<X> = self::A<Never>> = (X) → dynamic;
+typedef FinvCyclicBound<invariant X extends self::A<X> = self::A<dynamic>> = (X) → X;
+typedef FcovCyclicCoBound<X extends (X) → dynamic = (Never) → dynamic> = () → X;
+typedef FconCyclicCoBound<contravariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → dynamic;
+typedef FinvCyclicCoBound<invariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → X;
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    : super core::Object::•()
+    ;
+}
+class B<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::B<self::B::X%>
+    : super core::Object::•()
+    ;
+}
+static method toF<X extends core::Object? = dynamic>(self::toF::X% x) → <Y extends self::toF::X% = dynamic>() → void
+  return throw "";
+static method testTopLevel(() → dynamic source1, (dynamic) → dynamic source2, (dynamic) → dynamic source3, () → core::num source4, (core::num) → dynamic source5, (core::num) → core::num source6, () → self::A<dynamic> source7, (self::A<Never>) → dynamic source8, () → (Never) → dynamic source10, ((dynamic) → dynamic) → dynamic source11, ((dynamic) → dynamic) → (dynamic) → dynamic source12) → void {
+  <Y extends () → dynamic = dynamic>() → void fsource1 = self::toF<() → dynamic>(source1);
+  <Y extends () → dynamic = dynamic>() → void target1 = fsource1;
+  <Y extends (dynamic) → dynamic = dynamic>() → void fsource2 = self::toF<(dynamic) → dynamic>(source2);
+  <Y extends (dynamic) → dynamic = dynamic>() → void target2 = fsource2;
+  <Y extends (dynamic) → dynamic = dynamic>() → void fsource3 = self::toF<(dynamic) → dynamic>(source3);
+  <Y extends (dynamic) → dynamic = dynamic>() → void target3 = fsource3;
+  <Y extends () → core::num = dynamic>() → void fsource4 = self::toF<() → core::num>(source4);
+  <Y extends () → core::num = dynamic>() → void target4 = fsource4;
+  <Y extends (core::num) → dynamic = dynamic>() → void fsource5 = self::toF<(core::num) → dynamic>(source5);
+  <Y extends (core::num) → dynamic = dynamic>() → void target5 = fsource5;
+  <Y extends (core::num) → core::num = dynamic>() → void fsource6 = self::toF<(core::num) → core::num>(source6);
+  <Y extends (core::num) → core::num = dynamic>() → void target6 = fsource6;
+  <Y extends () → self::A<dynamic> = dynamic>() → void fsource7 = self::toF<() → self::A<dynamic>>(source7);
+  <Y extends () → self::A<dynamic> = dynamic>() → void target7 = fsource7;
+  <Y extends (self::A<Never>) → dynamic = dynamic>() → void fsource8 = self::toF<(self::A<Never>) → dynamic>(source8);
+  <Y extends (self::A<Never>) → dynamic = dynamic>() → void target8 = fsource8;
+  (self::A<dynamic>) → self::A<dynamic> source9;
+  <Y extends () → (Never) → dynamic = dynamic>() → void fsource10 = self::toF<() → (Never) → dynamic>(source10);
+  <Y extends () → (Never) → dynamic = dynamic>() → void target10 = fsource10;
+  <Y extends ((dynamic) → dynamic) → dynamic = dynamic>() → void fsource11 = self::toF<((dynamic) → dynamic) → dynamic>(source11);
+  <Y extends ((dynamic) → dynamic) → dynamic = dynamic>() → void target11 = fsource11;
+  <Y extends ((dynamic) → dynamic) → (dynamic) → dynamic = dynamic>() → void fsource12 = self::toF<((dynamic) → dynamic) → (dynamic) → dynamic>(source12);
+  <Y extends ((dynamic) → dynamic) → (dynamic) → dynamic = dynamic>() → void target12 = fsource12;
+}
+static method testNested(self::B<() → dynamic> source1, self::B<(dynamic) → dynamic> source2, self::B<(dynamic) → dynamic> source3, self::B<() → core::num> source4, self::B<(core::num) → dynamic> source5, self::B<(core::num) → core::num> source6, self::B<() → self::A<dynamic>> source7, self::B<(self::A<Never>) → dynamic> source8, self::B<() → (Never) → dynamic> source10, self::B<((dynamic) → dynamic) → dynamic> source11, self::B<((dynamic) → dynamic) → (dynamic) → dynamic> source12) → void {
+  <Y extends self::B<() → dynamic> = dynamic>() → void fsource1 = self::toF<self::B<() → dynamic>>(source1);
+  <Y extends self::B<() → dynamic> = dynamic>() → void target1 = fsource1;
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void fsource2 = self::toF<self::B<(dynamic) → dynamic>>(source2);
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target2 = fsource2;
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void fsource3 = self::toF<self::B<(dynamic) → dynamic>>(source3);
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target3 = fsource3;
+  <Y extends self::B<() → core::num> = dynamic>() → void fsource4 = self::toF<self::B<() → core::num>>(source4);
+  <Y extends self::B<() → core::num> = dynamic>() → void target4 = fsource4;
+  <Y extends self::B<(core::num) → dynamic> = dynamic>() → void fsource5 = self::toF<self::B<(core::num) → dynamic>>(source5);
+  <Y extends self::B<(core::num) → dynamic> = dynamic>() → void target5 = fsource5;
+  <Y extends self::B<(core::num) → core::num> = dynamic>() → void fsource6 = self::toF<self::B<(core::num) → core::num>>(source6);
+  <Y extends self::B<(core::num) → core::num> = dynamic>() → void target6 = fsource6;
+  <Y extends self::B<() → self::A<dynamic>> = dynamic>() → void fsource7 = self::toF<self::B<() → self::A<dynamic>>>(source7);
+  <Y extends self::B<() → self::A<dynamic>> = dynamic>() → void target7 = fsource7;
+  <Y extends self::B<(self::A<Never>) → dynamic> = dynamic>() → void fsource8 = self::toF<self::B<(self::A<Never>) → dynamic>>(source8);
+  <Y extends self::B<(self::A<Never>) → dynamic> = dynamic>() → void target8 = fsource8;
+  self::B<(self::A<dynamic>) → self::A<dynamic>> source9;
+  <Y extends self::B<() → (Never) → dynamic> = dynamic>() → void fsource10 = self::toF<self::B<() → (Never) → dynamic>>(source10);
+  <Y extends self::B<() → (Never) → dynamic> = dynamic>() → void target10 = fsource10;
+  <Y extends self::B<((dynamic) → dynamic) → dynamic> = dynamic>() → void fsource11 = self::toF<self::B<((dynamic) → dynamic) → dynamic>>(source11);
+  <Y extends self::B<((dynamic) → dynamic) → dynamic> = dynamic>() → void target11 = fsource11;
+  <Y extends self::B<((dynamic) → dynamic) → (dynamic) → dynamic> = dynamic>() → void fsource12 = self::toF<self::B<((dynamic) → dynamic) → (dynamic) → dynamic>>(source12);
+  <Y extends self::B<((dynamic) → dynamic) → (dynamic) → dynamic> = dynamic>() → void target12 = fsource12;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/top_level_variance2.dart.weak.modular.expect b/pkg/front_end/testcases/general/top_level_variance2.dart.weak.modular.expect
new file mode 100644
index 0000000..85c9d46
--- /dev/null
+++ b/pkg/front_end/testcases/general/top_level_variance2.dart.weak.modular.expect
@@ -0,0 +1,80 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef F<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
+typedef Fcov<X extends core::Object? = dynamic> = () → X%;
+typedef Fcon<contravariant X extends core::Object? = dynamic> = (X%) → dynamic;
+typedef Finv<invariant X extends core::Object? = dynamic> = (X%) → X%;
+typedef FcovBound<X extends core::num> = () → X;
+typedef FconBound<contravariant X extends core::num> = (X) → dynamic;
+typedef FinvBound<invariant X extends core::num> = (X) → X;
+typedef FcovCyclicBound<X extends self::A<X> = self::A<dynamic>> = () → X;
+typedef FconCyclicBound<contravariant X extends self::A<X> = self::A<Never>> = (X) → dynamic;
+typedef FinvCyclicBound<invariant X extends self::A<X> = self::A<dynamic>> = (X) → X;
+typedef FcovCyclicCoBound<X extends (X) → dynamic = (Never) → dynamic> = () → X;
+typedef FconCyclicCoBound<contravariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → dynamic;
+typedef FinvCyclicCoBound<invariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → X;
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    : super core::Object::•()
+    ;
+}
+class B<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::B<self::B::X%>
+    : super core::Object::•()
+    ;
+}
+static method toF<X extends core::Object? = dynamic>(self::toF::X% x) → <Y extends self::toF::X% = dynamic>() → void
+  return throw "";
+static method testTopLevel(() → dynamic source1, (dynamic) → dynamic source2, (dynamic) → dynamic source3, () → core::num source4, (core::num) → dynamic source5, (core::num) → core::num source6, () → self::A<dynamic> source7, (self::A<Never>) → dynamic source8, () → (Never) → dynamic source10, ((dynamic) → dynamic) → dynamic source11, ((dynamic) → dynamic) → (dynamic) → dynamic source12) → void {
+  <Y extends () → dynamic = dynamic>() → void fsource1 = self::toF<() → dynamic>(source1);
+  <Y extends () → dynamic = dynamic>() → void target1 = fsource1;
+  <Y extends (dynamic) → dynamic = dynamic>() → void fsource2 = self::toF<(dynamic) → dynamic>(source2);
+  <Y extends (dynamic) → dynamic = dynamic>() → void target2 = fsource2;
+  <Y extends (dynamic) → dynamic = dynamic>() → void fsource3 = self::toF<(dynamic) → dynamic>(source3);
+  <Y extends (dynamic) → dynamic = dynamic>() → void target3 = fsource3;
+  <Y extends () → core::num = dynamic>() → void fsource4 = self::toF<() → core::num>(source4);
+  <Y extends () → core::num = dynamic>() → void target4 = fsource4;
+  <Y extends (core::num) → dynamic = dynamic>() → void fsource5 = self::toF<(core::num) → dynamic>(source5);
+  <Y extends (core::num) → dynamic = dynamic>() → void target5 = fsource5;
+  <Y extends (core::num) → core::num = dynamic>() → void fsource6 = self::toF<(core::num) → core::num>(source6);
+  <Y extends (core::num) → core::num = dynamic>() → void target6 = fsource6;
+  <Y extends () → self::A<dynamic> = dynamic>() → void fsource7 = self::toF<() → self::A<dynamic>>(source7);
+  <Y extends () → self::A<dynamic> = dynamic>() → void target7 = fsource7;
+  <Y extends (self::A<Never>) → dynamic = dynamic>() → void fsource8 = self::toF<(self::A<Never>) → dynamic>(source8);
+  <Y extends (self::A<Never>) → dynamic = dynamic>() → void target8 = fsource8;
+  (self::A<dynamic>) → self::A<dynamic> source9;
+  <Y extends () → (Never) → dynamic = dynamic>() → void fsource10 = self::toF<() → (Never) → dynamic>(source10);
+  <Y extends () → (Never) → dynamic = dynamic>() → void target10 = fsource10;
+  <Y extends ((dynamic) → dynamic) → dynamic = dynamic>() → void fsource11 = self::toF<((dynamic) → dynamic) → dynamic>(source11);
+  <Y extends ((dynamic) → dynamic) → dynamic = dynamic>() → void target11 = fsource11;
+  <Y extends ((dynamic) → dynamic) → (dynamic) → dynamic = dynamic>() → void fsource12 = self::toF<((dynamic) → dynamic) → (dynamic) → dynamic>(source12);
+  <Y extends ((dynamic) → dynamic) → (dynamic) → dynamic = dynamic>() → void target12 = fsource12;
+}
+static method testNested(self::B<() → dynamic> source1, self::B<(dynamic) → dynamic> source2, self::B<(dynamic) → dynamic> source3, self::B<() → core::num> source4, self::B<(core::num) → dynamic> source5, self::B<(core::num) → core::num> source6, self::B<() → self::A<dynamic>> source7, self::B<(self::A<Never>) → dynamic> source8, self::B<() → (Never) → dynamic> source10, self::B<((dynamic) → dynamic) → dynamic> source11, self::B<((dynamic) → dynamic) → (dynamic) → dynamic> source12) → void {
+  <Y extends self::B<() → dynamic> = dynamic>() → void fsource1 = self::toF<self::B<() → dynamic>>(source1);
+  <Y extends self::B<() → dynamic> = dynamic>() → void target1 = fsource1;
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void fsource2 = self::toF<self::B<(dynamic) → dynamic>>(source2);
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target2 = fsource2;
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void fsource3 = self::toF<self::B<(dynamic) → dynamic>>(source3);
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target3 = fsource3;
+  <Y extends self::B<() → core::num> = dynamic>() → void fsource4 = self::toF<self::B<() → core::num>>(source4);
+  <Y extends self::B<() → core::num> = dynamic>() → void target4 = fsource4;
+  <Y extends self::B<(core::num) → dynamic> = dynamic>() → void fsource5 = self::toF<self::B<(core::num) → dynamic>>(source5);
+  <Y extends self::B<(core::num) → dynamic> = dynamic>() → void target5 = fsource5;
+  <Y extends self::B<(core::num) → core::num> = dynamic>() → void fsource6 = self::toF<self::B<(core::num) → core::num>>(source6);
+  <Y extends self::B<(core::num) → core::num> = dynamic>() → void target6 = fsource6;
+  <Y extends self::B<() → self::A<dynamic>> = dynamic>() → void fsource7 = self::toF<self::B<() → self::A<dynamic>>>(source7);
+  <Y extends self::B<() → self::A<dynamic>> = dynamic>() → void target7 = fsource7;
+  <Y extends self::B<(self::A<Never>) → dynamic> = dynamic>() → void fsource8 = self::toF<self::B<(self::A<Never>) → dynamic>>(source8);
+  <Y extends self::B<(self::A<Never>) → dynamic> = dynamic>() → void target8 = fsource8;
+  self::B<(self::A<dynamic>) → self::A<dynamic>> source9;
+  <Y extends self::B<() → (Never) → dynamic> = dynamic>() → void fsource10 = self::toF<self::B<() → (Never) → dynamic>>(source10);
+  <Y extends self::B<() → (Never) → dynamic> = dynamic>() → void target10 = fsource10;
+  <Y extends self::B<((dynamic) → dynamic) → dynamic> = dynamic>() → void fsource11 = self::toF<self::B<((dynamic) → dynamic) → dynamic>>(source11);
+  <Y extends self::B<((dynamic) → dynamic) → dynamic> = dynamic>() → void target11 = fsource11;
+  <Y extends self::B<((dynamic) → dynamic) → (dynamic) → dynamic> = dynamic>() → void fsource12 = self::toF<self::B<((dynamic) → dynamic) → (dynamic) → dynamic>>(source12);
+  <Y extends self::B<((dynamic) → dynamic) → (dynamic) → dynamic> = dynamic>() → void target12 = fsource12;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/top_level_variance2.dart.weak.outline.expect b/pkg/front_end/testcases/general/top_level_variance2.dart.weak.outline.expect
new file mode 100644
index 0000000..9cacf36
--- /dev/null
+++ b/pkg/front_end/testcases/general/top_level_variance2.dart.weak.outline.expect
@@ -0,0 +1,33 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef F<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
+typedef Fcov<X extends core::Object? = dynamic> = () → X%;
+typedef Fcon<contravariant X extends core::Object? = dynamic> = (X%) → dynamic;
+typedef Finv<invariant X extends core::Object? = dynamic> = (X%) → X%;
+typedef FcovBound<X extends core::num> = () → X;
+typedef FconBound<contravariant X extends core::num> = (X) → dynamic;
+typedef FinvBound<invariant X extends core::num> = (X) → X;
+typedef FcovCyclicBound<X extends self::A<X> = self::A<dynamic>> = () → X;
+typedef FconCyclicBound<contravariant X extends self::A<X> = self::A<Never>> = (X) → dynamic;
+typedef FinvCyclicBound<invariant X extends self::A<X> = self::A<dynamic>> = (X) → X;
+typedef FcovCyclicCoBound<X extends (X) → dynamic = (Never) → dynamic> = () → X;
+typedef FconCyclicCoBound<contravariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → dynamic;
+typedef FinvCyclicCoBound<invariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → X;
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    ;
+}
+class B<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::B<self::B::X%>
+    ;
+}
+static method toF<X extends core::Object? = dynamic>(self::toF::X% x) → <Y extends self::toF::X% = dynamic>() → void
+  ;
+static method testTopLevel(() → dynamic source1, (dynamic) → dynamic source2, (dynamic) → dynamic source3, () → core::num source4, (core::num) → dynamic source5, (core::num) → core::num source6, () → self::A<dynamic> source7, (self::A<Never>) → dynamic source8, () → (Never) → dynamic source10, ((dynamic) → dynamic) → dynamic source11, ((dynamic) → dynamic) → (dynamic) → dynamic source12) → void
+  ;
+static method testNested(self::B<() → dynamic> source1, self::B<(dynamic) → dynamic> source2, self::B<(dynamic) → dynamic> source3, self::B<() → core::num> source4, self::B<(core::num) → dynamic> source5, self::B<(core::num) → core::num> source6, self::B<() → self::A<dynamic>> source7, self::B<(self::A<Never>) → dynamic> source8, self::B<() → (Never) → dynamic> source10, self::B<((dynamic) → dynamic) → dynamic> source11, self::B<((dynamic) → dynamic) → (dynamic) → dynamic> source12) → void
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/top_level_variance2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/top_level_variance2.dart.weak.transformed.expect
new file mode 100644
index 0000000..85c9d46
--- /dev/null
+++ b/pkg/front_end/testcases/general/top_level_variance2.dart.weak.transformed.expect
@@ -0,0 +1,80 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+typedef F<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
+typedef Fcov<X extends core::Object? = dynamic> = () → X%;
+typedef Fcon<contravariant X extends core::Object? = dynamic> = (X%) → dynamic;
+typedef Finv<invariant X extends core::Object? = dynamic> = (X%) → X%;
+typedef FcovBound<X extends core::num> = () → X;
+typedef FconBound<contravariant X extends core::num> = (X) → dynamic;
+typedef FinvBound<invariant X extends core::num> = (X) → X;
+typedef FcovCyclicBound<X extends self::A<X> = self::A<dynamic>> = () → X;
+typedef FconCyclicBound<contravariant X extends self::A<X> = self::A<Never>> = (X) → dynamic;
+typedef FinvCyclicBound<invariant X extends self::A<X> = self::A<dynamic>> = (X) → X;
+typedef FcovCyclicCoBound<X extends (X) → dynamic = (Never) → dynamic> = () → X;
+typedef FconCyclicCoBound<contravariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → dynamic;
+typedef FinvCyclicCoBound<invariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → X;
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    : super core::Object::•()
+    ;
+}
+class B<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::B<self::B::X%>
+    : super core::Object::•()
+    ;
+}
+static method toF<X extends core::Object? = dynamic>(self::toF::X% x) → <Y extends self::toF::X% = dynamic>() → void
+  return throw "";
+static method testTopLevel(() → dynamic source1, (dynamic) → dynamic source2, (dynamic) → dynamic source3, () → core::num source4, (core::num) → dynamic source5, (core::num) → core::num source6, () → self::A<dynamic> source7, (self::A<Never>) → dynamic source8, () → (Never) → dynamic source10, ((dynamic) → dynamic) → dynamic source11, ((dynamic) → dynamic) → (dynamic) → dynamic source12) → void {
+  <Y extends () → dynamic = dynamic>() → void fsource1 = self::toF<() → dynamic>(source1);
+  <Y extends () → dynamic = dynamic>() → void target1 = fsource1;
+  <Y extends (dynamic) → dynamic = dynamic>() → void fsource2 = self::toF<(dynamic) → dynamic>(source2);
+  <Y extends (dynamic) → dynamic = dynamic>() → void target2 = fsource2;
+  <Y extends (dynamic) → dynamic = dynamic>() → void fsource3 = self::toF<(dynamic) → dynamic>(source3);
+  <Y extends (dynamic) → dynamic = dynamic>() → void target3 = fsource3;
+  <Y extends () → core::num = dynamic>() → void fsource4 = self::toF<() → core::num>(source4);
+  <Y extends () → core::num = dynamic>() → void target4 = fsource4;
+  <Y extends (core::num) → dynamic = dynamic>() → void fsource5 = self::toF<(core::num) → dynamic>(source5);
+  <Y extends (core::num) → dynamic = dynamic>() → void target5 = fsource5;
+  <Y extends (core::num) → core::num = dynamic>() → void fsource6 = self::toF<(core::num) → core::num>(source6);
+  <Y extends (core::num) → core::num = dynamic>() → void target6 = fsource6;
+  <Y extends () → self::A<dynamic> = dynamic>() → void fsource7 = self::toF<() → self::A<dynamic>>(source7);
+  <Y extends () → self::A<dynamic> = dynamic>() → void target7 = fsource7;
+  <Y extends (self::A<Never>) → dynamic = dynamic>() → void fsource8 = self::toF<(self::A<Never>) → dynamic>(source8);
+  <Y extends (self::A<Never>) → dynamic = dynamic>() → void target8 = fsource8;
+  (self::A<dynamic>) → self::A<dynamic> source9;
+  <Y extends () → (Never) → dynamic = dynamic>() → void fsource10 = self::toF<() → (Never) → dynamic>(source10);
+  <Y extends () → (Never) → dynamic = dynamic>() → void target10 = fsource10;
+  <Y extends ((dynamic) → dynamic) → dynamic = dynamic>() → void fsource11 = self::toF<((dynamic) → dynamic) → dynamic>(source11);
+  <Y extends ((dynamic) → dynamic) → dynamic = dynamic>() → void target11 = fsource11;
+  <Y extends ((dynamic) → dynamic) → (dynamic) → dynamic = dynamic>() → void fsource12 = self::toF<((dynamic) → dynamic) → (dynamic) → dynamic>(source12);
+  <Y extends ((dynamic) → dynamic) → (dynamic) → dynamic = dynamic>() → void target12 = fsource12;
+}
+static method testNested(self::B<() → dynamic> source1, self::B<(dynamic) → dynamic> source2, self::B<(dynamic) → dynamic> source3, self::B<() → core::num> source4, self::B<(core::num) → dynamic> source5, self::B<(core::num) → core::num> source6, self::B<() → self::A<dynamic>> source7, self::B<(self::A<Never>) → dynamic> source8, self::B<() → (Never) → dynamic> source10, self::B<((dynamic) → dynamic) → dynamic> source11, self::B<((dynamic) → dynamic) → (dynamic) → dynamic> source12) → void {
+  <Y extends self::B<() → dynamic> = dynamic>() → void fsource1 = self::toF<self::B<() → dynamic>>(source1);
+  <Y extends self::B<() → dynamic> = dynamic>() → void target1 = fsource1;
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void fsource2 = self::toF<self::B<(dynamic) → dynamic>>(source2);
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target2 = fsource2;
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void fsource3 = self::toF<self::B<(dynamic) → dynamic>>(source3);
+  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target3 = fsource3;
+  <Y extends self::B<() → core::num> = dynamic>() → void fsource4 = self::toF<self::B<() → core::num>>(source4);
+  <Y extends self::B<() → core::num> = dynamic>() → void target4 = fsource4;
+  <Y extends self::B<(core::num) → dynamic> = dynamic>() → void fsource5 = self::toF<self::B<(core::num) → dynamic>>(source5);
+  <Y extends self::B<(core::num) → dynamic> = dynamic>() → void target5 = fsource5;
+  <Y extends self::B<(core::num) → core::num> = dynamic>() → void fsource6 = self::toF<self::B<(core::num) → core::num>>(source6);
+  <Y extends self::B<(core::num) → core::num> = dynamic>() → void target6 = fsource6;
+  <Y extends self::B<() → self::A<dynamic>> = dynamic>() → void fsource7 = self::toF<self::B<() → self::A<dynamic>>>(source7);
+  <Y extends self::B<() → self::A<dynamic>> = dynamic>() → void target7 = fsource7;
+  <Y extends self::B<(self::A<Never>) → dynamic> = dynamic>() → void fsource8 = self::toF<self::B<(self::A<Never>) → dynamic>>(source8);
+  <Y extends self::B<(self::A<Never>) → dynamic> = dynamic>() → void target8 = fsource8;
+  self::B<(self::A<dynamic>) → self::A<dynamic>> source9;
+  <Y extends self::B<() → (Never) → dynamic> = dynamic>() → void fsource10 = self::toF<self::B<() → (Never) → dynamic>>(source10);
+  <Y extends self::B<() → (Never) → dynamic> = dynamic>() → void target10 = fsource10;
+  <Y extends self::B<((dynamic) → dynamic) → dynamic> = dynamic>() → void fsource11 = self::toF<self::B<((dynamic) → dynamic) → dynamic>>(source11);
+  <Y extends self::B<((dynamic) → dynamic) → dynamic> = dynamic>() → void target11 = fsource11;
+  <Y extends self::B<((dynamic) → dynamic) → (dynamic) → dynamic> = dynamic>() → void fsource12 = self::toF<self::B<((dynamic) → dynamic) → (dynamic) → dynamic>>(source12);
+  <Y extends self::B<((dynamic) → dynamic) → (dynamic) → dynamic> = dynamic>() → void target12 = fsource12;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/top_level_variance_test.dart b/pkg/front_end/testcases/general/top_level_variance_test.dart
index 69a8f4d..c08e99b 100644
--- a/pkg/front_end/testcases/general/top_level_variance_test.dart
+++ b/pkg/front_end/testcases/general/top_level_variance_test.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
+
 // Testing that instantiate-to-bound and super-bounded types take the
 // variance of formal type parameters into account when a type alias is
 // used as a raw type.
@@ -160,7 +162,4 @@
   F<B<FinvCyclicCoBound<Function(dynamic)>>> target12 = fsource12;
 }
 
-main() {
-  testTopLevel();
-  testNested();
-}
+main() {}
diff --git a/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.expect b/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.expect
index c61d2e4..c3f3efa 100644
--- a/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.expect
+++ b/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.expect
@@ -119,7 +119,4 @@
   <Y extends self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>* = dynamic>() →* void fsource12 = self::toF<self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>*>(source12);
   <Y extends self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>* = dynamic>() →* void target12 = fsource12;
 }
-static method main() → dynamic {
-  self::testTopLevel();
-  self::testNested();
-}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.modular.expect b/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.modular.expect
index c61d2e4..c3f3efa 100644
--- a/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.modular.expect
@@ -119,7 +119,4 @@
   <Y extends self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>* = dynamic>() →* void fsource12 = self::toF<self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>*>(source12);
   <Y extends self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>* = dynamic>() →* void target12 = fsource12;
 }
-static method main() → dynamic {
-  self::testTopLevel();
-  self::testNested();
-}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.transformed.expect
index c61d2e4..c3f3efa 100644
--- a/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/top_level_variance_test.dart.weak.transformed.expect
@@ -119,7 +119,4 @@
   <Y extends self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>* = dynamic>() →* void fsource12 = self::toF<self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>*>(source12);
   <Y extends self::B<((dynamic) →* dynamic) →* (dynamic) →* dynamic>* = dynamic>() →* void target12 = fsource12;
 }
-static method main() → dynamic {
-  self::testTopLevel();
-  self::testNested();
-}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart b/pkg/front_end/testcases/general/type_literal_as_metadata.dart
index e1a7a9f..1eafeef 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.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 A {
   const A();
 }
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.textual_outline.expect
index 0c2f948..54f0474 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   const A();
 }
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.textual_outline_modelled.expect
index 0c2f948..54f0474 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   const A();
 }
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.expect
index 6039ee4..efd2822 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,36 +10,16 @@
 import "dart:core" as core;
 
 class A extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::A*
+  const 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
 }
 @invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
  ^"
 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
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.modular.expect
index 6039ee4..efd2822 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,36 +10,16 @@
 import "dart:core" as core;
 
 class A extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::A*
+  const 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
 }
 @invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
  ^"
 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
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.outline.expect
index 49f26e6..da077fb 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,36 +10,16 @@
 import "dart:core" as core;
 
 class A extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::A*
+  const 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
 }
 @invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
- ^" in self::A*
+ ^" in self::A
 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
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.transformed.expect
index 6039ee4..efd2822 100644
--- a/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_literal_as_metadata.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,36 +10,16 @@
 import "dart:core" as core;
 
 class A extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::A*
+  const 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
 }
 @invalid-expression "pkg/front_end/testcases/general/type_literal_as_metadata.dart:9:2: Error: This can't be used as an annotation; an annotation should be a reference to a compile-time constant variable, or a call to a constant constructor.
 @A
  ^"
 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
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_of_null.dart b/pkg/front_end/testcases/general/type_of_null.dart
index 752287b..8a89e24 100644
--- a/pkg/front_end/testcases/general/type_of_null.dart
+++ b/pkg/front_end/testcases/general/type_of_null.dart
@@ -1,31 +1,31 @@
 // 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
+
 /*@testedFeatures=inference*/
-T map<T>(T Function() f1, T Function() f2) {}
+T map<T>(T Function() f1, T Function() f2) => throw '';
 
 id<T>(T t) => t;
 
 Null foo() => null;
 
-main() {
-  /*@ typeArgs=Null */ map(/*@ returnType=Null */ () {},
-      /*@ returnType=Null */ () => throw "hello");
-  /*@ typeArgs=Null */ map(/*@ returnType=Null */ () => throw "hello",
-      /*@ returnType=Null */ () {});
+test() {
+  /*@ typeArgs=Null */ map(
+      /*@ returnType=Null */ () {}, /*@returnType=Never*/ () => throw "hello");
+  /*@ typeArgs=Null */ map(
+      /*@returnType=Never*/ () => throw "hello", /*@ returnType=Null */ () {});
   Null Function() f = /*@ returnType=Null */ () {};
-  /*@ typeArgs=Null */ map(
-      foo, /*@ returnType=Null */ () => throw "hello");
-  /*@ typeArgs=Null */ map(
-      /*@ returnType=Null */ () => throw "hello", foo);
+  /*@ typeArgs=Null */ map(foo, /*@returnType=Never*/ () => throw "hello");
+  /*@ typeArgs=Null */ map(/*@returnType=Never*/ () => throw "hello", foo);
   /*@ typeArgs=Null */ map(/*@ returnType=Null */ () {
     return null;
-  }, /*@ returnType=Null */ () => throw "hello");
+  }, /*@returnType=Never*/ () => throw "hello");
 
-  /*@ typeArgs=Null */ map(/*@ returnType=Null */ () => throw "hello",
+  /*@ typeArgs=Null */ map(/*@returnType=Never*/ () => throw "hello",
       /*@ returnType=Null */ () {
     return null;
   });
-  /*@ typeArgs=() ->* Null */ id(/*@ returnType=Null */ () {});
+  /*@typeArgs=() -> Null*/ id(/*@ returnType=Null */ () {});
 }
+
+main() {}
diff --git a/pkg/front_end/testcases/general/type_of_null.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_of_null.dart.textual_outline.expect
index 117df44..a453890 100644
--- a/pkg/front_end/testcases/general/type_of_null.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_of_null.dart.textual_outline.expect
@@ -1,5 +1,5 @@
-// @dart = 2.9
-T map<T>(T Function() f1, T Function() f2) {}
+T map<T>(T Function() f1, T Function() f2) => throw '';
 id<T>(T t) => t;
 Null foo() => null;
+test() {}
 main() {}
diff --git a/pkg/front_end/testcases/general/type_of_null.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_of_null.dart.textual_outline_modelled.expect
index bfde047..231e22d 100644
--- a/pkg/front_end/testcases/general/type_of_null.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_of_null.dart.textual_outline_modelled.expect
@@ -1,5 +1,5 @@
-// @dart = 2.9
 Null foo() => null;
-T map<T>(T Function() f1, T Function() f2) {}
+T map<T>(T Function() f1, T Function() f2) => throw '';
 id<T>(T t) => t;
 main() {}
+test() {}
diff --git a/pkg/front_end/testcases/general/type_of_null.dart.weak.expect b/pkg/front_end/testcases/general/type_of_null.dart.weak.expect
index 4f0b860..84c9c74 100644
--- a/pkg/front_end/testcases/general/type_of_null.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_of_null.dart.weak.expect
@@ -1,26 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method map<T extends core::Object* = dynamic>(() →* self::map::T* f1, () →* self::map::T* f2) → self::map::T* {}
-static method id<T extends core::Object* = dynamic>(self::id::T* t) → dynamic
+static method map<T extends core::Object? = dynamic>(() → self::map::T% f1, () → self::map::T% f2) → self::map::T%
+  return throw "";
+static method id<T extends core::Object? = dynamic>(self::id::T% t) → dynamic
   return t;
 static method foo() → Null
   return null;
-static method main() → dynamic {
-  self::map<Null>(() → Null {}, () → Null => throw "hello");
-  self::map<Null>(() → Null => throw "hello", () → Null {});
-  () →* Null f = () → Null {};
-  self::map<Null>(#C1, () → Null => throw "hello");
-  self::map<Null>(() → Null => throw "hello", #C1);
+static method test() → dynamic {
+  self::map<Null>(() → Null {}, () → Never => throw "hello");
+  self::map<Null>(() → Never => throw "hello", () → Null {});
+  () → Null f = () → Null {};
+  self::map<Null>(#C1, () → Never => throw "hello");
+  self::map<Null>(() → Never => throw "hello", #C1);
   self::map<Null>(() → Null {
     return null;
-  }, () → Null => throw "hello");
-  self::map<Null>(() → Null => throw "hello", () → Null {
+  }, () → Never => throw "hello");
+  self::map<Null>(() → Never => throw "hello", () → Null {
     return null;
   });
-  self::id<() →* Null>(() → Null {});
+  self::id<() → Null>(() → Null {});
 }
+static method main() → dynamic {}
 
 constants  {
   #C1 = static-tearoff self::foo
diff --git a/pkg/front_end/testcases/general/type_of_null.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_of_null.dart.weak.modular.expect
index 4f0b860..84c9c74 100644
--- a/pkg/front_end/testcases/general/type_of_null.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_of_null.dart.weak.modular.expect
@@ -1,26 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method map<T extends core::Object* = dynamic>(() →* self::map::T* f1, () →* self::map::T* f2) → self::map::T* {}
-static method id<T extends core::Object* = dynamic>(self::id::T* t) → dynamic
+static method map<T extends core::Object? = dynamic>(() → self::map::T% f1, () → self::map::T% f2) → self::map::T%
+  return throw "";
+static method id<T extends core::Object? = dynamic>(self::id::T% t) → dynamic
   return t;
 static method foo() → Null
   return null;
-static method main() → dynamic {
-  self::map<Null>(() → Null {}, () → Null => throw "hello");
-  self::map<Null>(() → Null => throw "hello", () → Null {});
-  () →* Null f = () → Null {};
-  self::map<Null>(#C1, () → Null => throw "hello");
-  self::map<Null>(() → Null => throw "hello", #C1);
+static method test() → dynamic {
+  self::map<Null>(() → Null {}, () → Never => throw "hello");
+  self::map<Null>(() → Never => throw "hello", () → Null {});
+  () → Null f = () → Null {};
+  self::map<Null>(#C1, () → Never => throw "hello");
+  self::map<Null>(() → Never => throw "hello", #C1);
   self::map<Null>(() → Null {
     return null;
-  }, () → Null => throw "hello");
-  self::map<Null>(() → Null => throw "hello", () → Null {
+  }, () → Never => throw "hello");
+  self::map<Null>(() → Never => throw "hello", () → Null {
     return null;
   });
-  self::id<() →* Null>(() → Null {});
+  self::id<() → Null>(() → Null {});
 }
+static method main() → dynamic {}
 
 constants  {
   #C1 = static-tearoff self::foo
diff --git a/pkg/front_end/testcases/general/type_of_null.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_of_null.dart.weak.outline.expect
index b7c00566..72ae809 100644
--- a/pkg/front_end/testcases/general/type_of_null.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_of_null.dart.weak.outline.expect
@@ -1,12 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method map<T extends core::Object* = dynamic>(() →* self::map::T* f1, () →* self::map::T* f2) → self::map::T*
+static method map<T extends core::Object? = dynamic>(() → self::map::T% f1, () → self::map::T% f2) → self::map::T%
   ;
-static method id<T extends core::Object* = dynamic>(self::id::T* t) → dynamic
+static method id<T extends core::Object? = dynamic>(self::id::T% t) → dynamic
   ;
 static method foo() → Null
   ;
+static method test() → dynamic
+  ;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_of_null.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_of_null.dart.weak.transformed.expect
index 4f0b860..84c9c74 100644
--- a/pkg/front_end/testcases/general/type_of_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_of_null.dart.weak.transformed.expect
@@ -1,26 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method map<T extends core::Object* = dynamic>(() →* self::map::T* f1, () →* self::map::T* f2) → self::map::T* {}
-static method id<T extends core::Object* = dynamic>(self::id::T* t) → dynamic
+static method map<T extends core::Object? = dynamic>(() → self::map::T% f1, () → self::map::T% f2) → self::map::T%
+  return throw "";
+static method id<T extends core::Object? = dynamic>(self::id::T% t) → dynamic
   return t;
 static method foo() → Null
   return null;
-static method main() → dynamic {
-  self::map<Null>(() → Null {}, () → Null => throw "hello");
-  self::map<Null>(() → Null => throw "hello", () → Null {});
-  () →* Null f = () → Null {};
-  self::map<Null>(#C1, () → Null => throw "hello");
-  self::map<Null>(() → Null => throw "hello", #C1);
+static method test() → dynamic {
+  self::map<Null>(() → Null {}, () → Never => throw "hello");
+  self::map<Null>(() → Never => throw "hello", () → Null {});
+  () → Null f = () → Null {};
+  self::map<Null>(#C1, () → Never => throw "hello");
+  self::map<Null>(() → Never => throw "hello", #C1);
   self::map<Null>(() → Null {
     return null;
-  }, () → Null => throw "hello");
-  self::map<Null>(() → Null => throw "hello", () → Null {
+  }, () → Never => throw "hello");
+  self::map<Null>(() → Never => throw "hello", () → Null {
     return null;
   });
-  self::id<() →* Null>(() → Null {});
+  self::id<() → Null>(() → Null {});
 }
+static method main() → dynamic {}
 
 constants  {
   #C1 = static-tearoff self::foo
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart
index 8b645f8..0284905 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart
@@ -1,14 +1,14 @@
 // 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
+
 abstract class Foo<T> {
   List<T> get list;
   void setList<T>(List<T> value);
 }
 
 class Bar implements Foo<int> {
-  List<int> list;
+  late List<int> list;
   void setList<int>(List<int> value) {
     list = value;
   }
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline.expect
index 16d1105..9465953 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline.expect
@@ -1,10 +1,9 @@
-// @dart = 2.9
 abstract class Foo<T> {
   List<T> get list;
   void setList<T>(List<T> value);
 }
 
 class Bar implements Foo<int> {
-  List<int> list;
+  late List<int> list;
   void setList<int>(List<int> value) {}
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline_modelled.expect
index 16d1105..beb5eea 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.textual_outline_modelled.expect
@@ -1,10 +1,11 @@
-// @dart = 2.9
 abstract class Foo<T> {
   List<T> get list;
   void setList<T>(List<T> value);
 }
-
 class Bar implements Foo<int> {
+  ---- unknown chunk starts ----
+late
+---- unknown chunk ends ----
   List<int> list;
   void setList<int>(List<int> value) {}
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.expect
index ea169b3..6618b46 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -12,44 +12,24 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class Foo<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Foo<self::Foo::T*>*
+abstract class Foo<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Foo<self::Foo::T%>
     : super core::Object::•()
     ;
-  abstract get list() → core::List<self::Foo::T*>*;
-  abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* 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 list() → core::List<self::Foo::T%>;
+  abstract method setList<T extends core::Object? = dynamic>(core::List<self::Foo::setList::T%> value) → void;
 }
-class Bar extends core::Object implements self::Foo<core::int*> {
-  field core::List<core::int*>* list = null;
-  synthetic constructor •() → self::Bar*
+class Bar extends core::Object implements self::Foo<core::int> {
+  late field core::List<core::int> list;
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  method setList<int extends core::Object* = dynamic>(core::List<self::Bar::setList::int*>* value) → void {
+  method setList<int extends core::Object? = dynamic>(core::List<self::Bar::setList::int%> value) → void {
     this.{self::Bar::list} = invalid-expression "pkg/front_end/testcases/general/type_parameter_type_named_int.dart:13:12: Error: A value of type 'List<int/*1*/>' can't be assigned to a variable of type 'List<int/*2*/>'.
  - 'List' is from 'dart:core'.
  - 'int/*1*/' is from 'pkg/front_end/testcases/general/type_parameter_type_named_int.dart'.
  - 'int/*2*/' is from 'dart:core'.
     list = value;
-           ^" in value as{TypeError} core::List<core::int*>*;
+           ^" in value as{TypeError,ForNonNullableByDefault} core::List<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
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.modular.expect
index ea169b3..6618b46 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -12,44 +12,24 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class Foo<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Foo<self::Foo::T*>*
+abstract class Foo<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Foo<self::Foo::T%>
     : super core::Object::•()
     ;
-  abstract get list() → core::List<self::Foo::T*>*;
-  abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* 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 list() → core::List<self::Foo::T%>;
+  abstract method setList<T extends core::Object? = dynamic>(core::List<self::Foo::setList::T%> value) → void;
 }
-class Bar extends core::Object implements self::Foo<core::int*> {
-  field core::List<core::int*>* list = null;
-  synthetic constructor •() → self::Bar*
+class Bar extends core::Object implements self::Foo<core::int> {
+  late field core::List<core::int> list;
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  method setList<int extends core::Object* = dynamic>(core::List<self::Bar::setList::int*>* value) → void {
+  method setList<int extends core::Object? = dynamic>(core::List<self::Bar::setList::int%> value) → void {
     this.{self::Bar::list} = invalid-expression "pkg/front_end/testcases/general/type_parameter_type_named_int.dart:13:12: Error: A value of type 'List<int/*1*/>' can't be assigned to a variable of type 'List<int/*2*/>'.
  - 'List' is from 'dart:core'.
  - 'int/*1*/' is from 'pkg/front_end/testcases/general/type_parameter_type_named_int.dart'.
  - 'int/*2*/' is from 'dart:core'.
     list = value;
-           ^" in value as{TypeError} core::List<core::int*>*;
+           ^" in value as{TypeError,ForNonNullableByDefault} core::List<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
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.outline.expect
index c0e0f1c..95c0159 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.outline.expect
@@ -1,37 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-abstract class Foo<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Foo<self::Foo::T*>*
+abstract class Foo<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Foo<self::Foo::T%>
     ;
-  abstract get list() → core::List<self::Foo::T*>*;
-  abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* 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 list() → core::List<self::Foo::T%>;
+  abstract method setList<T extends core::Object? = dynamic>(core::List<self::Foo::setList::T%> value) → void;
 }
-class Bar extends core::Object implements self::Foo<core::int*> {
-  field core::List<core::int*>* list;
-  synthetic constructor •() → self::Bar*
+class Bar extends core::Object implements self::Foo<core::int> {
+  late field core::List<core::int> list;
+  synthetic constructor •() → self::Bar
     ;
-  method setList<int extends core::Object* = dynamic>(core::List<self::Bar::setList::int*>* value) → void
+  method setList<int extends core::Object? = dynamic>(core::List<self::Bar::setList::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
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.transformed.expect
index ea169b3..6618b46 100644
--- a/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_parameter_type_named_int.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -12,44 +12,24 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class Foo<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::Foo<self::Foo::T*>*
+abstract class Foo<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Foo<self::Foo::T%>
     : super core::Object::•()
     ;
-  abstract get list() → core::List<self::Foo::T*>*;
-  abstract method setList<T extends core::Object* = dynamic>(core::List<self::Foo::setList::T*>* 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 list() → core::List<self::Foo::T%>;
+  abstract method setList<T extends core::Object? = dynamic>(core::List<self::Foo::setList::T%> value) → void;
 }
-class Bar extends core::Object implements self::Foo<core::int*> {
-  field core::List<core::int*>* list = null;
-  synthetic constructor •() → self::Bar*
+class Bar extends core::Object implements self::Foo<core::int> {
+  late field core::List<core::int> list;
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  method setList<int extends core::Object* = dynamic>(core::List<self::Bar::setList::int*>* value) → void {
+  method setList<int extends core::Object? = dynamic>(core::List<self::Bar::setList::int%> value) → void {
     this.{self::Bar::list} = invalid-expression "pkg/front_end/testcases/general/type_parameter_type_named_int.dart:13:12: Error: A value of type 'List<int/*1*/>' can't be assigned to a variable of type 'List<int/*2*/>'.
  - 'List' is from 'dart:core'.
  - 'int/*1*/' is from 'pkg/front_end/testcases/general/type_parameter_type_named_int.dart'.
  - 'int/*2*/' is from 'dart:core'.
     list = value;
-           ^" in value as{TypeError} core::List<core::int*>*;
+           ^" in value as{TypeError,ForNonNullableByDefault} core::List<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
 }
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart
index b089e04..465d0bf 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart
@@ -1,40 +1,60 @@
 // 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 Foo<U> {
-  static U foo1() { return null; }
-  static List<U> foo1Prime() { return null; }
-  static void foo2(U x) { return null; }
-  static void foo2Prime(List<U> x) { return null; }
+  static U foo1() {
+    return null;
+  }
+
+  static List<U> foo1Prime() {
+    throw '';
+  }
+
+  static void foo2(U x) {}
+  static void foo2Prime(List<U> x) {}
   static void foo3() {
     U foo4;
     List<U> foo4Prime;
     void foo5(U y) => print(y);
     void foo5Prime(List<U> y) => print(y);
     U foo6() => null;
-    List<U> foo6Prime() => null;
-    void Function (U y) foo7 = (U y) => y;
-    void Function (List<U> y) foo7Prime = (List<U> y) => y;
+    List<U> foo6Prime() => throw '';
+    void Function(U y) foo7 = (U y) => y;
+    void Function(List<U> y) foo7Prime = (List<U> y) => y;
   }
-  static U Function() foo8() { return null; }
-  static List<U> Function() foo8Prime() { return null; }
-  static void Function(U) foo9() { return null; }
-  static void Function(List<U>) foo9Prime() { return null; }
-  static void foo10(U Function()) { return null; }
-  static void foo10Prime(List<U> Function()) { return null; }
+
+  static U Function() foo8() {
+    throw '';
+  }
+
+  static List<U> Function() foo8Prime() {
+    throw '';
+  }
+
+  static void Function(U) foo9() {}
+  static void Function(List<U>) foo9Prime() {}
+  static void foo10(U Function()) {}
+
+  static void foo10Prime(List<U> Function()) {}
+
   // old syntax: variable named "U" of a function called 'Function'.
-  static void foo11(void Function(U)) { return null; }
-  static void foo12(void Function(U) b) { return null; }
-  static void foo12Prime(void Function(List<U>) b) { return null; }
+  static void foo11(void Function(U)) {}
+
+  static void foo12(void Function(U) b) {}
+
+  static void foo12Prime(void Function(List<U>) b) {}
+
   // old syntax: variable named "b" of type "U" of a function called 'Function'.
-  static void foo13(void Function(U b)) { return null; }
+  static void foo13(void Function(U b)) {}
+
   // old syntax: variable named "b" of type "List<U>" of a function called 'Function'.
-  static void foo13Prime(void Function(List<U> b)) { return null; }
-  static U foo14 = null;
-  static List<U> foo14Prime = null;
-  static U Function(U) foo15 = null;
-  static List<U> Function(List<U>) foo15Prime = null;
+  static void foo13Prime(void Function(List<U> b)) {}
+
+  static late U foo14;
+  static late List<U> foo14Prime;
+  static late U Function(U) foo15;
+  static late List<U> Function(List<U>) foo15Prime;
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline.expect
index a03a987..2967ac1 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo<U> {
   static U foo1() {}
   static List<U> foo1Prime() {}
@@ -16,10 +15,13 @@
   static void foo12Prime(void Function(List<U>) b) {}
   static void foo13(void Function(U b)) {}
   static void foo13Prime(void Function(List<U> b)) {}
-  static U foo14 = null;
-  static List<U> foo14Prime = null;
-  static U Function(U) foo15 = null;
-  static List<U> Function(List<U>) foo15Prime = null;
+  static late U ;
+  foo14;
+  static late List<U> (){}
+  foo14Prime;
+  static late U ;
+  Function(U) foo15;
+  static late List<U> (){}
+  Function(List<U>) foo15Prime;
 }
-
 main() {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline_modelled.expect
index fdfccad..531ae41 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo<U> {
   static List<U> Function() foo8Prime() {}
   static List<U> Function(List<U>) foo15Prime = null;
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.expect
index cb0d959..8f2941a 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.expect
@@ -1,206 +1,174 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:6:10: Error: Type variables can't be used in static members.
-//   static U foo1() { return null; }
+//   static U foo1() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:7:15: Error: Type variables can't be used in static members.
-//   static List<U> foo1Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:10:15: Error: Type variables can't be used in static members.
+//   static List<U> foo1Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:8:20: Error: Type variables can't be used in static members.
-//   static void foo2(U x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:14:20: Error: Type variables can't be used in static members.
+//   static void foo2(U x) {}
 //                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:9:30: Error: Type variables can't be used in static members.
-//   static void foo2Prime(List<U> x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:15:30: Error: Type variables can't be used in static members.
+//   static void foo2Prime(List<U> x) {}
 //                              ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:20:10: Error: Type variables can't be used in static members.
-//   static U Function() foo8() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:27:10: Error: Type variables can't be used in static members.
+//   static U Function() foo8() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:21:15: Error: Type variables can't be used in static members.
-//   static List<U> Function() foo8Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:31:15: Error: Type variables can't be used in static members.
+//   static List<U> Function() foo8Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:22:24: Error: Type variables can't be used in static members.
-//   static void Function(U) foo9() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:35:24: Error: Type variables can't be used in static members.
+//   static void Function(U) foo9() {}
 //                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:29: Error: Type variables can't be used in static members.
-//   static void Function(List<U>) foo9Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:29: Error: Type variables can't be used in static members.
+//   static void Function(List<U>) foo9Prime() {}
 //                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:21: Error: Type variables can't be used in static members.
-//   static void foo10(U Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:21: Error: Type variables can't be used in static members.
+//   static void foo10(U Function()) {}
 //                     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:25:31: Error: Type variables can't be used in static members.
-//   static void foo10Prime(List<U> Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:39:31: Error: Type variables can't be used in static members.
+//   static void foo10Prime(List<U> Function()) {}
 //                               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:28:35: Error: Type variables can't be used in static members.
-//   static void foo12(void Function(U) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:44:35: Error: Type variables can't be used in static members.
+//   static void foo12(void Function(U) b) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:29:45: Error: Type variables can't be used in static members.
-//   static void foo12Prime(void Function(List<U>) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:46:45: Error: Type variables can't be used in static members.
+//   static void foo12Prime(void Function(List<U>) b) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:31:35: Error: Type variables can't be used in static members.
-//   static void foo13(void Function(U b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:49:35: Error: Type variables can't be used in static members.
+//   static void foo13(void Function(U b)) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:33:45: Error: Type variables can't be used in static members.
-//   static void foo13Prime(void Function(List<U> b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:52:45: Error: Type variables can't be used in static members.
+//   static void foo13Prime(void Function(List<U> b)) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:34:10: Error: Type variables can't be used in static members.
-//   static U foo14 = null;
-//          ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:35:15: Error: Type variables can't be used in static members.
-//   static List<U> foo14Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:54:15: Error: Type variables can't be used in static members.
+//   static late U foo14;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:10: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//          ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:55:20: Error: Type variables can't be used in static members.
+//   static late List<U> foo14Prime;
+//                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:21: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//                     ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:15: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:56:15: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:32: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
-//                                ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:56:26: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
+//                          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:11:5: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:57:20: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                    ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:57:37: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                                     ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:17:5: Error: Type variables can't be used in static members.
 //     U foo4;
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:12:10: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:18:10: Error: Type variables can't be used in static members.
 //     List<U> foo4Prime;
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:13:15: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:19:15: Error: Type variables can't be used in static members.
 //     void foo5(U y) => print(y);
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:14:25: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:20:25: Error: Type variables can't be used in static members.
 //     void foo5Prime(List<U> y) => print(y);
 //                         ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:15:5: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:21:5: Error: Type variables can't be used in static members.
 //     U foo6() => null;
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:16:10: Error: Type variables can't be used in static members.
-//     List<U> foo6Prime() => null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:22:10: Error: Type variables can't be used in static members.
+//     List<U> foo6Prime() => throw '';
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:17:20: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                    ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:19: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:17:33: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:32: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                                ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:18:25: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                         ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:24: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:18:49: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:48: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                                                ^
 //
 import self as self;
 import "dart:core" as core;
 
-class Foo<U extends core::Object* = dynamic> extends core::Object {
-  static field invalid-type foo14 = null;
-  static field core::List<invalid-type>* foo14Prime = null;
-  static field (invalid-type) →* invalid-type foo15 = null;
-  static field (core::List<invalid-type>*) →* core::List<invalid-type>* foo15Prime = null;
-  synthetic constructor •() → self::Foo<self::Foo::U*>*
+class Foo<U extends core::Object? = dynamic> extends core::Object {
+  late static field invalid-type foo14;
+  late static field core::List<invalid-type> foo14Prime;
+  late static field (invalid-type) → invalid-type foo15;
+  late static field (core::List<invalid-type>) → core::List<invalid-type> foo15Prime;
+  synthetic constructor •() → self::Foo<self::Foo::U%>
     : super core::Object::•()
     ;
   static method foo1() → invalid-type {
     return null;
   }
-  static method foo1Prime() → core::List<invalid-type>* {
-    return null;
+  static method foo1Prime() → core::List<invalid-type> {
+    throw "";
   }
-  static method foo2(invalid-type x) → void {
-    return null;
-  }
-  static method foo2Prime(core::List<invalid-type>* x) → void {
-    return null;
-  }
+  static method foo2(invalid-type x) → void {}
+  static method foo2Prime(core::List<invalid-type> x) → void {}
   static method foo3() → void {
     invalid-type foo4;
-    core::List<invalid-type>* foo4Prime;
+    core::List<invalid-type> foo4Prime;
     function foo5(invalid-type y) → void
       return core::print(y);
-    function foo5Prime(core::List<invalid-type>* y) → void
+    function foo5Prime(core::List<invalid-type> y) → void
       return core::print(y);
     function foo6() → invalid-type
       return null;
-    function foo6Prime() → core::List<invalid-type>*
-      return null;
-    (invalid-type) →* void foo7 = (invalid-type y) → invalid-type => y;
-    (core::List<invalid-type>*) →* void foo7Prime = (core::List<invalid-type>* y) → core::List<invalid-type>* => y;
+    function foo6Prime() → core::List<invalid-type>
+      return throw "";
+    (invalid-type) → void foo7 = (invalid-type y) → void => y;
+    (core::List<invalid-type>) → void foo7Prime = (core::List<invalid-type> y) → void => y;
   }
-  static method foo8() → () →* invalid-type {
-    return null;
+  static method foo8() → () → invalid-type {
+    throw "";
   }
-  static method foo8Prime() → () →* core::List<invalid-type>* {
-    return null;
+  static method foo8Prime() → () → core::List<invalid-type> {
+    throw "";
   }
-  static method foo9() → (invalid-type) →* void {
-    return null;
-  }
-  static method foo9Prime() → (core::List<invalid-type>*) →* void {
-    return null;
-  }
-  static method foo10(() →* invalid-type Function) → void {
-    return null;
-  }
-  static method foo10Prime(() →* core::List<invalid-type>* Function) → void {
-    return null;
-  }
-  static method foo11((dynamic) →* void Function) → void {
-    return null;
-  }
-  static method foo12((invalid-type) →* void b) → void {
-    return null;
-  }
-  static method foo12Prime((core::List<invalid-type>*) →* void b) → void {
-    return null;
-  }
-  static method foo13((invalid-type) →* void Function) → void {
-    return null;
-  }
-  static method foo13Prime((core::List<invalid-type>*) →* void Function) → void {
-    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
+  static method foo9() → (invalid-type) → void {}
+  static method foo9Prime() → (core::List<invalid-type>) → void {}
+  static method foo10(() → invalid-type Function) → void {}
+  static method foo10Prime(() → core::List<invalid-type> Function) → void {}
+  static method foo11((dynamic) → void Function) → void {}
+  static method foo12((invalid-type) → void b) → void {}
+  static method foo12Prime((core::List<invalid-type>) → void b) → void {}
+  static method foo13((invalid-type) → void Function) → void {}
+  static method foo13Prime((core::List<invalid-type>) → void Function) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.modular.expect
index cb0d959..8f2941a 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.modular.expect
@@ -1,206 +1,174 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:6:10: Error: Type variables can't be used in static members.
-//   static U foo1() { return null; }
+//   static U foo1() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:7:15: Error: Type variables can't be used in static members.
-//   static List<U> foo1Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:10:15: Error: Type variables can't be used in static members.
+//   static List<U> foo1Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:8:20: Error: Type variables can't be used in static members.
-//   static void foo2(U x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:14:20: Error: Type variables can't be used in static members.
+//   static void foo2(U x) {}
 //                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:9:30: Error: Type variables can't be used in static members.
-//   static void foo2Prime(List<U> x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:15:30: Error: Type variables can't be used in static members.
+//   static void foo2Prime(List<U> x) {}
 //                              ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:20:10: Error: Type variables can't be used in static members.
-//   static U Function() foo8() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:27:10: Error: Type variables can't be used in static members.
+//   static U Function() foo8() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:21:15: Error: Type variables can't be used in static members.
-//   static List<U> Function() foo8Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:31:15: Error: Type variables can't be used in static members.
+//   static List<U> Function() foo8Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:22:24: Error: Type variables can't be used in static members.
-//   static void Function(U) foo9() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:35:24: Error: Type variables can't be used in static members.
+//   static void Function(U) foo9() {}
 //                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:29: Error: Type variables can't be used in static members.
-//   static void Function(List<U>) foo9Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:29: Error: Type variables can't be used in static members.
+//   static void Function(List<U>) foo9Prime() {}
 //                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:21: Error: Type variables can't be used in static members.
-//   static void foo10(U Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:21: Error: Type variables can't be used in static members.
+//   static void foo10(U Function()) {}
 //                     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:25:31: Error: Type variables can't be used in static members.
-//   static void foo10Prime(List<U> Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:39:31: Error: Type variables can't be used in static members.
+//   static void foo10Prime(List<U> Function()) {}
 //                               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:28:35: Error: Type variables can't be used in static members.
-//   static void foo12(void Function(U) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:44:35: Error: Type variables can't be used in static members.
+//   static void foo12(void Function(U) b) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:29:45: Error: Type variables can't be used in static members.
-//   static void foo12Prime(void Function(List<U>) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:46:45: Error: Type variables can't be used in static members.
+//   static void foo12Prime(void Function(List<U>) b) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:31:35: Error: Type variables can't be used in static members.
-//   static void foo13(void Function(U b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:49:35: Error: Type variables can't be used in static members.
+//   static void foo13(void Function(U b)) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:33:45: Error: Type variables can't be used in static members.
-//   static void foo13Prime(void Function(List<U> b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:52:45: Error: Type variables can't be used in static members.
+//   static void foo13Prime(void Function(List<U> b)) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:34:10: Error: Type variables can't be used in static members.
-//   static U foo14 = null;
-//          ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:35:15: Error: Type variables can't be used in static members.
-//   static List<U> foo14Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:54:15: Error: Type variables can't be used in static members.
+//   static late U foo14;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:10: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//          ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:55:20: Error: Type variables can't be used in static members.
+//   static late List<U> foo14Prime;
+//                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:21: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//                     ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:15: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:56:15: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:32: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
-//                                ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:56:26: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
+//                          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:11:5: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:57:20: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                    ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:57:37: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                                     ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:17:5: Error: Type variables can't be used in static members.
 //     U foo4;
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:12:10: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:18:10: Error: Type variables can't be used in static members.
 //     List<U> foo4Prime;
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:13:15: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:19:15: Error: Type variables can't be used in static members.
 //     void foo5(U y) => print(y);
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:14:25: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:20:25: Error: Type variables can't be used in static members.
 //     void foo5Prime(List<U> y) => print(y);
 //                         ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:15:5: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:21:5: Error: Type variables can't be used in static members.
 //     U foo6() => null;
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:16:10: Error: Type variables can't be used in static members.
-//     List<U> foo6Prime() => null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:22:10: Error: Type variables can't be used in static members.
+//     List<U> foo6Prime() => throw '';
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:17:20: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                    ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:19: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:17:33: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:32: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                                ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:18:25: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                         ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:24: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:18:49: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:48: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                                                ^
 //
 import self as self;
 import "dart:core" as core;
 
-class Foo<U extends core::Object* = dynamic> extends core::Object {
-  static field invalid-type foo14 = null;
-  static field core::List<invalid-type>* foo14Prime = null;
-  static field (invalid-type) →* invalid-type foo15 = null;
-  static field (core::List<invalid-type>*) →* core::List<invalid-type>* foo15Prime = null;
-  synthetic constructor •() → self::Foo<self::Foo::U*>*
+class Foo<U extends core::Object? = dynamic> extends core::Object {
+  late static field invalid-type foo14;
+  late static field core::List<invalid-type> foo14Prime;
+  late static field (invalid-type) → invalid-type foo15;
+  late static field (core::List<invalid-type>) → core::List<invalid-type> foo15Prime;
+  synthetic constructor •() → self::Foo<self::Foo::U%>
     : super core::Object::•()
     ;
   static method foo1() → invalid-type {
     return null;
   }
-  static method foo1Prime() → core::List<invalid-type>* {
-    return null;
+  static method foo1Prime() → core::List<invalid-type> {
+    throw "";
   }
-  static method foo2(invalid-type x) → void {
-    return null;
-  }
-  static method foo2Prime(core::List<invalid-type>* x) → void {
-    return null;
-  }
+  static method foo2(invalid-type x) → void {}
+  static method foo2Prime(core::List<invalid-type> x) → void {}
   static method foo3() → void {
     invalid-type foo4;
-    core::List<invalid-type>* foo4Prime;
+    core::List<invalid-type> foo4Prime;
     function foo5(invalid-type y) → void
       return core::print(y);
-    function foo5Prime(core::List<invalid-type>* y) → void
+    function foo5Prime(core::List<invalid-type> y) → void
       return core::print(y);
     function foo6() → invalid-type
       return null;
-    function foo6Prime() → core::List<invalid-type>*
-      return null;
-    (invalid-type) →* void foo7 = (invalid-type y) → invalid-type => y;
-    (core::List<invalid-type>*) →* void foo7Prime = (core::List<invalid-type>* y) → core::List<invalid-type>* => y;
+    function foo6Prime() → core::List<invalid-type>
+      return throw "";
+    (invalid-type) → void foo7 = (invalid-type y) → void => y;
+    (core::List<invalid-type>) → void foo7Prime = (core::List<invalid-type> y) → void => y;
   }
-  static method foo8() → () →* invalid-type {
-    return null;
+  static method foo8() → () → invalid-type {
+    throw "";
   }
-  static method foo8Prime() → () →* core::List<invalid-type>* {
-    return null;
+  static method foo8Prime() → () → core::List<invalid-type> {
+    throw "";
   }
-  static method foo9() → (invalid-type) →* void {
-    return null;
-  }
-  static method foo9Prime() → (core::List<invalid-type>*) →* void {
-    return null;
-  }
-  static method foo10(() →* invalid-type Function) → void {
-    return null;
-  }
-  static method foo10Prime(() →* core::List<invalid-type>* Function) → void {
-    return null;
-  }
-  static method foo11((dynamic) →* void Function) → void {
-    return null;
-  }
-  static method foo12((invalid-type) →* void b) → void {
-    return null;
-  }
-  static method foo12Prime((core::List<invalid-type>*) →* void b) → void {
-    return null;
-  }
-  static method foo13((invalid-type) →* void Function) → void {
-    return null;
-  }
-  static method foo13Prime((core::List<invalid-type>*) →* void Function) → void {
-    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
+  static method foo9() → (invalid-type) → void {}
+  static method foo9Prime() → (core::List<invalid-type>) → void {}
+  static method foo10(() → invalid-type Function) → void {}
+  static method foo10Prime(() → core::List<invalid-type> Function) → void {}
+  static method foo11((dynamic) → void Function) → void {}
+  static method foo12((invalid-type) → void b) → void {}
+  static method foo12Prime((core::List<invalid-type>) → void b) → void {}
+  static method foo13((invalid-type) → void Function) → void {}
+  static method foo13Prime((core::List<invalid-type>) → void Function) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.outline.expect
index 64cbbb3..94b0c97 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.outline.expect
@@ -1,139 +1,129 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:6:10: Error: Type variables can't be used in static members.
-//   static U foo1() { return null; }
+//   static U foo1() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:7:15: Error: Type variables can't be used in static members.
-//   static List<U> foo1Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:10:15: Error: Type variables can't be used in static members.
+//   static List<U> foo1Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:8:20: Error: Type variables can't be used in static members.
-//   static void foo2(U x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:14:20: Error: Type variables can't be used in static members.
+//   static void foo2(U x) {}
 //                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:9:30: Error: Type variables can't be used in static members.
-//   static void foo2Prime(List<U> x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:15:30: Error: Type variables can't be used in static members.
+//   static void foo2Prime(List<U> x) {}
 //                              ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:20:10: Error: Type variables can't be used in static members.
-//   static U Function() foo8() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:27:10: Error: Type variables can't be used in static members.
+//   static U Function() foo8() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:21:15: Error: Type variables can't be used in static members.
-//   static List<U> Function() foo8Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:31:15: Error: Type variables can't be used in static members.
+//   static List<U> Function() foo8Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:22:24: Error: Type variables can't be used in static members.
-//   static void Function(U) foo9() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:35:24: Error: Type variables can't be used in static members.
+//   static void Function(U) foo9() {}
 //                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:29: Error: Type variables can't be used in static members.
-//   static void Function(List<U>) foo9Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:29: Error: Type variables can't be used in static members.
+//   static void Function(List<U>) foo9Prime() {}
 //                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:21: Error: Type variables can't be used in static members.
-//   static void foo10(U Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:21: Error: Type variables can't be used in static members.
+//   static void foo10(U Function()) {}
 //                     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:25:31: Error: Type variables can't be used in static members.
-//   static void foo10Prime(List<U> Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:39:31: Error: Type variables can't be used in static members.
+//   static void foo10Prime(List<U> Function()) {}
 //                               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:28:35: Error: Type variables can't be used in static members.
-//   static void foo12(void Function(U) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:44:35: Error: Type variables can't be used in static members.
+//   static void foo12(void Function(U) b) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:29:45: Error: Type variables can't be used in static members.
-//   static void foo12Prime(void Function(List<U>) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:46:45: Error: Type variables can't be used in static members.
+//   static void foo12Prime(void Function(List<U>) b) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:31:35: Error: Type variables can't be used in static members.
-//   static void foo13(void Function(U b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:49:35: Error: Type variables can't be used in static members.
+//   static void foo13(void Function(U b)) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:33:45: Error: Type variables can't be used in static members.
-//   static void foo13Prime(void Function(List<U> b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:52:45: Error: Type variables can't be used in static members.
+//   static void foo13Prime(void Function(List<U> b)) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:34:10: Error: Type variables can't be used in static members.
-//   static U foo14 = null;
-//          ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:35:15: Error: Type variables can't be used in static members.
-//   static List<U> foo14Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:54:15: Error: Type variables can't be used in static members.
+//   static late U foo14;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:10: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//          ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:55:20: Error: Type variables can't be used in static members.
+//   static late List<U> foo14Prime;
+//                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:21: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//                     ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:15: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:56:15: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:32: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
-//                                ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:56:26: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
+//                          ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:57:20: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                    ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:57:37: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                                     ^
 //
 import self as self;
 import "dart:core" as core;
 
-class Foo<U extends core::Object* = dynamic> extends core::Object {
-  static field invalid-type foo14;
-  static field core::List<invalid-type>* foo14Prime;
-  static field (invalid-type) →* invalid-type foo15;
-  static field (core::List<invalid-type>*) →* core::List<invalid-type>* foo15Prime;
-  synthetic constructor •() → self::Foo<self::Foo::U*>*
+class Foo<U extends core::Object? = dynamic> extends core::Object {
+  late static field invalid-type foo14;
+  late static field core::List<invalid-type> foo14Prime;
+  late static field (invalid-type) → invalid-type foo15;
+  late static field (core::List<invalid-type>) → core::List<invalid-type> foo15Prime;
+  synthetic constructor •() → self::Foo<self::Foo::U%>
     ;
   static method foo1() → invalid-type
     ;
-  static method foo1Prime() → core::List<invalid-type>*
+  static method foo1Prime() → core::List<invalid-type>
     ;
   static method foo2(invalid-type x) → void
     ;
-  static method foo2Prime(core::List<invalid-type>* x) → void
+  static method foo2Prime(core::List<invalid-type> x) → void
     ;
   static method foo3() → void
     ;
-  static method foo8() → () →* invalid-type
+  static method foo8() → () → invalid-type
     ;
-  static method foo8Prime() → () →* core::List<invalid-type>*
+  static method foo8Prime() → () → core::List<invalid-type>
     ;
-  static method foo9() → (invalid-type) →* void
+  static method foo9() → (invalid-type) → void
     ;
-  static method foo9Prime() → (core::List<invalid-type>*) →* void
+  static method foo9Prime() → (core::List<invalid-type>) → void
     ;
-  static method foo10(() →* invalid-type Function) → void
+  static method foo10(() → invalid-type Function) → void
     ;
-  static method foo10Prime(() →* core::List<invalid-type>* Function) → void
+  static method foo10Prime(() → core::List<invalid-type> Function) → void
     ;
-  static method foo11((dynamic) →* void Function) → void
+  static method foo11((dynamic) → void Function) → void
     ;
-  static method foo12((invalid-type) →* void b) → void
+  static method foo12((invalid-type) → void b) → void
     ;
-  static method foo12Prime((core::List<invalid-type>*) →* void b) → void
+  static method foo12Prime((core::List<invalid-type>) → void b) → void
     ;
-  static method foo13((invalid-type) →* void Function) → void
+  static method foo13((invalid-type) → void Function) → void
     ;
-  static method foo13Prime((core::List<invalid-type>*) →* void Function) → void
+  static method foo13Prime((core::List<invalid-type>) → void Function) → 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() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.transformed.expect
index cb0d959..8f2941a 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart.weak.transformed.expect
@@ -1,206 +1,174 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:6:10: Error: Type variables can't be used in static members.
-//   static U foo1() { return null; }
+//   static U foo1() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:7:15: Error: Type variables can't be used in static members.
-//   static List<U> foo1Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:10:15: Error: Type variables can't be used in static members.
+//   static List<U> foo1Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:8:20: Error: Type variables can't be used in static members.
-//   static void foo2(U x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:14:20: Error: Type variables can't be used in static members.
+//   static void foo2(U x) {}
 //                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:9:30: Error: Type variables can't be used in static members.
-//   static void foo2Prime(List<U> x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:15:30: Error: Type variables can't be used in static members.
+//   static void foo2Prime(List<U> x) {}
 //                              ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:20:10: Error: Type variables can't be used in static members.
-//   static U Function() foo8() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:27:10: Error: Type variables can't be used in static members.
+//   static U Function() foo8() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:21:15: Error: Type variables can't be used in static members.
-//   static List<U> Function() foo8Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:31:15: Error: Type variables can't be used in static members.
+//   static List<U> Function() foo8Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:22:24: Error: Type variables can't be used in static members.
-//   static void Function(U) foo9() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:35:24: Error: Type variables can't be used in static members.
+//   static void Function(U) foo9() {}
 //                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:29: Error: Type variables can't be used in static members.
-//   static void Function(List<U>) foo9Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:29: Error: Type variables can't be used in static members.
+//   static void Function(List<U>) foo9Prime() {}
 //                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:21: Error: Type variables can't be used in static members.
-//   static void foo10(U Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:21: Error: Type variables can't be used in static members.
+//   static void foo10(U Function()) {}
 //                     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:25:31: Error: Type variables can't be used in static members.
-//   static void foo10Prime(List<U> Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:39:31: Error: Type variables can't be used in static members.
+//   static void foo10Prime(List<U> Function()) {}
 //                               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:28:35: Error: Type variables can't be used in static members.
-//   static void foo12(void Function(U) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:44:35: Error: Type variables can't be used in static members.
+//   static void foo12(void Function(U) b) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:29:45: Error: Type variables can't be used in static members.
-//   static void foo12Prime(void Function(List<U>) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:46:45: Error: Type variables can't be used in static members.
+//   static void foo12Prime(void Function(List<U>) b) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:31:35: Error: Type variables can't be used in static members.
-//   static void foo13(void Function(U b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:49:35: Error: Type variables can't be used in static members.
+//   static void foo13(void Function(U b)) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:33:45: Error: Type variables can't be used in static members.
-//   static void foo13Prime(void Function(List<U> b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:52:45: Error: Type variables can't be used in static members.
+//   static void foo13Prime(void Function(List<U> b)) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:34:10: Error: Type variables can't be used in static members.
-//   static U foo14 = null;
-//          ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:35:15: Error: Type variables can't be used in static members.
-//   static List<U> foo14Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:54:15: Error: Type variables can't be used in static members.
+//   static late U foo14;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:10: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//          ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:55:20: Error: Type variables can't be used in static members.
+//   static late List<U> foo14Prime;
+//                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:36:21: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//                     ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:15: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:56:15: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:37:32: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
-//                                ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:56:26: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
+//                          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:11:5: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:57:20: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                    ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:57:37: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                                     ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:17:5: Error: Type variables can't be used in static members.
 //     U foo4;
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:12:10: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:18:10: Error: Type variables can't be used in static members.
 //     List<U> foo4Prime;
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:13:15: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:19:15: Error: Type variables can't be used in static members.
 //     void foo5(U y) => print(y);
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:14:25: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:20:25: Error: Type variables can't be used in static members.
 //     void foo5Prime(List<U> y) => print(y);
 //                         ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:15:5: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:21:5: Error: Type variables can't be used in static members.
 //     U foo6() => null;
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:16:10: Error: Type variables can't be used in static members.
-//     List<U> foo6Prime() => null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:22:10: Error: Type variables can't be used in static members.
+//     List<U> foo6Prime() => throw '';
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:17:20: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                    ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:19: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:17:33: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:23:32: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                                ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:18:25: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                         ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:24: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:18:49: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_class.dart:24:48: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                                                ^
 //
 import self as self;
 import "dart:core" as core;
 
-class Foo<U extends core::Object* = dynamic> extends core::Object {
-  static field invalid-type foo14 = null;
-  static field core::List<invalid-type>* foo14Prime = null;
-  static field (invalid-type) →* invalid-type foo15 = null;
-  static field (core::List<invalid-type>*) →* core::List<invalid-type>* foo15Prime = null;
-  synthetic constructor •() → self::Foo<self::Foo::U*>*
+class Foo<U extends core::Object? = dynamic> extends core::Object {
+  late static field invalid-type foo14;
+  late static field core::List<invalid-type> foo14Prime;
+  late static field (invalid-type) → invalid-type foo15;
+  late static field (core::List<invalid-type>) → core::List<invalid-type> foo15Prime;
+  synthetic constructor •() → self::Foo<self::Foo::U%>
     : super core::Object::•()
     ;
   static method foo1() → invalid-type {
     return null;
   }
-  static method foo1Prime() → core::List<invalid-type>* {
-    return null;
+  static method foo1Prime() → core::List<invalid-type> {
+    throw "";
   }
-  static method foo2(invalid-type x) → void {
-    return null;
-  }
-  static method foo2Prime(core::List<invalid-type>* x) → void {
-    return null;
-  }
+  static method foo2(invalid-type x) → void {}
+  static method foo2Prime(core::List<invalid-type> x) → void {}
   static method foo3() → void {
     invalid-type foo4;
-    core::List<invalid-type>* foo4Prime;
+    core::List<invalid-type> foo4Prime;
     function foo5(invalid-type y) → void
       return core::print(y);
-    function foo5Prime(core::List<invalid-type>* y) → void
+    function foo5Prime(core::List<invalid-type> y) → void
       return core::print(y);
     function foo6() → invalid-type
       return null;
-    function foo6Prime() → core::List<invalid-type>*
-      return null;
-    (invalid-type) →* void foo7 = (invalid-type y) → invalid-type => y;
-    (core::List<invalid-type>*) →* void foo7Prime = (core::List<invalid-type>* y) → core::List<invalid-type>* => y;
+    function foo6Prime() → core::List<invalid-type>
+      return throw "";
+    (invalid-type) → void foo7 = (invalid-type y) → void => y;
+    (core::List<invalid-type>) → void foo7Prime = (core::List<invalid-type> y) → void => y;
   }
-  static method foo8() → () →* invalid-type {
-    return null;
+  static method foo8() → () → invalid-type {
+    throw "";
   }
-  static method foo8Prime() → () →* core::List<invalid-type>* {
-    return null;
+  static method foo8Prime() → () → core::List<invalid-type> {
+    throw "";
   }
-  static method foo9() → (invalid-type) →* void {
-    return null;
-  }
-  static method foo9Prime() → (core::List<invalid-type>*) →* void {
-    return null;
-  }
-  static method foo10(() →* invalid-type Function) → void {
-    return null;
-  }
-  static method foo10Prime(() →* core::List<invalid-type>* Function) → void {
-    return null;
-  }
-  static method foo11((dynamic) →* void Function) → void {
-    return null;
-  }
-  static method foo12((invalid-type) →* void b) → void {
-    return null;
-  }
-  static method foo12Prime((core::List<invalid-type>*) →* void b) → void {
-    return null;
-  }
-  static method foo13((invalid-type) →* void Function) → void {
-    return null;
-  }
-  static method foo13Prime((core::List<invalid-type>*) →* void Function) → void {
-    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
+  static method foo9() → (invalid-type) → void {}
+  static method foo9Prime() → (core::List<invalid-type>) → void {}
+  static method foo10(() → invalid-type Function) → void {}
+  static method foo10Prime(() → core::List<invalid-type> Function) → void {}
+  static method foo11((dynamic) → void Function) → void {}
+  static method foo12((invalid-type) → void b) → void {}
+  static method foo12Prime((core::List<invalid-type>) → void b) → void {}
+  static method foo13((invalid-type) → void Function) → void {}
+  static method foo13Prime((core::List<invalid-type>) → void Function) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart
index eaa9410..a3710ed 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart
@@ -1,40 +1,64 @@
 // 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
+
 extension Foo<U> on List {
-  static U foo1() { return null; }
-  static List<U> foo1Prime() { return null; }
-  static void foo2(U x) { return null; }
-  static void foo2Prime(List<U> x) { return null; }
+  static U foo1() {
+    throw '';
+  }
+
+  static List<U> foo1Prime() {
+    throw '';
+  }
+
+  static void foo2(U x) {}
+
+  static void foo2Prime(List<U> x) {}
+
   static void foo3() {
     U foo4;
     List<U> foo4Prime;
     void foo5(U y) => print(y);
     void foo5Prime(List<U> y) => print(y);
-    U foo6() => null;
-    List<U> foo6Prime() => null;
-    void Function (U y) foo7 = (U y) => y;
-    void Function (List<U> y) foo7Prime = (List<U> y) => y;
+    U foo6() => throw '';
+    List<U> foo6Prime() => throw '';
+    void Function(U y) foo7 = (U y) => y;
+    void Function(List<U> y) foo7Prime = (List<U> y) => y;
   }
-  static U Function() foo8() { return null; }
-  static List<U> Function() foo8Prime() { return null; }
-  static void Function(U) foo9() { return null; }
-  static void Function(List<U>) foo9Prime() { return null; }
-  static void foo10(U Function()) { return null; }
-  static void foo10Prime(List<U> Function()) { return null; }
+
+  static U Function() foo8() {
+    throw '';
+  }
+
+  static List<U> Function() foo8Prime() {
+    throw '';
+  }
+
+  static void Function(U) foo9() {}
+
+  static void Function(List<U>) foo9Prime() {}
+
+  static void foo10(U Function()) {}
+
+  static void foo10Prime(List<U> Function()) {}
+
   // old syntax: variable named "U" of a function called 'Function'.
-  static void foo11(void Function(U)) { return null; }
-  static void foo12(void Function(U) b) { return null; }
-  static void foo12Prime(void Function(List<U>) b) { return null; }
+  static void foo11(void Function(U)) {}
+
+  static void foo12(void Function(U) b) {}
+
+  static void foo12Prime(void Function(List<U>) b) {}
+
   // old syntax: variable named "b" of type "U" of a function called 'Function'.
-  static void foo13(void Function(U b)) { return null; }
+  static void foo13(void Function(U b)) {}
+
   // old syntax: variable named "b" of type "List<U>" of a function called 'Function'.
-  static void foo13Prime(void Function(List<U> b)) { return null; }
-  static U foo14 = null;
-  static List<U> foo14Prime = null;
-  static U Function(U) foo15 = null;
-  static List<U> Function(List<U>) foo15Prime = null;
+  static void foo13Prime(void Function(List<U> b)) {}
+
+  static late U foo14;
+  static late List<U> foo14Prime;
+  static late U Function(U) foo15;
+  static late List<U> Function(List<U>) foo15Prime;
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline.expect
index 1fd65fd..650cef8 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 extension Foo<U> on List {
   static U foo1() {}
   static List<U> foo1Prime() {}
@@ -16,10 +15,13 @@
   static void foo12Prime(void Function(List<U>) b) {}
   static void foo13(void Function(U b)) {}
   static void foo13Prime(void Function(List<U> b)) {}
-  static U foo14 = null;
-  static List<U> foo14Prime = null;
-  static U Function(U) foo15 = null;
-  static List<U> Function(List<U>) foo15Prime = null;
+  static late U ;
+  foo14;
+  static late List<U> (){}
+  foo14Prime;
+  static late U ;
+  Function(U) foo15;
+  static late List<U> (){}
+  Function(List<U>) foo15Prime;
 }
-
 main() {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline_modelled.expect
index c76c6e7..72cd4cf 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 extension Foo<U> on List {
   static List<U> Function() foo8Prime() {}
   static List<U> Function(List<U>) foo15Prime = null;
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.expect
index d4e95b2..5a2f4c6 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.expect
@@ -1,131 +1,131 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:6:10: Error: Type variables can't be used in static members.
-//   static U foo1() { return null; }
+//   static U foo1() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:7:15: Error: Type variables can't be used in static members.
-//   static List<U> foo1Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:10:15: Error: Type variables can't be used in static members.
+//   static List<U> foo1Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:8:20: Error: Type variables can't be used in static members.
-//   static void foo2(U x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:14:20: Error: Type variables can't be used in static members.
+//   static void foo2(U x) {}
 //                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:9:30: Error: Type variables can't be used in static members.
-//   static void foo2Prime(List<U> x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:16:30: Error: Type variables can't be used in static members.
+//   static void foo2Prime(List<U> x) {}
 //                              ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:20:10: Error: Type variables can't be used in static members.
-//   static U Function() foo8() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:29:10: Error: Type variables can't be used in static members.
+//   static U Function() foo8() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:21:15: Error: Type variables can't be used in static members.
-//   static List<U> Function() foo8Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:33:15: Error: Type variables can't be used in static members.
+//   static List<U> Function() foo8Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:22:24: Error: Type variables can't be used in static members.
-//   static void Function(U) foo9() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:24: Error: Type variables can't be used in static members.
+//   static void Function(U) foo9() {}
 //                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:23:29: Error: Type variables can't be used in static members.
-//   static void Function(List<U>) foo9Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:39:29: Error: Type variables can't be used in static members.
+//   static void Function(List<U>) foo9Prime() {}
 //                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:24:21: Error: Type variables can't be used in static members.
-//   static void foo10(U Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:41:21: Error: Type variables can't be used in static members.
+//   static void foo10(U Function()) {}
 //                     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:31: Error: Type variables can't be used in static members.
-//   static void foo10Prime(List<U> Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:43:31: Error: Type variables can't be used in static members.
+//   static void foo10Prime(List<U> Function()) {}
 //                               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:28:35: Error: Type variables can't be used in static members.
-//   static void foo12(void Function(U) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:48:35: Error: Type variables can't be used in static members.
+//   static void foo12(void Function(U) b) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:29:45: Error: Type variables can't be used in static members.
-//   static void foo12Prime(void Function(List<U>) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:50:45: Error: Type variables can't be used in static members.
+//   static void foo12Prime(void Function(List<U>) b) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:31:35: Error: Type variables can't be used in static members.
-//   static void foo13(void Function(U b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:53:35: Error: Type variables can't be used in static members.
+//   static void foo13(void Function(U b)) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:33:45: Error: Type variables can't be used in static members.
-//   static void foo13Prime(void Function(List<U> b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:56:45: Error: Type variables can't be used in static members.
+//   static void foo13Prime(void Function(List<U> b)) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:34:10: Error: Type variables can't be used in static members.
-//   static U foo14 = null;
-//          ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:35:15: Error: Type variables can't be used in static members.
-//   static List<U> foo14Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:58:15: Error: Type variables can't be used in static members.
+//   static late U foo14;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:36:10: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//          ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:59:20: Error: Type variables can't be used in static members.
+//   static late List<U> foo14Prime;
+//                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:36:21: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//                     ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:15: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:15: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:32: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
-//                                ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:26: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
+//                          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:11:5: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:20: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                    ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:37: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                                     ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:19:5: Error: Type variables can't be used in static members.
 //     U foo4;
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:12:10: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:20:10: Error: Type variables can't be used in static members.
 //     List<U> foo4Prime;
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:13:15: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:21:15: Error: Type variables can't be used in static members.
 //     void foo5(U y) => print(y);
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:14:25: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:22:25: Error: Type variables can't be used in static members.
 //     void foo5Prime(List<U> y) => print(y);
 //                         ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:15:5: Error: Type variables can't be used in static members.
-//     U foo6() => null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:23:5: Error: Type variables can't be used in static members.
+//     U foo6() => throw '';
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:16:10: Error: Type variables can't be used in static members.
-//     List<U> foo6Prime() => null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:24:10: Error: Type variables can't be used in static members.
+//     List<U> foo6Prime() => throw '';
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:17:20: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                    ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:19: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:17:33: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:32: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                                ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:18:25: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                         ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:26:24: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:18:49: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:26:48: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                                                ^
 //
 import self as self;
 import "dart:core" as core;
 
-extension Foo<U extends core::Object* = dynamic> on core::List<dynamic>* {
+extension Foo<U extends core::Object? = dynamic> on core::List<dynamic> {
   static method foo1 = self::Foo|foo1;
   static method foo1Prime = self::Foo|foo1Prime;
   static method foo2 = self::Foo|foo2;
@@ -147,67 +147,45 @@
   static field foo15 = self::Foo|foo15;
   static field foo15Prime = self::Foo|foo15Prime;
 }
-static field invalid-type Foo|foo14 = null;
-static field core::List<invalid-type>* Foo|foo14Prime = null;
-static field (invalid-type) →* invalid-type Foo|foo15 = null;
-static field (core::List<invalid-type>*) →* core::List<invalid-type>* Foo|foo15Prime = null;
+late static field invalid-type Foo|foo14;
+late static field core::List<invalid-type> Foo|foo14Prime;
+late static field (invalid-type) → invalid-type Foo|foo15;
+late static field (core::List<invalid-type>) → core::List<invalid-type> Foo|foo15Prime;
 static method Foo|foo1() → invalid-type {
-  return null;
+  throw "";
 }
-static method Foo|foo1Prime() → core::List<invalid-type>* {
-  return null;
+static method Foo|foo1Prime() → core::List<invalid-type> {
+  throw "";
 }
-static method Foo|foo2(invalid-type x) → void {
-  return null;
-}
-static method Foo|foo2Prime(core::List<invalid-type>* x) → void {
-  return null;
-}
+static method Foo|foo2(invalid-type x) → void {}
+static method Foo|foo2Prime(core::List<invalid-type> x) → void {}
 static method Foo|foo3() → void {
   invalid-type foo4;
-  core::List<invalid-type>* foo4Prime;
+  core::List<invalid-type> foo4Prime;
   function foo5(invalid-type y) → void
     return core::print(y);
-  function foo5Prime(core::List<invalid-type>* y) → void
+  function foo5Prime(core::List<invalid-type> y) → void
     return core::print(y);
   function foo6() → invalid-type
-    return null;
-  function foo6Prime() → core::List<invalid-type>*
-    return null;
-  (invalid-type) →* void foo7 = (invalid-type y) → invalid-type => y;
-  (core::List<invalid-type>*) →* void foo7Prime = (core::List<invalid-type>* y) → core::List<invalid-type>* => y;
+    return throw "";
+  function foo6Prime() → core::List<invalid-type>
+    return throw "";
+  (invalid-type) → void foo7 = (invalid-type y) → void => y;
+  (core::List<invalid-type>) → void foo7Prime = (core::List<invalid-type> y) → void => y;
 }
-static method Foo|foo8() → () →* invalid-type {
-  return null;
+static method Foo|foo8() → () → invalid-type {
+  throw "";
 }
-static method Foo|foo8Prime() → () →* core::List<invalid-type>* {
-  return null;
+static method Foo|foo8Prime() → () → core::List<invalid-type> {
+  throw "";
 }
-static method Foo|foo9() → (invalid-type) →* void {
-  return null;
-}
-static method Foo|foo9Prime() → (core::List<invalid-type>*) →* void {
-  return null;
-}
-static method Foo|foo10(() →* invalid-type Function) → void {
-  return null;
-}
-static method Foo|foo10Prime(() →* core::List<invalid-type>* Function) → void {
-  return null;
-}
-static method Foo|foo11((dynamic) →* void Function) → void {
-  return null;
-}
-static method Foo|foo12((invalid-type) →* void b) → void {
-  return null;
-}
-static method Foo|foo12Prime((core::List<invalid-type>*) →* void b) → void {
-  return null;
-}
-static method Foo|foo13((invalid-type) →* void Function) → void {
-  return null;
-}
-static method Foo|foo13Prime((core::List<invalid-type>*) →* void Function) → void {
-  return null;
-}
+static method Foo|foo9() → (invalid-type) → void {}
+static method Foo|foo9Prime() → (core::List<invalid-type>) → void {}
+static method Foo|foo10(() → invalid-type Function) → void {}
+static method Foo|foo10Prime(() → core::List<invalid-type> Function) → void {}
+static method Foo|foo11((dynamic) → void Function) → void {}
+static method Foo|foo12((invalid-type) → void b) → void {}
+static method Foo|foo12Prime((core::List<invalid-type>) → void b) → void {}
+static method Foo|foo13((invalid-type) → void Function) → void {}
+static method Foo|foo13Prime((core::List<invalid-type>) → void Function) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.modular.expect
index d4e95b2..5a2f4c6 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.modular.expect
@@ -1,131 +1,131 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:6:10: Error: Type variables can't be used in static members.
-//   static U foo1() { return null; }
+//   static U foo1() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:7:15: Error: Type variables can't be used in static members.
-//   static List<U> foo1Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:10:15: Error: Type variables can't be used in static members.
+//   static List<U> foo1Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:8:20: Error: Type variables can't be used in static members.
-//   static void foo2(U x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:14:20: Error: Type variables can't be used in static members.
+//   static void foo2(U x) {}
 //                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:9:30: Error: Type variables can't be used in static members.
-//   static void foo2Prime(List<U> x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:16:30: Error: Type variables can't be used in static members.
+//   static void foo2Prime(List<U> x) {}
 //                              ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:20:10: Error: Type variables can't be used in static members.
-//   static U Function() foo8() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:29:10: Error: Type variables can't be used in static members.
+//   static U Function() foo8() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:21:15: Error: Type variables can't be used in static members.
-//   static List<U> Function() foo8Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:33:15: Error: Type variables can't be used in static members.
+//   static List<U> Function() foo8Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:22:24: Error: Type variables can't be used in static members.
-//   static void Function(U) foo9() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:24: Error: Type variables can't be used in static members.
+//   static void Function(U) foo9() {}
 //                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:23:29: Error: Type variables can't be used in static members.
-//   static void Function(List<U>) foo9Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:39:29: Error: Type variables can't be used in static members.
+//   static void Function(List<U>) foo9Prime() {}
 //                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:24:21: Error: Type variables can't be used in static members.
-//   static void foo10(U Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:41:21: Error: Type variables can't be used in static members.
+//   static void foo10(U Function()) {}
 //                     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:31: Error: Type variables can't be used in static members.
-//   static void foo10Prime(List<U> Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:43:31: Error: Type variables can't be used in static members.
+//   static void foo10Prime(List<U> Function()) {}
 //                               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:28:35: Error: Type variables can't be used in static members.
-//   static void foo12(void Function(U) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:48:35: Error: Type variables can't be used in static members.
+//   static void foo12(void Function(U) b) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:29:45: Error: Type variables can't be used in static members.
-//   static void foo12Prime(void Function(List<U>) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:50:45: Error: Type variables can't be used in static members.
+//   static void foo12Prime(void Function(List<U>) b) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:31:35: Error: Type variables can't be used in static members.
-//   static void foo13(void Function(U b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:53:35: Error: Type variables can't be used in static members.
+//   static void foo13(void Function(U b)) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:33:45: Error: Type variables can't be used in static members.
-//   static void foo13Prime(void Function(List<U> b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:56:45: Error: Type variables can't be used in static members.
+//   static void foo13Prime(void Function(List<U> b)) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:34:10: Error: Type variables can't be used in static members.
-//   static U foo14 = null;
-//          ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:35:15: Error: Type variables can't be used in static members.
-//   static List<U> foo14Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:58:15: Error: Type variables can't be used in static members.
+//   static late U foo14;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:36:10: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//          ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:59:20: Error: Type variables can't be used in static members.
+//   static late List<U> foo14Prime;
+//                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:36:21: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//                     ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:15: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:15: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:32: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
-//                                ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:26: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
+//                          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:11:5: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:20: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                    ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:37: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                                     ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:19:5: Error: Type variables can't be used in static members.
 //     U foo4;
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:12:10: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:20:10: Error: Type variables can't be used in static members.
 //     List<U> foo4Prime;
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:13:15: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:21:15: Error: Type variables can't be used in static members.
 //     void foo5(U y) => print(y);
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:14:25: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:22:25: Error: Type variables can't be used in static members.
 //     void foo5Prime(List<U> y) => print(y);
 //                         ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:15:5: Error: Type variables can't be used in static members.
-//     U foo6() => null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:23:5: Error: Type variables can't be used in static members.
+//     U foo6() => throw '';
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:16:10: Error: Type variables can't be used in static members.
-//     List<U> foo6Prime() => null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:24:10: Error: Type variables can't be used in static members.
+//     List<U> foo6Prime() => throw '';
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:17:20: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                    ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:19: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:17:33: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:32: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                                ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:18:25: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                         ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:26:24: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:18:49: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:26:48: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                                                ^
 //
 import self as self;
 import "dart:core" as core;
 
-extension Foo<U extends core::Object* = dynamic> on core::List<dynamic>* {
+extension Foo<U extends core::Object? = dynamic> on core::List<dynamic> {
   static method foo1 = self::Foo|foo1;
   static method foo1Prime = self::Foo|foo1Prime;
   static method foo2 = self::Foo|foo2;
@@ -147,67 +147,45 @@
   static field foo15 = self::Foo|foo15;
   static field foo15Prime = self::Foo|foo15Prime;
 }
-static field invalid-type Foo|foo14 = null;
-static field core::List<invalid-type>* Foo|foo14Prime = null;
-static field (invalid-type) →* invalid-type Foo|foo15 = null;
-static field (core::List<invalid-type>*) →* core::List<invalid-type>* Foo|foo15Prime = null;
+late static field invalid-type Foo|foo14;
+late static field core::List<invalid-type> Foo|foo14Prime;
+late static field (invalid-type) → invalid-type Foo|foo15;
+late static field (core::List<invalid-type>) → core::List<invalid-type> Foo|foo15Prime;
 static method Foo|foo1() → invalid-type {
-  return null;
+  throw "";
 }
-static method Foo|foo1Prime() → core::List<invalid-type>* {
-  return null;
+static method Foo|foo1Prime() → core::List<invalid-type> {
+  throw "";
 }
-static method Foo|foo2(invalid-type x) → void {
-  return null;
-}
-static method Foo|foo2Prime(core::List<invalid-type>* x) → void {
-  return null;
-}
+static method Foo|foo2(invalid-type x) → void {}
+static method Foo|foo2Prime(core::List<invalid-type> x) → void {}
 static method Foo|foo3() → void {
   invalid-type foo4;
-  core::List<invalid-type>* foo4Prime;
+  core::List<invalid-type> foo4Prime;
   function foo5(invalid-type y) → void
     return core::print(y);
-  function foo5Prime(core::List<invalid-type>* y) → void
+  function foo5Prime(core::List<invalid-type> y) → void
     return core::print(y);
   function foo6() → invalid-type
-    return null;
-  function foo6Prime() → core::List<invalid-type>*
-    return null;
-  (invalid-type) →* void foo7 = (invalid-type y) → invalid-type => y;
-  (core::List<invalid-type>*) →* void foo7Prime = (core::List<invalid-type>* y) → core::List<invalid-type>* => y;
+    return throw "";
+  function foo6Prime() → core::List<invalid-type>
+    return throw "";
+  (invalid-type) → void foo7 = (invalid-type y) → void => y;
+  (core::List<invalid-type>) → void foo7Prime = (core::List<invalid-type> y) → void => y;
 }
-static method Foo|foo8() → () →* invalid-type {
-  return null;
+static method Foo|foo8() → () → invalid-type {
+  throw "";
 }
-static method Foo|foo8Prime() → () →* core::List<invalid-type>* {
-  return null;
+static method Foo|foo8Prime() → () → core::List<invalid-type> {
+  throw "";
 }
-static method Foo|foo9() → (invalid-type) →* void {
-  return null;
-}
-static method Foo|foo9Prime() → (core::List<invalid-type>*) →* void {
-  return null;
-}
-static method Foo|foo10(() →* invalid-type Function) → void {
-  return null;
-}
-static method Foo|foo10Prime(() →* core::List<invalid-type>* Function) → void {
-  return null;
-}
-static method Foo|foo11((dynamic) →* void Function) → void {
-  return null;
-}
-static method Foo|foo12((invalid-type) →* void b) → void {
-  return null;
-}
-static method Foo|foo12Prime((core::List<invalid-type>*) →* void b) → void {
-  return null;
-}
-static method Foo|foo13((invalid-type) →* void Function) → void {
-  return null;
-}
-static method Foo|foo13Prime((core::List<invalid-type>*) →* void Function) → void {
-  return null;
-}
+static method Foo|foo9() → (invalid-type) → void {}
+static method Foo|foo9Prime() → (core::List<invalid-type>) → void {}
+static method Foo|foo10(() → invalid-type Function) → void {}
+static method Foo|foo10Prime(() → core::List<invalid-type> Function) → void {}
+static method Foo|foo11((dynamic) → void Function) → void {}
+static method Foo|foo12((invalid-type) → void b) → void {}
+static method Foo|foo12Prime((core::List<invalid-type>) → void b) → void {}
+static method Foo|foo13((invalid-type) → void Function) → void {}
+static method Foo|foo13Prime((core::List<invalid-type>) → void Function) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.outline.expect
index 03ea969..fad69a5 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.outline.expect
@@ -1,91 +1,91 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:6:10: Error: Type variables can't be used in static members.
-//   static U foo1() { return null; }
+//   static U foo1() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:7:15: Error: Type variables can't be used in static members.
-//   static List<U> foo1Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:10:15: Error: Type variables can't be used in static members.
+//   static List<U> foo1Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:8:20: Error: Type variables can't be used in static members.
-//   static void foo2(U x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:14:20: Error: Type variables can't be used in static members.
+//   static void foo2(U x) {}
 //                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:9:30: Error: Type variables can't be used in static members.
-//   static void foo2Prime(List<U> x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:16:30: Error: Type variables can't be used in static members.
+//   static void foo2Prime(List<U> x) {}
 //                              ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:20:10: Error: Type variables can't be used in static members.
-//   static U Function() foo8() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:29:10: Error: Type variables can't be used in static members.
+//   static U Function() foo8() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:21:15: Error: Type variables can't be used in static members.
-//   static List<U> Function() foo8Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:33:15: Error: Type variables can't be used in static members.
+//   static List<U> Function() foo8Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:22:24: Error: Type variables can't be used in static members.
-//   static void Function(U) foo9() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:24: Error: Type variables can't be used in static members.
+//   static void Function(U) foo9() {}
 //                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:23:29: Error: Type variables can't be used in static members.
-//   static void Function(List<U>) foo9Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:39:29: Error: Type variables can't be used in static members.
+//   static void Function(List<U>) foo9Prime() {}
 //                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:24:21: Error: Type variables can't be used in static members.
-//   static void foo10(U Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:41:21: Error: Type variables can't be used in static members.
+//   static void foo10(U Function()) {}
 //                     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:31: Error: Type variables can't be used in static members.
-//   static void foo10Prime(List<U> Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:43:31: Error: Type variables can't be used in static members.
+//   static void foo10Prime(List<U> Function()) {}
 //                               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:28:35: Error: Type variables can't be used in static members.
-//   static void foo12(void Function(U) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:48:35: Error: Type variables can't be used in static members.
+//   static void foo12(void Function(U) b) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:29:45: Error: Type variables can't be used in static members.
-//   static void foo12Prime(void Function(List<U>) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:50:45: Error: Type variables can't be used in static members.
+//   static void foo12Prime(void Function(List<U>) b) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:31:35: Error: Type variables can't be used in static members.
-//   static void foo13(void Function(U b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:53:35: Error: Type variables can't be used in static members.
+//   static void foo13(void Function(U b)) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:33:45: Error: Type variables can't be used in static members.
-//   static void foo13Prime(void Function(List<U> b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:56:45: Error: Type variables can't be used in static members.
+//   static void foo13Prime(void Function(List<U> b)) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:34:10: Error: Type variables can't be used in static members.
-//   static U foo14 = null;
-//          ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:35:15: Error: Type variables can't be used in static members.
-//   static List<U> foo14Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:58:15: Error: Type variables can't be used in static members.
+//   static late U foo14;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:36:10: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//          ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:59:20: Error: Type variables can't be used in static members.
+//   static late List<U> foo14Prime;
+//                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:36:21: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//                     ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:15: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:15: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:32: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
-//                                ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:26: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
+//                          ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:20: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                    ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:37: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                                     ^
 //
 import self as self;
 import "dart:core" as core;
 
-extension Foo<U extends core::Object* = dynamic> on core::List<dynamic>* {
+extension Foo<U extends core::Object? = dynamic> on core::List<dynamic> {
   static method foo1 = self::Foo|foo1;
   static method foo1Prime = self::Foo|foo1Prime;
   static method foo2 = self::Foo|foo2;
@@ -107,41 +107,41 @@
   static field foo15 = self::Foo|foo15;
   static field foo15Prime = self::Foo|foo15Prime;
 }
-static field invalid-type Foo|foo14;
-static field core::List<invalid-type>* Foo|foo14Prime;
-static field (invalid-type) →* invalid-type Foo|foo15;
-static field (core::List<invalid-type>*) →* core::List<invalid-type>* Foo|foo15Prime;
+late static field invalid-type Foo|foo14;
+late static field core::List<invalid-type> Foo|foo14Prime;
+late static field (invalid-type) → invalid-type Foo|foo15;
+late static field (core::List<invalid-type>) → core::List<invalid-type> Foo|foo15Prime;
 static method Foo|foo1() → invalid-type
   ;
-static method Foo|foo1Prime() → core::List<invalid-type>*
+static method Foo|foo1Prime() → core::List<invalid-type>
   ;
 static method Foo|foo2(invalid-type x) → void
   ;
-static method Foo|foo2Prime(core::List<invalid-type>* x) → void
+static method Foo|foo2Prime(core::List<invalid-type> x) → void
   ;
 static method Foo|foo3() → void
   ;
-static method Foo|foo8() → () →* invalid-type
+static method Foo|foo8() → () → invalid-type
   ;
-static method Foo|foo8Prime() → () →* core::List<invalid-type>*
+static method Foo|foo8Prime() → () → core::List<invalid-type>
   ;
-static method Foo|foo9() → (invalid-type) →* void
+static method Foo|foo9() → (invalid-type) → void
   ;
-static method Foo|foo9Prime() → (core::List<invalid-type>*) →* void
+static method Foo|foo9Prime() → (core::List<invalid-type>) → void
   ;
-static method Foo|foo10(() →* invalid-type Function) → void
+static method Foo|foo10(() → invalid-type Function) → void
   ;
-static method Foo|foo10Prime(() →* core::List<invalid-type>* Function) → void
+static method Foo|foo10Prime(() → core::List<invalid-type> Function) → void
   ;
-static method Foo|foo11((dynamic) →* void Function) → void
+static method Foo|foo11((dynamic) → void Function) → void
   ;
-static method Foo|foo12((invalid-type) →* void b) → void
+static method Foo|foo12((invalid-type) → void b) → void
   ;
-static method Foo|foo12Prime((core::List<invalid-type>*) →* void b) → void
+static method Foo|foo12Prime((core::List<invalid-type>) → void b) → void
   ;
-static method Foo|foo13((invalid-type) →* void Function) → void
+static method Foo|foo13((invalid-type) → void Function) → void
   ;
-static method Foo|foo13Prime((core::List<invalid-type>*) →* void Function) → void
+static method Foo|foo13Prime((core::List<invalid-type>) → void Function) → void
   ;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.transformed.expect
index d4e95b2..5a2f4c6 100644
--- a/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart.weak.transformed.expect
@@ -1,131 +1,131 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:6:10: Error: Type variables can't be used in static members.
-//   static U foo1() { return null; }
+//   static U foo1() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:7:15: Error: Type variables can't be used in static members.
-//   static List<U> foo1Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:10:15: Error: Type variables can't be used in static members.
+//   static List<U> foo1Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:8:20: Error: Type variables can't be used in static members.
-//   static void foo2(U x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:14:20: Error: Type variables can't be used in static members.
+//   static void foo2(U x) {}
 //                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:9:30: Error: Type variables can't be used in static members.
-//   static void foo2Prime(List<U> x) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:16:30: Error: Type variables can't be used in static members.
+//   static void foo2Prime(List<U> x) {}
 //                              ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:20:10: Error: Type variables can't be used in static members.
-//   static U Function() foo8() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:29:10: Error: Type variables can't be used in static members.
+//   static U Function() foo8() {
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:21:15: Error: Type variables can't be used in static members.
-//   static List<U> Function() foo8Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:33:15: Error: Type variables can't be used in static members.
+//   static List<U> Function() foo8Prime() {
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:22:24: Error: Type variables can't be used in static members.
-//   static void Function(U) foo9() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:24: Error: Type variables can't be used in static members.
+//   static void Function(U) foo9() {}
 //                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:23:29: Error: Type variables can't be used in static members.
-//   static void Function(List<U>) foo9Prime() { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:39:29: Error: Type variables can't be used in static members.
+//   static void Function(List<U>) foo9Prime() {}
 //                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:24:21: Error: Type variables can't be used in static members.
-//   static void foo10(U Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:41:21: Error: Type variables can't be used in static members.
+//   static void foo10(U Function()) {}
 //                     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:31: Error: Type variables can't be used in static members.
-//   static void foo10Prime(List<U> Function()) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:43:31: Error: Type variables can't be used in static members.
+//   static void foo10Prime(List<U> Function()) {}
 //                               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:28:35: Error: Type variables can't be used in static members.
-//   static void foo12(void Function(U) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:48:35: Error: Type variables can't be used in static members.
+//   static void foo12(void Function(U) b) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:29:45: Error: Type variables can't be used in static members.
-//   static void foo12Prime(void Function(List<U>) b) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:50:45: Error: Type variables can't be used in static members.
+//   static void foo12Prime(void Function(List<U>) b) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:31:35: Error: Type variables can't be used in static members.
-//   static void foo13(void Function(U b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:53:35: Error: Type variables can't be used in static members.
+//   static void foo13(void Function(U b)) {}
 //                                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:33:45: Error: Type variables can't be used in static members.
-//   static void foo13Prime(void Function(List<U> b)) { return null; }
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:56:45: Error: Type variables can't be used in static members.
+//   static void foo13Prime(void Function(List<U> b)) {}
 //                                             ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:34:10: Error: Type variables can't be used in static members.
-//   static U foo14 = null;
-//          ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:35:15: Error: Type variables can't be used in static members.
-//   static List<U> foo14Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:58:15: Error: Type variables can't be used in static members.
+//   static late U foo14;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:36:10: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//          ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:59:20: Error: Type variables can't be used in static members.
+//   static late List<U> foo14Prime;
+//                    ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:36:21: Error: Type variables can't be used in static members.
-//   static U Function(U) foo15 = null;
-//                     ^
-//
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:15: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:15: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:37:32: Error: Type variables can't be used in static members.
-//   static List<U> Function(List<U>) foo15Prime = null;
-//                                ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:60:26: Error: Type variables can't be used in static members.
+//   static late U Function(U) foo15;
+//                          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:11:5: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:20: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                    ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:61:37: Error: Type variables can't be used in static members.
+//   static late List<U> Function(List<U>) foo15Prime;
+//                                     ^
+//
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:19:5: Error: Type variables can't be used in static members.
 //     U foo4;
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:12:10: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:20:10: Error: Type variables can't be used in static members.
 //     List<U> foo4Prime;
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:13:15: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:21:15: Error: Type variables can't be used in static members.
 //     void foo5(U y) => print(y);
 //               ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:14:25: Error: Type variables can't be used in static members.
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:22:25: Error: Type variables can't be used in static members.
 //     void foo5Prime(List<U> y) => print(y);
 //                         ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:15:5: Error: Type variables can't be used in static members.
-//     U foo6() => null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:23:5: Error: Type variables can't be used in static members.
+//     U foo6() => throw '';
 //     ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:16:10: Error: Type variables can't be used in static members.
-//     List<U> foo6Prime() => null;
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:24:10: Error: Type variables can't be used in static members.
+//     List<U> foo6Prime() => throw '';
 //          ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:17:20: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                    ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:19: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                   ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:17:33: Error: Type variables can't be used in static members.
-//     void Function (U y) foo7 = (U y) => y;
-//                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:25:32: Error: Type variables can't be used in static members.
+//     void Function(U y) foo7 = (U y) => y;
+//                                ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:18:25: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                         ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:26:24: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                        ^
 //
-// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:18:49: Error: Type variables can't be used in static members.
-//     void Function (List<U> y) foo7Prime = (List<U> y) => y;
-//                                                 ^
+// pkg/front_end/testcases/general/type_parameter_usage_in_static_method_in_extension.dart:26:48: Error: Type variables can't be used in static members.
+//     void Function(List<U> y) foo7Prime = (List<U> y) => y;
+//                                                ^
 //
 import self as self;
 import "dart:core" as core;
 
-extension Foo<U extends core::Object* = dynamic> on core::List<dynamic>* {
+extension Foo<U extends core::Object? = dynamic> on core::List<dynamic> {
   static method foo1 = self::Foo|foo1;
   static method foo1Prime = self::Foo|foo1Prime;
   static method foo2 = self::Foo|foo2;
@@ -147,67 +147,45 @@
   static field foo15 = self::Foo|foo15;
   static field foo15Prime = self::Foo|foo15Prime;
 }
-static field invalid-type Foo|foo14 = null;
-static field core::List<invalid-type>* Foo|foo14Prime = null;
-static field (invalid-type) →* invalid-type Foo|foo15 = null;
-static field (core::List<invalid-type>*) →* core::List<invalid-type>* Foo|foo15Prime = null;
+late static field invalid-type Foo|foo14;
+late static field core::List<invalid-type> Foo|foo14Prime;
+late static field (invalid-type) → invalid-type Foo|foo15;
+late static field (core::List<invalid-type>) → core::List<invalid-type> Foo|foo15Prime;
 static method Foo|foo1() → invalid-type {
-  return null;
+  throw "";
 }
-static method Foo|foo1Prime() → core::List<invalid-type>* {
-  return null;
+static method Foo|foo1Prime() → core::List<invalid-type> {
+  throw "";
 }
-static method Foo|foo2(invalid-type x) → void {
-  return null;
-}
-static method Foo|foo2Prime(core::List<invalid-type>* x) → void {
-  return null;
-}
+static method Foo|foo2(invalid-type x) → void {}
+static method Foo|foo2Prime(core::List<invalid-type> x) → void {}
 static method Foo|foo3() → void {
   invalid-type foo4;
-  core::List<invalid-type>* foo4Prime;
+  core::List<invalid-type> foo4Prime;
   function foo5(invalid-type y) → void
     return core::print(y);
-  function foo5Prime(core::List<invalid-type>* y) → void
+  function foo5Prime(core::List<invalid-type> y) → void
     return core::print(y);
   function foo6() → invalid-type
-    return null;
-  function foo6Prime() → core::List<invalid-type>*
-    return null;
-  (invalid-type) →* void foo7 = (invalid-type y) → invalid-type => y;
-  (core::List<invalid-type>*) →* void foo7Prime = (core::List<invalid-type>* y) → core::List<invalid-type>* => y;
+    return throw "";
+  function foo6Prime() → core::List<invalid-type>
+    return throw "";
+  (invalid-type) → void foo7 = (invalid-type y) → void => y;
+  (core::List<invalid-type>) → void foo7Prime = (core::List<invalid-type> y) → void => y;
 }
-static method Foo|foo8() → () →* invalid-type {
-  return null;
+static method Foo|foo8() → () → invalid-type {
+  throw "";
 }
-static method Foo|foo8Prime() → () →* core::List<invalid-type>* {
-  return null;
+static method Foo|foo8Prime() → () → core::List<invalid-type> {
+  throw "";
 }
-static method Foo|foo9() → (invalid-type) →* void {
-  return null;
-}
-static method Foo|foo9Prime() → (core::List<invalid-type>*) →* void {
-  return null;
-}
-static method Foo|foo10(() →* invalid-type Function) → void {
-  return null;
-}
-static method Foo|foo10Prime(() →* core::List<invalid-type>* Function) → void {
-  return null;
-}
-static method Foo|foo11((dynamic) →* void Function) → void {
-  return null;
-}
-static method Foo|foo12((invalid-type) →* void b) → void {
-  return null;
-}
-static method Foo|foo12Prime((core::List<invalid-type>*) →* void b) → void {
-  return null;
-}
-static method Foo|foo13((invalid-type) →* void Function) → void {
-  return null;
-}
-static method Foo|foo13Prime((core::List<invalid-type>*) →* void Function) → void {
-  return null;
-}
+static method Foo|foo9() → (invalid-type) → void {}
+static method Foo|foo9Prime() → (core::List<invalid-type>) → void {}
+static method Foo|foo10(() → invalid-type Function) → void {}
+static method Foo|foo10Prime(() → core::List<invalid-type> Function) → void {}
+static method Foo|foo11((dynamic) → void Function) → void {}
+static method Foo|foo12((invalid-type) → void b) → void {}
+static method Foo|foo12Prime((core::List<invalid-type>) → void b) → void {}
+static method Foo|foo13((invalid-type) → void Function) → void {}
+static method Foo|foo13Prime((core::List<invalid-type>) → void Function) → void {}
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart
index 1dbc620..c056d2b 100644
--- a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart
+++ b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart
@@ -1,4 +1,3 @@
-// @dart=2.9
 dynamic<int> f() {}
 main() {
   f();
diff --git a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.textual_outline.expect
index 769bfb1..e628591 100644
--- a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.textual_outline.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 dynamic<int> f() {}
 main() {}
diff --git a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.textual_outline_modelled.expect
index 769bfb1..e628591 100644
--- a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.textual_outline_modelled.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 dynamic<int> f() {}
 main() {}
diff --git a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.expect b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.expect
index bdb4a9f..45cdf4b 100644
--- a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_parameters_on_dynamic.dart:2:1: Error: Expected 0 type arguments.
+// pkg/front_end/testcases/general/type_parameters_on_dynamic.dart:1:1: Error: Expected 0 type arguments.
 // dynamic<int> f() {}
 // ^
 //
diff --git a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.modular.expect
index bdb4a9f..45cdf4b 100644
--- a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.modular.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_parameters_on_dynamic.dart:2:1: Error: Expected 0 type arguments.
+// pkg/front_end/testcases/general/type_parameters_on_dynamic.dart:1:1: Error: Expected 0 type arguments.
 // dynamic<int> f() {}
 // ^
 //
diff --git a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.outline.expect
index 2d32896..092d23a 100644
--- a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.outline.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_parameters_on_dynamic.dart:2:1: Error: Expected 0 type arguments.
+// pkg/front_end/testcases/general/type_parameters_on_dynamic.dart:1:1: Error: Expected 0 type arguments.
 // dynamic<int> f() {}
 // ^
 //
diff --git a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.transformed.expect
index bdb4a9f..45cdf4b 100644
--- a/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_parameters_on_dynamic.dart.weak.transformed.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_parameters_on_dynamic.dart:2:1: Error: Expected 0 type arguments.
+// pkg/front_end/testcases/general/type_parameters_on_dynamic.dart:1:1: Error: Expected 0 type arguments.
 // dynamic<int> f() {}
 // ^
 //
diff --git a/pkg/front_end/testcases/general/type_parameters_on_void.dart b/pkg/front_end/testcases/general/type_parameters_on_void.dart
index 49f9028..a6f1ff0 100644
--- a/pkg/front_end/testcases/general/type_parameters_on_void.dart
+++ b/pkg/front_end/testcases/general/type_parameters_on_void.dart
@@ -1,5 +1,4 @@
 void<int> f() {}
-// @dart=2.9
 main() {
   f();
 }
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart b/pkg/front_end/testcases/general/type_variable_as_super.dart
index 032fcc4..dbcfaaa 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart
+++ b/pkg/front_end/testcases/general/type_variable_as_super.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 A<T> extends T {}
 
 abstract class B<T> extends T {
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_variable_as_super.dart.textual_outline.expect
index 896bc60..1fb7f08 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_as_super.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class A<T> extends T {}
 
 abstract class B<T> extends T {
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_variable_as_super.dart.textual_outline_modelled.expect
index 896bc60..1fb7f08 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_variable_as_super.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class A<T> extends T {}
 
 abstract class B<T> extends T {
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.expect
index aac4117..598ef86 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -25,50 +25,20 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::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 B<T extends core::Object* = dynamic> extends core::Object {
-  constructor •() → self::B<self::B::T*>*
+abstract class B<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::B<self::B::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 C<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::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
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.modular.expect
index aac4117..598ef86 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -25,50 +25,20 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::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 B<T extends core::Object* = dynamic> extends core::Object {
-  constructor •() → self::B<self::B::T*>*
+abstract class B<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::B<self::B::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 C<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::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
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.outline.expect
index 2d14c5b..66c885f 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,47 +17,17 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → 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
 }
-abstract class B<T extends core::Object* = dynamic> extends core::Object {
-  constructor •() → self::B<self::B::T*>*
+abstract class B<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::B<self::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
 }
-class C<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::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() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.transformed.expect
index aac4117..598ef86 100644
--- a/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_as_super.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -25,50 +25,20 @@
 import self as self;
 import "dart:core" as core;
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::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 B<T extends core::Object* = dynamic> extends core::Object {
-  constructor •() → self::B<self::B::T*>*
+abstract class B<T extends core::Object? = dynamic> extends core::Object {
+  constructor •() → self::B<self::B::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 C<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::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
 }
 static method main() → dynamic {
   throw new core::AbstractClassInstantiationError::•("A");
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart b/pkg/front_end/testcases/general/type_variable_bound_access.dart
index b98b8d5..7eb2d87 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.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 DynamicClass<T extends dynamic, S extends T> {
   T field1;
   T field2;
@@ -31,6 +31,9 @@
   X4 field4;
   X5 field5;
 
+  Class(this.field0, this.field1, this.field2, this.field3, this.field4,
+      this.field5);
+
   method() {
     field0.isEven;
     field1.isEven;
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.textual_outline.expect
index ff1f9ff..35263ba 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class DynamicClass<T extends dynamic, S extends T> {
   T field1;
   T field2;
@@ -22,6 +21,8 @@
   X3 field3;
   X4 field4;
   X5 field5;
+  Class(this.field0, this.field1, this.field2, this.field3, this.field4,
+      this.field5);
   method() {}
 }
 
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.textual_outline_modelled.expect
index 3eb942a..4c4a9d8 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.textual_outline_modelled.expect
@@ -1,6 +1,7 @@
-// @dart = 2.9
 class Class<X5 extends X4, X4 extends X3, X3 extends X2, X2 extends X1,
     X1 extends X0, X0 extends int> {
+  Class(this.field0, this.field1, this.field2, this.field3, this.field4,
+      this.field5);
   X0 field0;
   X1 field1;
   X2 field2;
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.expect
index c281ff0..9190815 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,79 +10,49 @@
 import self as self;
 import "dart:core" as core;
 
-class DynamicClass<T extends dynamic, S extends self::DynamicClass::T* = dynamic> extends core::Object {
-  covariant-by-class field self::DynamicClass::T* field1;
-  covariant-by-class field self::DynamicClass::T* field2;
-  constructor •(self::DynamicClass::T* field1, self::DynamicClass::T* field2) → self::DynamicClass<self::DynamicClass::T*, self::DynamicClass::S*>*
+class DynamicClass<T extends dynamic, S extends self::DynamicClass::T% = dynamic> extends core::Object {
+  covariant-by-class field self::DynamicClass::T% field1;
+  covariant-by-class field self::DynamicClass::T% field2;
+  constructor •(self::DynamicClass::T% field1, self::DynamicClass::T% field2) → self::DynamicClass<self::DynamicClass::T%, self::DynamicClass::S%>
     : self::DynamicClass::field1 = field1, self::DynamicClass::field2 = field2, super core::Object::•()
     ;
   method method() → dynamic
-    return this.{self::DynamicClass::field1}{self::DynamicClass::T*}{dynamic}.*(this.{self::DynamicClass::field2}{self::DynamicClass::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
+    return this.{self::DynamicClass::field1}{self::DynamicClass::T%}{dynamic}.*(this.{self::DynamicClass::field2}{self::DynamicClass::T%});
 }
-class NumClass<T extends core::num*, S extends self::NumClass::T* = core::num*> extends core::Object {
-  covariant-by-class field self::NumClass::T* field1;
-  covariant-by-class field self::NumClass::S* field2;
-  constructor •(self::NumClass::T* field1, self::NumClass::S* field2) → self::NumClass<self::NumClass::T*, self::NumClass::S*>*
+class NumClass<T extends core::num, S extends self::NumClass::T = core::num> extends core::Object {
+  covariant-by-class field self::NumClass::T field1;
+  covariant-by-class field self::NumClass::S field2;
+  constructor •(self::NumClass::T field1, self::NumClass::S field2) → self::NumClass<self::NumClass::T, self::NumClass::S>
     : self::NumClass::field1 = field1, self::NumClass::field2 = field2, super core::Object::•()
     ;
-  method method1() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::*}(this.{self::NumClass::field2}{self::NumClass::S*}){(core::num*) →* core::num*};
-  method method2() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
+  method method1() → core::num
+    return this.{self::NumClass::field1}{self::NumClass::T}.{core::num::*}(this.{self::NumClass::field2}{self::NumClass::S}){(core::num) → core::num};
+  method method2() → core::num
+    return this.{self::NumClass::field1}{self::NumClass::T}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'length'.
   num method2() => field1 + field2.length;
-                                   ^^^^^^" in this.{self::NumClass::field2}{self::NumClass::S*}{<unresolved>}.length as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+                                   ^^^^^^" in this.{self::NumClass::field2}{self::NumClass::S}{<unresolved>}.length as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
 }
-class Class<X5 extends self::Class::X4* = core::int*, X4 extends self::Class::X3* = core::int*, X3 extends self::Class::X2* = core::int*, X2 extends self::Class::X1* = core::int*, X1 extends self::Class::X0* = core::int*, X0 extends core::int*> extends core::Object {
-  covariant-by-class field self::Class::X0* field0 = null;
-  covariant-by-class field self::Class::X1* field1 = null;
-  covariant-by-class field self::Class::X2* field2 = null;
-  covariant-by-class field self::Class::X3* field3 = null;
-  covariant-by-class field self::Class::X4* field4 = null;
-  covariant-by-class field self::Class::X5* field5 = null;
-  synthetic constructor •() → self::Class<self::Class::X5*, self::Class::X4*, self::Class::X3*, self::Class::X2*, self::Class::X1*, self::Class::X0*>*
-    : super core::Object::•()
+class Class<X5 extends self::Class::X4 = core::int, X4 extends self::Class::X3 = core::int, X3 extends self::Class::X2 = core::int, X2 extends self::Class::X1 = core::int, X1 extends self::Class::X0 = core::int, X0 extends core::int> extends core::Object {
+  covariant-by-class field self::Class::X0 field0;
+  covariant-by-class field self::Class::X1 field1;
+  covariant-by-class field self::Class::X2 field2;
+  covariant-by-class field self::Class::X3 field3;
+  covariant-by-class field self::Class::X4 field4;
+  covariant-by-class field self::Class::X5 field5;
+  constructor •(self::Class::X0 field0, self::Class::X1 field1, self::Class::X2 field2, self::Class::X3 field3, self::Class::X4 field4, self::Class::X5 field5) → self::Class<self::Class::X5, self::Class::X4, self::Class::X3, self::Class::X2, self::Class::X1, self::Class::X0>
+    : self::Class::field0 = field0, self::Class::field1 = field1, self::Class::field2 = field2, self::Class::field3 = field3, self::Class::field4 = field4, self::Class::field5 = field5, super core::Object::•()
     ;
   method method() → dynamic {
-    this.{self::Class::field0}{self::Class::X0*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field1}{self::Class::X1*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field2}{self::Class::X2*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field3}{self::Class::X3*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field4}{self::Class::X4*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field5}{self::Class::X5*}.{core::int::isEven}{core::bool*};
+    this.{self::Class::field0}{self::Class::X0}.{core::int::isEven}{core::bool};
+    this.{self::Class::field1}{self::Class::X1}.{core::int::isEven}{core::bool};
+    this.{self::Class::field2}{self::Class::X2}.{core::int::isEven}{core::bool};
+    this.{self::Class::field3}{self::Class::X3}.{core::int::isEven}{core::bool};
+    this.{self::Class::field4}{self::Class::X4}.{core::int::isEven}{core::bool};
+    this.{self::Class::field5}{self::Class::X5}.{core::int::isEven}{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
 }
 static method main() → dynamic {
-  new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}(){() →* dynamic};
-  new self::NumClass::•<core::num*, core::double*>(2, 0.5).{self::NumClass::method1}(){() →* core::num*};
+  new self::DynamicClass::•<core::num, core::int>(0.5, 2).{self::DynamicClass::method}(){() → dynamic};
+  new self::NumClass::•<core::num, core::double>(2, 0.5).{self::NumClass::method1}(){() → core::num};
 }
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.modular.expect
index c281ff0..9190815 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,79 +10,49 @@
 import self as self;
 import "dart:core" as core;
 
-class DynamicClass<T extends dynamic, S extends self::DynamicClass::T* = dynamic> extends core::Object {
-  covariant-by-class field self::DynamicClass::T* field1;
-  covariant-by-class field self::DynamicClass::T* field2;
-  constructor •(self::DynamicClass::T* field1, self::DynamicClass::T* field2) → self::DynamicClass<self::DynamicClass::T*, self::DynamicClass::S*>*
+class DynamicClass<T extends dynamic, S extends self::DynamicClass::T% = dynamic> extends core::Object {
+  covariant-by-class field self::DynamicClass::T% field1;
+  covariant-by-class field self::DynamicClass::T% field2;
+  constructor •(self::DynamicClass::T% field1, self::DynamicClass::T% field2) → self::DynamicClass<self::DynamicClass::T%, self::DynamicClass::S%>
     : self::DynamicClass::field1 = field1, self::DynamicClass::field2 = field2, super core::Object::•()
     ;
   method method() → dynamic
-    return this.{self::DynamicClass::field1}{self::DynamicClass::T*}{dynamic}.*(this.{self::DynamicClass::field2}{self::DynamicClass::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
+    return this.{self::DynamicClass::field1}{self::DynamicClass::T%}{dynamic}.*(this.{self::DynamicClass::field2}{self::DynamicClass::T%});
 }
-class NumClass<T extends core::num*, S extends self::NumClass::T* = core::num*> extends core::Object {
-  covariant-by-class field self::NumClass::T* field1;
-  covariant-by-class field self::NumClass::S* field2;
-  constructor •(self::NumClass::T* field1, self::NumClass::S* field2) → self::NumClass<self::NumClass::T*, self::NumClass::S*>*
+class NumClass<T extends core::num, S extends self::NumClass::T = core::num> extends core::Object {
+  covariant-by-class field self::NumClass::T field1;
+  covariant-by-class field self::NumClass::S field2;
+  constructor •(self::NumClass::T field1, self::NumClass::S field2) → self::NumClass<self::NumClass::T, self::NumClass::S>
     : self::NumClass::field1 = field1, self::NumClass::field2 = field2, super core::Object::•()
     ;
-  method method1() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::*}(this.{self::NumClass::field2}{self::NumClass::S*}){(core::num*) →* core::num*};
-  method method2() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
+  method method1() → core::num
+    return this.{self::NumClass::field1}{self::NumClass::T}.{core::num::*}(this.{self::NumClass::field2}{self::NumClass::S}){(core::num) → core::num};
+  method method2() → core::num
+    return this.{self::NumClass::field1}{self::NumClass::T}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'length'.
   num method2() => field1 + field2.length;
-                                   ^^^^^^" in this.{self::NumClass::field2}{self::NumClass::S*}{<unresolved>}.length as{TypeError,ForDynamic} core::num*){(core::num*) →* core::num*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+                                   ^^^^^^" in this.{self::NumClass::field2}{self::NumClass::S}{<unresolved>}.length as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
 }
-class Class<X5 extends self::Class::X4* = core::int*, X4 extends self::Class::X3* = core::int*, X3 extends self::Class::X2* = core::int*, X2 extends self::Class::X1* = core::int*, X1 extends self::Class::X0* = core::int*, X0 extends core::int*> extends core::Object {
-  covariant-by-class field self::Class::X0* field0 = null;
-  covariant-by-class field self::Class::X1* field1 = null;
-  covariant-by-class field self::Class::X2* field2 = null;
-  covariant-by-class field self::Class::X3* field3 = null;
-  covariant-by-class field self::Class::X4* field4 = null;
-  covariant-by-class field self::Class::X5* field5 = null;
-  synthetic constructor •() → self::Class<self::Class::X5*, self::Class::X4*, self::Class::X3*, self::Class::X2*, self::Class::X1*, self::Class::X0*>*
-    : super core::Object::•()
+class Class<X5 extends self::Class::X4 = core::int, X4 extends self::Class::X3 = core::int, X3 extends self::Class::X2 = core::int, X2 extends self::Class::X1 = core::int, X1 extends self::Class::X0 = core::int, X0 extends core::int> extends core::Object {
+  covariant-by-class field self::Class::X0 field0;
+  covariant-by-class field self::Class::X1 field1;
+  covariant-by-class field self::Class::X2 field2;
+  covariant-by-class field self::Class::X3 field3;
+  covariant-by-class field self::Class::X4 field4;
+  covariant-by-class field self::Class::X5 field5;
+  constructor •(self::Class::X0 field0, self::Class::X1 field1, self::Class::X2 field2, self::Class::X3 field3, self::Class::X4 field4, self::Class::X5 field5) → self::Class<self::Class::X5, self::Class::X4, self::Class::X3, self::Class::X2, self::Class::X1, self::Class::X0>
+    : self::Class::field0 = field0, self::Class::field1 = field1, self::Class::field2 = field2, self::Class::field3 = field3, self::Class::field4 = field4, self::Class::field5 = field5, super core::Object::•()
     ;
   method method() → dynamic {
-    this.{self::Class::field0}{self::Class::X0*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field1}{self::Class::X1*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field2}{self::Class::X2*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field3}{self::Class::X3*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field4}{self::Class::X4*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field5}{self::Class::X5*}.{core::int::isEven}{core::bool*};
+    this.{self::Class::field0}{self::Class::X0}.{core::int::isEven}{core::bool};
+    this.{self::Class::field1}{self::Class::X1}.{core::int::isEven}{core::bool};
+    this.{self::Class::field2}{self::Class::X2}.{core::int::isEven}{core::bool};
+    this.{self::Class::field3}{self::Class::X3}.{core::int::isEven}{core::bool};
+    this.{self::Class::field4}{self::Class::X4}.{core::int::isEven}{core::bool};
+    this.{self::Class::field5}{self::Class::X5}.{core::int::isEven}{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
 }
 static method main() → dynamic {
-  new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}(){() →* dynamic};
-  new self::NumClass::•<core::num*, core::double*>(2, 0.5).{self::NumClass::method1}(){() →* core::num*};
+  new self::DynamicClass::•<core::num, core::int>(0.5, 2).{self::DynamicClass::method}(){() → dynamic};
+  new self::NumClass::•<core::num, core::double>(2, 0.5).{self::NumClass::method1}(){() → core::num};
 }
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.outline.expect
index adae324..e2accc2 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.outline.expect
@@ -1,66 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class DynamicClass<T extends dynamic, S extends self::DynamicClass::T* = dynamic> extends core::Object {
-  covariant-by-class field self::DynamicClass::T* field1;
-  covariant-by-class field self::DynamicClass::T* field2;
-  constructor •(self::DynamicClass::T* field1, self::DynamicClass::T* field2) → self::DynamicClass<self::DynamicClass::T*, self::DynamicClass::S*>*
+class DynamicClass<T extends dynamic, S extends self::DynamicClass::T% = dynamic> extends core::Object {
+  covariant-by-class field self::DynamicClass::T% field1;
+  covariant-by-class field self::DynamicClass::T% field2;
+  constructor •(self::DynamicClass::T% field1, self::DynamicClass::T% field2) → self::DynamicClass<self::DynamicClass::T%, self::DynamicClass::S%>
     ;
   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 NumClass<T extends core::num*, S extends self::NumClass::T* = core::num*> extends core::Object {
-  covariant-by-class field self::NumClass::T* field1;
-  covariant-by-class field self::NumClass::S* field2;
-  constructor •(self::NumClass::T* field1, self::NumClass::S* field2) → self::NumClass<self::NumClass::T*, self::NumClass::S*>*
+class NumClass<T extends core::num, S extends self::NumClass::T = core::num> extends core::Object {
+  covariant-by-class field self::NumClass::T field1;
+  covariant-by-class field self::NumClass::S field2;
+  constructor •(self::NumClass::T field1, self::NumClass::S field2) → self::NumClass<self::NumClass::T, self::NumClass::S>
     ;
-  method method1() → core::num*
+  method method1() → core::num
     ;
-  method method2() → core::num*
+  method method2() → core::num
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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<X5 extends self::Class::X4* = core::int*, X4 extends self::Class::X3* = core::int*, X3 extends self::Class::X2* = core::int*, X2 extends self::Class::X1* = core::int*, X1 extends self::Class::X0* = core::int*, X0 extends core::int*> extends core::Object {
-  covariant-by-class field self::Class::X0* field0;
-  covariant-by-class field self::Class::X1* field1;
-  covariant-by-class field self::Class::X2* field2;
-  covariant-by-class field self::Class::X3* field3;
-  covariant-by-class field self::Class::X4* field4;
-  covariant-by-class field self::Class::X5* field5;
-  synthetic constructor •() → self::Class<self::Class::X5*, self::Class::X4*, self::Class::X3*, self::Class::X2*, self::Class::X1*, self::Class::X0*>*
+class Class<X5 extends self::Class::X4 = core::int, X4 extends self::Class::X3 = core::int, X3 extends self::Class::X2 = core::int, X2 extends self::Class::X1 = core::int, X1 extends self::Class::X0 = core::int, X0 extends core::int> extends core::Object {
+  covariant-by-class field self::Class::X0 field0;
+  covariant-by-class field self::Class::X1 field1;
+  covariant-by-class field self::Class::X2 field2;
+  covariant-by-class field self::Class::X3 field3;
+  covariant-by-class field self::Class::X4 field4;
+  covariant-by-class field self::Class::X5 field5;
+  constructor •(self::Class::X0 field0, self::Class::X1 field1, self::Class::X2 field2, self::Class::X3 field3, self::Class::X4 field4, self::Class::X5 field5) → self::Class<self::Class::X5, self::Class::X4, self::Class::X3, self::Class::X2, self::Class::X1, self::Class::X0>
     ;
   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
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.transformed.expect
index 05cc13b..2af94e2 100644
--- a/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_bound_access.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,79 +10,49 @@
 import self as self;
 import "dart:core" as core;
 
-class DynamicClass<T extends dynamic, S extends self::DynamicClass::T* = dynamic> extends core::Object {
-  covariant-by-class field self::DynamicClass::T* field1;
-  covariant-by-class field self::DynamicClass::T* field2;
-  constructor •(self::DynamicClass::T* field1, self::DynamicClass::T* field2) → self::DynamicClass<self::DynamicClass::T*, self::DynamicClass::S*>*
+class DynamicClass<T extends dynamic, S extends self::DynamicClass::T% = dynamic> extends core::Object {
+  covariant-by-class field self::DynamicClass::T% field1;
+  covariant-by-class field self::DynamicClass::T% field2;
+  constructor •(self::DynamicClass::T% field1, self::DynamicClass::T% field2) → self::DynamicClass<self::DynamicClass::T%, self::DynamicClass::S%>
     : self::DynamicClass::field1 = field1, self::DynamicClass::field2 = field2, super core::Object::•()
     ;
   method method() → dynamic
-    return this.{self::DynamicClass::field1}{self::DynamicClass::T*}{dynamic}.*(this.{self::DynamicClass::field2}{self::DynamicClass::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
+    return this.{self::DynamicClass::field1}{self::DynamicClass::T%}{dynamic}.*(this.{self::DynamicClass::field2}{self::DynamicClass::T%});
 }
-class NumClass<T extends core::num*, S extends self::NumClass::T* = core::num*> extends core::Object {
-  covariant-by-class field self::NumClass::T* field1;
-  covariant-by-class field self::NumClass::S* field2;
-  constructor •(self::NumClass::T* field1, self::NumClass::S* field2) → self::NumClass<self::NumClass::T*, self::NumClass::S*>*
+class NumClass<T extends core::num, S extends self::NumClass::T = core::num> extends core::Object {
+  covariant-by-class field self::NumClass::T field1;
+  covariant-by-class field self::NumClass::S field2;
+  constructor •(self::NumClass::T field1, self::NumClass::S field2) → self::NumClass<self::NumClass::T, self::NumClass::S>
     : self::NumClass::field1 = field1, self::NumClass::field2 = field2, super core::Object::•()
     ;
-  method method1() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::*}(this.{self::NumClass::field2}{self::NumClass::S*}){(core::num*) →* core::num*};
-  method method2() → core::num*
-    return this.{self::NumClass::field1}{self::NumClass::T*}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
+  method method1() → core::num
+    return this.{self::NumClass::field1}{self::NumClass::T}.{core::num::*}(this.{self::NumClass::field2}{self::NumClass::S}){(core::num) → core::num};
+  method method2() → core::num
+    return this.{self::NumClass::field1}{self::NumClass::T}.{core::num::+}(invalid-expression "pkg/front_end/testcases/general/type_variable_bound_access.dart:22:36: Error: The getter 'length' isn't defined for the class 'num'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'length'.
   num method2() => field1 + field2.length;
-                                   ^^^^^^" in this.{self::NumClass::field2}{self::NumClass::S*}{<unresolved>}.length){(core::num*) →* core::num*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+                                   ^^^^^^" in this.{self::NumClass::field2}{self::NumClass::S}{<unresolved>}.length){(core::num) → core::num};
 }
-class Class<X5 extends self::Class::X4* = core::int*, X4 extends self::Class::X3* = core::int*, X3 extends self::Class::X2* = core::int*, X2 extends self::Class::X1* = core::int*, X1 extends self::Class::X0* = core::int*, X0 extends core::int*> extends core::Object {
-  covariant-by-class field self::Class::X0* field0 = null;
-  covariant-by-class field self::Class::X1* field1 = null;
-  covariant-by-class field self::Class::X2* field2 = null;
-  covariant-by-class field self::Class::X3* field3 = null;
-  covariant-by-class field self::Class::X4* field4 = null;
-  covariant-by-class field self::Class::X5* field5 = null;
-  synthetic constructor •() → self::Class<self::Class::X5*, self::Class::X4*, self::Class::X3*, self::Class::X2*, self::Class::X1*, self::Class::X0*>*
-    : super core::Object::•()
+class Class<X5 extends self::Class::X4 = core::int, X4 extends self::Class::X3 = core::int, X3 extends self::Class::X2 = core::int, X2 extends self::Class::X1 = core::int, X1 extends self::Class::X0 = core::int, X0 extends core::int> extends core::Object {
+  covariant-by-class field self::Class::X0 field0;
+  covariant-by-class field self::Class::X1 field1;
+  covariant-by-class field self::Class::X2 field2;
+  covariant-by-class field self::Class::X3 field3;
+  covariant-by-class field self::Class::X4 field4;
+  covariant-by-class field self::Class::X5 field5;
+  constructor •(self::Class::X0 field0, self::Class::X1 field1, self::Class::X2 field2, self::Class::X3 field3, self::Class::X4 field4, self::Class::X5 field5) → self::Class<self::Class::X5, self::Class::X4, self::Class::X3, self::Class::X2, self::Class::X1, self::Class::X0>
+    : self::Class::field0 = field0, self::Class::field1 = field1, self::Class::field2 = field2, self::Class::field3 = field3, self::Class::field4 = field4, self::Class::field5 = field5, super core::Object::•()
     ;
   method method() → dynamic {
-    this.{self::Class::field0}{self::Class::X0*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field1}{self::Class::X1*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field2}{self::Class::X2*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field3}{self::Class::X3*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field4}{self::Class::X4*}.{core::int::isEven}{core::bool*};
-    this.{self::Class::field5}{self::Class::X5*}.{core::int::isEven}{core::bool*};
+    this.{self::Class::field0}{self::Class::X0}.{core::int::isEven}{core::bool};
+    this.{self::Class::field1}{self::Class::X1}.{core::int::isEven}{core::bool};
+    this.{self::Class::field2}{self::Class::X2}.{core::int::isEven}{core::bool};
+    this.{self::Class::field3}{self::Class::X3}.{core::int::isEven}{core::bool};
+    this.{self::Class::field4}{self::Class::X4}.{core::int::isEven}{core::bool};
+    this.{self::Class::field5}{self::Class::X5}.{core::int::isEven}{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
 }
 static method main() → dynamic {
-  new self::DynamicClass::•<core::num*, core::int*>(0.5, 2).{self::DynamicClass::method}(){() →* dynamic};
-  new self::NumClass::•<core::num*, core::double*>(2, 0.5).{self::NumClass::method1}(){() →* core::num*};
+  new self::DynamicClass::•<core::num, core::int>(0.5, 2).{self::DynamicClass::method}(){() → dynamic};
+  new self::NumClass::•<core::num, core::double>(2, 0.5).{self::NumClass::method1}(){() → core::num};
 }
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart b/pkg/front_end/testcases/general/type_variable_prefix.dart
index 9e32d32..3e5d27d5 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart
+++ b/pkg/front_end/testcases/general/type_variable_prefix.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 "dart:core" as T;
 
 class C<T> {
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.textual_outline.expect
index ee21503..17664d53 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import "dart:core" as T;
 
 class C<T> {
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.textual_outline_modelled.expect
index ee21503..17664d53 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import "dart:core" as T;
 
 class C<T> {
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect
index 20eabce..20a0ee4 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_prefix.dart:10:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
+// pkg/front_end/testcases/general/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
 //   ^^^^^^^^
 //
@@ -11,24 +11,14 @@
 
 import "dart:core" as T;
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
   method method() → invalid-type
     return "Hello, World!";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 {
-  core::String* s = new self::C::•<dynamic>().{self::C::method}(){() →* invalid-type};
+  core::String s = new self::C::•<dynamic>().{self::C::method}(){() → invalid-type};
   core::print(s);
 }
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.modular.expect
index 20eabce..20a0ee4 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.modular.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_prefix.dart:10:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
+// pkg/front_end/testcases/general/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
 //   ^^^^^^^^
 //
@@ -11,24 +11,14 @@
 
 import "dart:core" as T;
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
   method method() → invalid-type
     return "Hello, World!";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 {
-  core::String* s = new self::C::•<dynamic>().{self::C::method}(){() →* invalid-type};
+  core::String s = new self::C::•<dynamic>().{self::C::method}(){() → invalid-type};
   core::print(s);
 }
diff --git a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.outline.expect
index 17c7da5..6fbcab0 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.outline.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_prefix.dart:10:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
+// pkg/front_end/testcases/general/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
 //   ^^^^^^^^
 //
@@ -11,21 +11,11 @@
 
 import "dart:core" as T;
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T%>
     ;
   method method() → invalid-type
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/type_variable_prefix.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect
index 20eabce..20a0ee4 100644
--- a/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_prefix.dart.weak.transformed.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/type_variable_prefix.dart:10:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
+// pkg/front_end/testcases/general/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
 //   ^^^^^^^^
 //
@@ -11,24 +11,14 @@
 
 import "dart:core" as T;
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
   method method() → invalid-type
     return "Hello, World!";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 {
-  core::String* s = new self::C::•<dynamic>().{self::C::method}(){() →* invalid-type};
+  core::String s = new self::C::•<dynamic>().{self::C::method}(){() → invalid-type};
   core::print(s);
 }
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart b/pkg/front_end/testcases/general/type_variable_uses.dart
index 2c70dea..2bdaa6d 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart
+++ b/pkg/front_end/testcases/general/type_variable_uses.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
+
 class C<T> {
   const C();
   static C<T> staticMethod() {
@@ -14,6 +14,7 @@
     const <C<T>>[];
     const <Object>[T];
     const <Object>[const C<T>()];
+    throw '';
   }
 
   C<T> instanceMethod() {
@@ -26,6 +27,7 @@
     const <C<T>>[];
     const <Object>[T];
     const <Object>[const C<T>()];
+    throw '';
   }
 }
 
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.textual_outline.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.textual_outline.expect
index 7c69cd1..4ea252b 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C<T> {
   const C();
   static C<T> staticMethod() {}
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.textual_outline_modelled.expect
index 701ccee..d8414ce 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C<T> {
   C<T> instanceMethod() {}
   const C();
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.expect
index 4fbbbaa..62ddb4f 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -42,65 +42,57 @@
 //     const <Object>[const C<T>()];
 //                            ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:24:13: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:25:13: Error: Type variables can't be used as constants.
 //     const C<T>();
 //             ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:25:12: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:26:12: Error: Type variables can't be used as constants.
 //     const <T>[];
 //            ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:26:14: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:27:14: Error: Type variables can't be used as constants.
 //     const <C<T>>[];
 //              ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:27:20: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:28:20: Error: Type variables can't be used as constants.
 //     const <Object>[T];
 //                    ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:28:28: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:29:28: Error: Type variables can't be used as constants.
 //     const <Object>[const C<T>()];
 //                            ^
 //
 import self as self;
 import "dart:core" as core;
 
-class C<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  static method staticMethod() → self::C<invalid-type>* {
+  static method staticMethod() → self::C<invalid-type> {
     core::print(#C1);
     invalid-type t;
-    self::C<invalid-type>* l;
-    self::C<self::C<invalid-type>*>* ll;
+    self::C<invalid-type> l;
+    self::C<self::C<invalid-type>> ll;
     #C2;
     #C3;
     #C4;
     #C5;
     #C6;
+    throw "";
   }
-  method instanceMethod() → self::C<self::C::T*>* {
-    core::print(self::C::T*);
-    self::C::T* t;
-    self::C<self::C::T*>* l;
-    self::C<self::C<self::C::T*>*>* ll;
+  method instanceMethod() → self::C<self::C::T%> {
+    core::print(self::C::T%);
+    self::C::T% t;
+    self::C<self::C::T%> l;
+    self::C<self::C<self::C::T%>> ll;
     #C2;
     #C3;
     #C4;
     #C5;
     #C6;
+    throw "";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/type_variable_uses.dart.weak.modular.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.modular.expect
index 4fbbbaa..62ddb4f 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -42,65 +42,57 @@
 //     const <Object>[const C<T>()];
 //                            ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:24:13: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:25:13: Error: Type variables can't be used as constants.
 //     const C<T>();
 //             ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:25:12: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:26:12: Error: Type variables can't be used as constants.
 //     const <T>[];
 //            ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:26:14: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:27:14: Error: Type variables can't be used as constants.
 //     const <C<T>>[];
 //              ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:27:20: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:28:20: Error: Type variables can't be used as constants.
 //     const <Object>[T];
 //                    ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:28:28: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:29:28: Error: Type variables can't be used as constants.
 //     const <Object>[const C<T>()];
 //                            ^
 //
 import self as self;
 import "dart:core" as core;
 
-class C<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  static method staticMethod() → self::C<invalid-type>* {
+  static method staticMethod() → self::C<invalid-type> {
     core::print(#C1);
     invalid-type t;
-    self::C<invalid-type>* l;
-    self::C<self::C<invalid-type>*>* ll;
+    self::C<invalid-type> l;
+    self::C<self::C<invalid-type>> ll;
     #C2;
     #C3;
     #C4;
     #C5;
     #C6;
+    throw "";
   }
-  method instanceMethod() → self::C<self::C::T*>* {
-    core::print(self::C::T*);
-    self::C::T* t;
-    self::C<self::C::T*>* l;
-    self::C<self::C<self::C::T*>*>* ll;
+  method instanceMethod() → self::C<self::C::T%> {
+    core::print(self::C::T%);
+    self::C::T% t;
+    self::C<self::C::T%> l;
+    self::C<self::C<self::C::T%>> ll;
     #C2;
     #C3;
     #C4;
     #C5;
     #C6;
+    throw "";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/type_variable_uses.dart.weak.outline.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.outline.expect
index 6825fba..3bab67d 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -9,24 +9,14 @@
 import self as self;
 import "dart:core" as core;
 
-class C<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  static method staticMethod() → self::C<invalid-type>*
+  static method staticMethod() → self::C<invalid-type>
     ;
-  method instanceMethod() → self::C<self::C::T*>*
+  method instanceMethod() → self::C<self::C::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() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.transformed.expect b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.transformed.expect
index 4fbbbaa..62ddb4f 100644
--- a/pkg/front_end/testcases/general/type_variable_uses.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/type_variable_uses.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -42,65 +42,57 @@
 //     const <Object>[const C<T>()];
 //                            ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:24:13: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:25:13: Error: Type variables can't be used as constants.
 //     const C<T>();
 //             ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:25:12: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:26:12: Error: Type variables can't be used as constants.
 //     const <T>[];
 //            ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:26:14: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:27:14: Error: Type variables can't be used as constants.
 //     const <C<T>>[];
 //              ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:27:20: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:28:20: Error: Type variables can't be used as constants.
 //     const <Object>[T];
 //                    ^
 //
-// pkg/front_end/testcases/general/type_variable_uses.dart:28:28: Error: Type variables can't be used as constants.
+// pkg/front_end/testcases/general/type_variable_uses.dart:29:28: Error: Type variables can't be used as constants.
 //     const <Object>[const C<T>()];
 //                            ^
 //
 import self as self;
 import "dart:core" as core;
 
-class C<T extends core::Object* = dynamic> extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/  {
+  const constructor •() → self::C<self::C::T%>
     : super core::Object::•()
     ;
-  static method staticMethod() → self::C<invalid-type>* {
+  static method staticMethod() → self::C<invalid-type> {
     core::print(#C1);
     invalid-type t;
-    self::C<invalid-type>* l;
-    self::C<self::C<invalid-type>*>* ll;
+    self::C<invalid-type> l;
+    self::C<self::C<invalid-type>> ll;
     #C2;
     #C3;
     #C4;
     #C5;
     #C6;
+    throw "";
   }
-  method instanceMethod() → self::C<self::C::T*>* {
-    core::print(self::C::T*);
-    self::C::T* t;
-    self::C<self::C::T*>* l;
-    self::C<self::C<self::C::T*>*>* ll;
+  method instanceMethod() → self::C<self::C::T%> {
+    core::print(self::C::T%);
+    self::C::T% t;
+    self::C<self::C::T%> l;
+    self::C<self::C<self::C::T%>> ll;
     #C2;
     #C3;
     #C4;
     #C5;
     #C6;
+    throw "";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/typedef.dart b/pkg/front_end/testcases/general/typedef.dart
index 6f0832c..44de722 100644
--- a/pkg/front_end/testcases/general/typedef.dart
+++ b/pkg/front_end/testcases/general/typedef.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
+
 typedef _NullaryFunction();
 typedef _UnaryFunction(args);
 typedef _BinaryFunction(args, message);
diff --git a/pkg/front_end/testcases/general/typedef.dart.textual_outline.expect b/pkg/front_end/testcases/general/typedef.dart.textual_outline.expect
index 065fb43..f652ebb 100644
--- a/pkg/front_end/testcases/general/typedef.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/typedef.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 typedef _NullaryFunction();
 typedef _UnaryFunction(args);
 typedef _BinaryFunction(args, message);
diff --git a/pkg/front_end/testcases/general/typedef.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/typedef.dart.textual_outline_modelled.expect
index c349c47..7714b6b 100644
--- a/pkg/front_end/testcases/general/typedef.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/typedef.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 main() {}
 typedef _BinaryFunction(args, message);
 typedef _NullaryFunction();
diff --git a/pkg/front_end/testcases/general/typedef.dart.weak.expect b/pkg/front_end/testcases/general/typedef.dart.weak.expect
index 2b36abf..bca1c7e 100644
--- a/pkg/front_end/testcases/general/typedef.dart.weak.expect
+++ b/pkg/front_end/testcases/general/typedef.dart.weak.expect
@@ -1,14 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef _NullaryFunction = () →* dynamic;
-typedef _UnaryFunction = (dynamic) →* dynamic;
-typedef _BinaryFunction = (dynamic, dynamic) →* dynamic;
+typedef _NullaryFunction = () → dynamic;
+typedef _UnaryFunction = (dynamic) → dynamic;
+typedef _BinaryFunction = (dynamic, dynamic) → dynamic;
 static method main() → dynamic {
-  core::print(#C1 is () →* dynamic);
-  core::print(#C1 is (dynamic) →* dynamic);
-  core::print(#C1 is (dynamic, dynamic) →* dynamic);
+  core::print(#C1 is{ForNonNullableByDefault} () → dynamic);
+  core::print(#C1 is{ForNonNullableByDefault} (dynamic) → dynamic);
+  core::print(#C1 is{ForNonNullableByDefault} (dynamic, dynamic) → dynamic);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/typedef.dart.weak.modular.expect b/pkg/front_end/testcases/general/typedef.dart.weak.modular.expect
index 2b36abf..bca1c7e 100644
--- a/pkg/front_end/testcases/general/typedef.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/typedef.dart.weak.modular.expect
@@ -1,14 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef _NullaryFunction = () →* dynamic;
-typedef _UnaryFunction = (dynamic) →* dynamic;
-typedef _BinaryFunction = (dynamic, dynamic) →* dynamic;
+typedef _NullaryFunction = () → dynamic;
+typedef _UnaryFunction = (dynamic) → dynamic;
+typedef _BinaryFunction = (dynamic, dynamic) → dynamic;
 static method main() → dynamic {
-  core::print(#C1 is () →* dynamic);
-  core::print(#C1 is (dynamic) →* dynamic);
-  core::print(#C1 is (dynamic, dynamic) →* dynamic);
+  core::print(#C1 is{ForNonNullableByDefault} () → dynamic);
+  core::print(#C1 is{ForNonNullableByDefault} (dynamic) → dynamic);
+  core::print(#C1 is{ForNonNullableByDefault} (dynamic, dynamic) → dynamic);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/typedef.dart.weak.outline.expect b/pkg/front_end/testcases/general/typedef.dart.weak.outline.expect
index b50eefb..96cf42b 100644
--- a/pkg/front_end/testcases/general/typedef.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/typedef.dart.weak.outline.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
-typedef _NullaryFunction = () →* dynamic;
-typedef _UnaryFunction = (dynamic) →* dynamic;
-typedef _BinaryFunction = (dynamic, dynamic) →* dynamic;
+typedef _NullaryFunction = () → dynamic;
+typedef _UnaryFunction = (dynamic) → dynamic;
+typedef _BinaryFunction = (dynamic, dynamic) → dynamic;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/typedef.dart.weak.transformed.expect b/pkg/front_end/testcases/general/typedef.dart.weak.transformed.expect
index 9f48e47..8eb05b0 100644
--- a/pkg/front_end/testcases/general/typedef.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/typedef.dart.weak.transformed.expect
@@ -1,14 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef _NullaryFunction = () →* dynamic;
-typedef _UnaryFunction = (dynamic) →* dynamic;
-typedef _BinaryFunction = (dynamic, dynamic) →* dynamic;
+typedef _NullaryFunction = () → dynamic;
+typedef _UnaryFunction = (dynamic) → dynamic;
+typedef _BinaryFunction = (dynamic, dynamic) → dynamic;
 static method main() → dynamic {
-  core::print(#C1 is () →* dynamic);
-  core::print(#C1 is (dynamic) →* dynamic);
-  core::print(#C1 is (dynamic, dynamic) →* dynamic);
+  core::print(#C1 is{ForNonNullableByDefault} () → dynamic);
+  core::print(#C1 is{ForNonNullableByDefault} (dynamic) → dynamic);
+  core::print(#C1 is{ForNonNullableByDefault} (dynamic, dynamic) → dynamic);
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/undefined.dart b/pkg/front_end/testcases/general/undefined.dart
index bbecb3d..6e2fc23 100644
--- a/pkg/front_end/testcases/general/undefined.dart
+++ b/pkg/front_end/testcases/general/undefined.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 C {
   var x;
   void f() {}
diff --git a/pkg/front_end/testcases/general/undefined.dart.textual_outline.expect b/pkg/front_end/testcases/general/undefined.dart.textual_outline.expect
index a50bbc9..7c1f7be 100644
--- a/pkg/front_end/testcases/general/undefined.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {
   var x;
   void f() {}
diff --git a/pkg/front_end/testcases/general/undefined.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/undefined.dart.textual_outline_modelled.expect
index a67bda8..6775e59 100644
--- a/pkg/front_end/testcases/general/undefined.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {
   var x;
   void f() {}
diff --git a/pkg/front_end/testcases/general/undefined.dart.weak.expect b/pkg/front_end/testcases/general/undefined.dart.weak.expect
index 0c68639..85934aa 100644
--- a/pkg/front_end/testcases/general/undefined.dart.weak.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -25,29 +25,19 @@
 
 class C extends core::Object {
   field dynamic x = null;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : 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 test(self::C* c) → void {
+static method test(self::C c) → void {
   c.{self::C::x}{dynamic};
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:12:5: Error: The getter 'y' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
   c.y;
     ^" in c{<unresolved>}.y;
-  c.{self::C::f}(){() →* void};
+  c.{self::C::f}(){() → void};
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:14:5: Error: The method 'g' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'g'.
diff --git a/pkg/front_end/testcases/general/undefined.dart.weak.modular.expect b/pkg/front_end/testcases/general/undefined.dart.weak.modular.expect
index 0c68639..85934aa 100644
--- a/pkg/front_end/testcases/general/undefined.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -25,29 +25,19 @@
 
 class C extends core::Object {
   field dynamic x = null;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : 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 test(self::C* c) → void {
+static method test(self::C c) → void {
   c.{self::C::x}{dynamic};
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:12:5: Error: The getter 'y' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
   c.y;
     ^" in c{<unresolved>}.y;
-  c.{self::C::f}(){() →* void};
+  c.{self::C::f}(){() → void};
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:14:5: Error: The method 'g' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'g'.
diff --git a/pkg/front_end/testcases/general/undefined.dart.weak.outline.expect b/pkg/front_end/testcases/general/undefined.dart.weak.outline.expect
index 83a27aa..4bf3b58 100644
--- a/pkg/front_end/testcases/general/undefined.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.weak.outline.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class C extends core::Object {
   field dynamic x;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
   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 test(self::C* c) → void
+static method test(self::C c) → void
   ;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/undefined.dart.weak.transformed.expect b/pkg/front_end/testcases/general/undefined.dart.weak.transformed.expect
index 0c68639..85934aa 100644
--- a/pkg/front_end/testcases/general/undefined.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/undefined.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -25,29 +25,19 @@
 
 class C extends core::Object {
   field dynamic x = null;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : 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 test(self::C* c) → void {
+static method test(self::C c) → void {
   c.{self::C::x}{dynamic};
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:12:5: Error: The getter 'y' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
   c.y;
     ^" in c{<unresolved>}.y;
-  c.{self::C::f}(){() →* void};
+  c.{self::C::f}(){() → void};
   invalid-expression "pkg/front_end/testcases/general/undefined.dart:14:5: Error: The method 'g' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined.dart'.
 Try correcting the name to the name of an existing method, or defining a method named 'g'.
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart
index 5f79f34..c6b5b4d 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.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 C {
   void set x(value) {}
 }
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.textual_outline.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.textual_outline.expect
index f484bf2..627bd18 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {
   void set x(value) {}
 }
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.textual_outline_modelled.expect
index 88ced95..b1044c0 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {
   void set x(value) {}
 }
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.expect
index fdcdf1e..c17f0b6 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -18,29 +18,19 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
   set x(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
 }
-static method test(self::C* c) → void {
+static method test(self::C c) → void {
   c.{self::C::x} = 1;
-  let final self::C* #t1 = c in #t1.{self::C::x} = invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:11:5: Error: The getter 'x' isn't defined for the class 'C'.
+  let final self::C #t1 = c in #t1.{self::C::x} = invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:11:5: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x += 1;
     ^" in #t1{<unresolved>}.x{dynamic}.+(1);
-  let final self::C* #t2 = c in invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:12:5: Error: The getter 'x' isn't defined for the class 'C'.
+  let final self::C #t2 = c in invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:12:5: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x ??= 1;
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.modular.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.modular.expect
index fdcdf1e..c17f0b6 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -18,29 +18,19 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
   set x(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
 }
-static method test(self::C* c) → void {
+static method test(self::C c) → void {
   c.{self::C::x} = 1;
-  let final self::C* #t1 = c in #t1.{self::C::x} = invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:11:5: Error: The getter 'x' isn't defined for the class 'C'.
+  let final self::C #t1 = c in #t1.{self::C::x} = invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:11:5: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x += 1;
     ^" in #t1{<unresolved>}.x{dynamic}.+(1);
-  let final self::C* #t2 = c in invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:12:5: Error: The getter 'x' isn't defined for the class 'C'.
+  let final self::C #t2 = c in invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:12:5: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x ??= 1;
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.outline.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.outline.expect
index 93a68f8..5fe30f0 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.outline.expect
@@ -1,24 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
   set x(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
 }
-static method test(self::C* c) → void
+static method test(self::C c) → void
   ;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.transformed.expect b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.transformed.expect
index fdcdf1e..c17f0b6 100644
--- a/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -18,29 +18,19 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
   set x(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
 }
-static method test(self::C* c) → void {
+static method test(self::C c) → void {
   c.{self::C::x} = 1;
-  let final self::C* #t1 = c in #t1.{self::C::x} = invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:11:5: Error: The getter 'x' isn't defined for the class 'C'.
+  let final self::C #t1 = c in #t1.{self::C::x} = invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:11:5: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x += 1;
     ^" in #t1{<unresolved>}.x{dynamic}.+(1);
-  let final self::C* #t2 = c in invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:12:5: Error: The getter 'x' isn't defined for the class 'C'.
+  let final self::C #t2 = c in invalid-expression "pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart:12:5: Error: The getter 'x' isn't defined for the class 'C'.
  - 'C' is from 'pkg/front_end/testcases/general/undefined_getter_in_compound_assignment.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c.x ??= 1;
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart b/pkg/front_end/testcases/general/uninitialized_fields.dart
index 01f5986..126f6a3 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart
@@ -2,30 +2,28 @@
 // for details. 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 Uninitialized {
-  int x;
+  int? x;
 }
 
 class PartiallyInitialized {
-  int x;
+  int? x;
   PartiallyInitialized(this.x);
   PartiallyInitialized.noInitializer();
 }
 
 class Initialized {
-  int x;
+  int? x;
   Initialized(this.x);
 }
 
 class Forwarding {
-  int x;
+  int? x;
   Forwarding.initialize(this.x);
-  Forwarding(int arg) : this.initialize(arg);
+  Forwarding(int? arg) : this.initialize(arg);
 }
 
-int uninitializedTopLevel;
-int initializedTopLevel = 4;
+int? uninitializedTopLevel;
+int? initializedTopLevel = 4;
 
 main() {}
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart.textual_outline.expect b/pkg/front_end/testcases/general/uninitialized_fields.dart.textual_outline.expect
index cab3882..7cdf9cb 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart.textual_outline.expect
@@ -1,25 +1,24 @@
-// @dart = 2.9
 class Uninitialized {
-  int x;
+  int? x;
 }
 
 class PartiallyInitialized {
-  int x;
+  int? x;
   PartiallyInitialized(this.x);
   PartiallyInitialized.noInitializer();
 }
 
 class Initialized {
-  int x;
+  int? x;
   Initialized(this.x);
 }
 
 class Forwarding {
-  int x;
+  int? x;
   Forwarding.initialize(this.x);
-  Forwarding(int arg) : this.initialize(arg);
+  Forwarding(int? arg) : this.initialize(arg);
 }
 
-int uninitializedTopLevel;
-int initializedTopLevel = 4;
+int? uninitializedTopLevel;
+int? initializedTopLevel = 4;
 main() {}
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/uninitialized_fields.dart.textual_outline_modelled.expect
index 5d156f2..b147ef4 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart.textual_outline_modelled.expect
@@ -1,25 +1,24 @@
-// @dart = 2.9
 class Forwarding {
-  Forwarding(int arg) : this.initialize(arg);
+  Forwarding(int? arg) : this.initialize(arg);
   Forwarding.initialize(this.x);
-  int x;
+  int? x;
 }
 
 class Initialized {
   Initialized(this.x);
-  int x;
+  int? x;
 }
 
 class PartiallyInitialized {
   PartiallyInitialized(this.x);
   PartiallyInitialized.noInitializer();
-  int x;
+  int? x;
 }
 
 class Uninitialized {
-  int x;
+  int? x;
 }
 
-int initializedTopLevel = 4;
-int uninitializedTopLevel;
+int? initializedTopLevel = 4;
+int? uninitializedTopLevel;
 main() {}
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.expect b/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.expect
index 66c109b..d8926dc 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.expect
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.expect
@@ -1,77 +1,37 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Uninitialized extends core::Object {
-  field core::int* x = null;
-  synthetic constructor •() → self::Uninitialized*
+  field core::int? x = null;
+  synthetic constructor •() → self::Uninitialized
     : 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 PartiallyInitialized extends core::Object {
-  field core::int* x;
-  constructor •(core::int* x) → self::PartiallyInitialized*
+  field core::int? x;
+  constructor •(core::int? x) → self::PartiallyInitialized
     : self::PartiallyInitialized::x = x, super core::Object::•()
     ;
-  constructor noInitializer() → self::PartiallyInitialized*
+  constructor noInitializer() → self::PartiallyInitialized
     : self::PartiallyInitialized::x = null, 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 Initialized extends core::Object {
-  field core::int* x;
-  constructor •(core::int* x) → self::Initialized*
+  field core::int? x;
+  constructor •(core::int? x) → self::Initialized
     : self::Initialized::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 Forwarding extends core::Object {
-  field core::int* x;
-  constructor initialize(core::int* x) → self::Forwarding*
+  field core::int? x;
+  constructor initialize(core::int? x) → self::Forwarding
     : self::Forwarding::x = x, super core::Object::•()
     ;
-  constructor •(core::int* arg) → self::Forwarding*
+  constructor •(core::int? arg) → self::Forwarding
     : this self::Forwarding::initialize(arg)
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 field core::int* uninitializedTopLevel;
-static field core::int* initializedTopLevel = 4;
+static field core::int? uninitializedTopLevel;
+static field core::int? initializedTopLevel = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.modular.expect b/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.modular.expect
index 66c109b..d8926dc 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.modular.expect
@@ -1,77 +1,37 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Uninitialized extends core::Object {
-  field core::int* x = null;
-  synthetic constructor •() → self::Uninitialized*
+  field core::int? x = null;
+  synthetic constructor •() → self::Uninitialized
     : 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 PartiallyInitialized extends core::Object {
-  field core::int* x;
-  constructor •(core::int* x) → self::PartiallyInitialized*
+  field core::int? x;
+  constructor •(core::int? x) → self::PartiallyInitialized
     : self::PartiallyInitialized::x = x, super core::Object::•()
     ;
-  constructor noInitializer() → self::PartiallyInitialized*
+  constructor noInitializer() → self::PartiallyInitialized
     : self::PartiallyInitialized::x = null, 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 Initialized extends core::Object {
-  field core::int* x;
-  constructor •(core::int* x) → self::Initialized*
+  field core::int? x;
+  constructor •(core::int? x) → self::Initialized
     : self::Initialized::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 Forwarding extends core::Object {
-  field core::int* x;
-  constructor initialize(core::int* x) → self::Forwarding*
+  field core::int? x;
+  constructor initialize(core::int? x) → self::Forwarding
     : self::Forwarding::x = x, super core::Object::•()
     ;
-  constructor •(core::int* arg) → self::Forwarding*
+  constructor •(core::int? arg) → self::Forwarding
     : this self::Forwarding::initialize(arg)
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 field core::int* uninitializedTopLevel;
-static field core::int* initializedTopLevel = 4;
+static field core::int? uninitializedTopLevel;
+static field core::int? initializedTopLevel = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.outline.expect b/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.outline.expect
index 0c30a7d..e34e8bb 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.outline.expect
@@ -1,72 +1,32 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Uninitialized extends core::Object {
-  field core::int* x;
-  synthetic constructor •() → self::Uninitialized*
+  field core::int? x;
+  synthetic constructor •() → self::Uninitialized
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 PartiallyInitialized extends core::Object {
-  field core::int* x;
-  constructor •(core::int* x) → self::PartiallyInitialized*
+  field core::int? x;
+  constructor •(core::int? x) → self::PartiallyInitialized
     ;
-  constructor noInitializer() → self::PartiallyInitialized*
+  constructor noInitializer() → self::PartiallyInitialized
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 Initialized extends core::Object {
-  field core::int* x;
-  constructor •(core::int* x) → self::Initialized*
+  field core::int? x;
+  constructor •(core::int? x) → self::Initialized
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 Forwarding extends core::Object {
-  field core::int* x;
-  constructor initialize(core::int* x) → self::Forwarding*
+  field core::int? x;
+  constructor initialize(core::int? x) → self::Forwarding
     ;
-  constructor •(core::int* arg) → self::Forwarding*
+  constructor •(core::int? arg) → self::Forwarding
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 field core::int* uninitializedTopLevel;
-static field core::int* initializedTopLevel;
+static field core::int? uninitializedTopLevel;
+static field core::int? initializedTopLevel;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.transformed.expect b/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.transformed.expect
index 66c109b..d8926dc 100644
--- a/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/uninitialized_fields.dart.weak.transformed.expect
@@ -1,77 +1,37 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Uninitialized extends core::Object {
-  field core::int* x = null;
-  synthetic constructor •() → self::Uninitialized*
+  field core::int? x = null;
+  synthetic constructor •() → self::Uninitialized
     : 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 PartiallyInitialized extends core::Object {
-  field core::int* x;
-  constructor •(core::int* x) → self::PartiallyInitialized*
+  field core::int? x;
+  constructor •(core::int? x) → self::PartiallyInitialized
     : self::PartiallyInitialized::x = x, super core::Object::•()
     ;
-  constructor noInitializer() → self::PartiallyInitialized*
+  constructor noInitializer() → self::PartiallyInitialized
     : self::PartiallyInitialized::x = null, 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 Initialized extends core::Object {
-  field core::int* x;
-  constructor •(core::int* x) → self::Initialized*
+  field core::int? x;
+  constructor •(core::int? x) → self::Initialized
     : self::Initialized::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 Forwarding extends core::Object {
-  field core::int* x;
-  constructor initialize(core::int* x) → self::Forwarding*
+  field core::int? x;
+  constructor initialize(core::int? x) → self::Forwarding
     : self::Forwarding::x = x, super core::Object::•()
     ;
-  constructor •(core::int* arg) → self::Forwarding*
+  constructor •(core::int? arg) → self::Forwarding
     : this self::Forwarding::initialize(arg)
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 field core::int* uninitializedTopLevel;
-static field core::int* initializedTopLevel = 4;
+static field core::int? uninitializedTopLevel;
+static field core::int? initializedTopLevel = 4;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/unsound_promotion.dart b/pkg/front_end/testcases/general/unsound_promotion.dart
index ac9a1e3..4cdbeab 100644
--- a/pkg/front_end/testcases/general/unsound_promotion.dart
+++ b/pkg/front_end/testcases/general/unsound_promotion.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 A {}
 
 class B {}
diff --git a/pkg/front_end/testcases/general/unsound_promotion.dart.weak.expect b/pkg/front_end/testcases/general/unsound_promotion.dart.weak.expect
index e5a07f2..15dae9c 100644
--- a/pkg/front_end/testcases/general/unsound_promotion.dart.weak.expect
+++ b/pkg/front_end/testcases/general/unsound_promotion.dart.weak.expect
@@ -2,12 +2,12 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/unsound_promotion.dart:21:16: Error: Inferred type argument 'S' doesn't conform to the bound 'A' of the type variable 'T' on 'g'.
+// pkg/front_end/testcases/general/unsound_promotion.dart:23:16: Error: Inferred type argument 'S' doesn't conform to the bound 'A' of the type variable 'T' on 'g'.
 //  - 'A' is from 'pkg/front_end/testcases/general/unsound_promotion.dart'.
 // Try specifying type arguments explicitly so that they conform to the bounds.
 //     var list = g(s);
 //                ^
-// pkg/front_end/testcases/general/unsound_promotion.dart:13:11: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/unsound_promotion.dart:15:11: Context: This is the type variable whose bound isn't conformed to.
 // List<T> g<T extends A>(T t) {
 //           ^
 //
diff --git a/pkg/front_end/testcases/general/unsound_promotion.dart.weak.modular.expect b/pkg/front_end/testcases/general/unsound_promotion.dart.weak.modular.expect
index e5a07f2..15dae9c 100644
--- a/pkg/front_end/testcases/general/unsound_promotion.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/unsound_promotion.dart.weak.modular.expect
@@ -2,12 +2,12 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/unsound_promotion.dart:21:16: Error: Inferred type argument 'S' doesn't conform to the bound 'A' of the type variable 'T' on 'g'.
+// pkg/front_end/testcases/general/unsound_promotion.dart:23:16: Error: Inferred type argument 'S' doesn't conform to the bound 'A' of the type variable 'T' on 'g'.
 //  - 'A' is from 'pkg/front_end/testcases/general/unsound_promotion.dart'.
 // Try specifying type arguments explicitly so that they conform to the bounds.
 //     var list = g(s);
 //                ^
-// pkg/front_end/testcases/general/unsound_promotion.dart:13:11: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/unsound_promotion.dart:15:11: Context: This is the type variable whose bound isn't conformed to.
 // List<T> g<T extends A>(T t) {
 //           ^
 //
diff --git a/pkg/front_end/testcases/general/unused_methods.dart b/pkg/front_end/testcases/general/unused_methods.dart
index a70db6e..5d2c38c 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart
+++ b/pkg/front_end/testcases/general/unused_methods.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 UnusedClass {
   UnusedClass() {
     print('Unused');
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.textual_outline.expect b/pkg/front_end/testcases/general/unused_methods.dart.textual_outline.expect
index 443ea22..d30480d 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class UnusedClass {
   UnusedClass() {}
 }
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/unused_methods.dart.textual_outline_modelled.expect
index 4a09745..fe88e83 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class UsedAsBaseClass {
   void calledFromB() {}
   void calledFromSubclass() {}
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.weak.expect b/pkg/front_end/testcases/general/unused_methods.dart.weak.expect
index 060120a..30afbfa 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.weak.expect
@@ -1,85 +1,45 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class UnusedClass extends core::Object {
-  constructor •() → self::UnusedClass*
+  constructor •() → self::UnusedClass
     : super core::Object::•() {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 UsedAsBaseClass extends core::Object {
-  synthetic constructor •() → self::UsedAsBaseClass*
+  synthetic constructor •() → self::UsedAsBaseClass
     : super core::Object::•()
     ;
   method usedInSubclass() → void {
     core::print("Unused");
   }
   method calledFromB() → void {
-    this.{self::UsedAsBaseClass::calledFromSubclass}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromSubclass}(){() → void};
   }
   method calledFromSubclass() → void {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 UsedAsInterface extends core::Object {
-  synthetic constructor •() → self::UsedAsInterface*
+  synthetic constructor •() → self::UsedAsInterface
     : super core::Object::•()
     ;
   method usedInSubclass() → void {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 InstantiatedButMethodsUnused extends core::Object {
-  synthetic constructor •() → self::InstantiatedButMethodsUnused*
+  synthetic constructor •() → self::InstantiatedButMethodsUnused
     : super core::Object::•()
     ;
   method usedInSubclass() → void {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
-  synthetic constructor •() → self::ClassA*
+  synthetic constructor •() → self::ClassA
     : super self::UsedAsBaseClass::•()
     ;
   method usedInSubclass() → void {
@@ -87,26 +47,26 @@
   }
 }
 class ClassB extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
-  synthetic constructor •() → self::ClassB*
+  synthetic constructor •() → self::ClassB
     : super self::UsedAsBaseClass::•()
     ;
   method usedInSubclass() → void {
     core::print("B");
-    this.{self::UsedAsBaseClass::calledFromB}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromB}(){() → void};
   }
   method calledFromSubclass() → void {}
 }
-static method baseClassCall(self::UsedAsBaseClass* object) → void {
-  object.{self::UsedAsBaseClass::usedInSubclass}(){() →* void};
+static method baseClassCall(self::UsedAsBaseClass object) → void {
+  object.{self::UsedAsBaseClass::usedInSubclass}(){() → void};
 }
-static method interfaceCall(self::UsedAsInterface* object) → void {
-  object.{self::UsedAsInterface::usedInSubclass}(){() →* void};
+static method interfaceCall(self::UsedAsInterface object) → void {
+  object.{self::UsedAsInterface::usedInSubclass}(){() → void};
 }
-static method exactCallA(self::ClassA* object) → void {
-  object.{self::ClassA::usedInSubclass}(){() →* void};
+static method exactCallA(self::ClassA object) → void {
+  object.{self::ClassA::usedInSubclass}(){() → void};
 }
-static method exactCallB(self::ClassB* object) → void {
-  object.{self::ClassB::usedInSubclass}(){() →* void};
+static method exactCallB(self::ClassB object) → void {
+  object.{self::ClassB::usedInSubclass}(){() → void};
 }
 static method unusedTopLevel() → dynamic {
   core::print("Unused");
@@ -114,11 +74,11 @@
 static method usedTopLevel() → dynamic {}
 static method main() → dynamic {
   self::usedTopLevel();
-  self::ClassA* a = new self::ClassA::•();
+  self::ClassA a = new self::ClassA::•();
   self::exactCallA(a);
   self::baseClassCall(a);
   self::interfaceCall(a);
-  self::ClassB* b = new self::ClassB::•();
+  self::ClassB b = new self::ClassB::•();
   self::exactCallB(b);
   self::baseClassCall(b);
   self::interfaceCall(b);
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.weak.modular.expect b/pkg/front_end/testcases/general/unused_methods.dart.weak.modular.expect
index 060120a..30afbfa 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.weak.modular.expect
@@ -1,85 +1,45 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class UnusedClass extends core::Object {
-  constructor •() → self::UnusedClass*
+  constructor •() → self::UnusedClass
     : super core::Object::•() {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 UsedAsBaseClass extends core::Object {
-  synthetic constructor •() → self::UsedAsBaseClass*
+  synthetic constructor •() → self::UsedAsBaseClass
     : super core::Object::•()
     ;
   method usedInSubclass() → void {
     core::print("Unused");
   }
   method calledFromB() → void {
-    this.{self::UsedAsBaseClass::calledFromSubclass}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromSubclass}(){() → void};
   }
   method calledFromSubclass() → void {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 UsedAsInterface extends core::Object {
-  synthetic constructor •() → self::UsedAsInterface*
+  synthetic constructor •() → self::UsedAsInterface
     : super core::Object::•()
     ;
   method usedInSubclass() → void {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 InstantiatedButMethodsUnused extends core::Object {
-  synthetic constructor •() → self::InstantiatedButMethodsUnused*
+  synthetic constructor •() → self::InstantiatedButMethodsUnused
     : super core::Object::•()
     ;
   method usedInSubclass() → void {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
-  synthetic constructor •() → self::ClassA*
+  synthetic constructor •() → self::ClassA
     : super self::UsedAsBaseClass::•()
     ;
   method usedInSubclass() → void {
@@ -87,26 +47,26 @@
   }
 }
 class ClassB extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
-  synthetic constructor •() → self::ClassB*
+  synthetic constructor •() → self::ClassB
     : super self::UsedAsBaseClass::•()
     ;
   method usedInSubclass() → void {
     core::print("B");
-    this.{self::UsedAsBaseClass::calledFromB}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromB}(){() → void};
   }
   method calledFromSubclass() → void {}
 }
-static method baseClassCall(self::UsedAsBaseClass* object) → void {
-  object.{self::UsedAsBaseClass::usedInSubclass}(){() →* void};
+static method baseClassCall(self::UsedAsBaseClass object) → void {
+  object.{self::UsedAsBaseClass::usedInSubclass}(){() → void};
 }
-static method interfaceCall(self::UsedAsInterface* object) → void {
-  object.{self::UsedAsInterface::usedInSubclass}(){() →* void};
+static method interfaceCall(self::UsedAsInterface object) → void {
+  object.{self::UsedAsInterface::usedInSubclass}(){() → void};
 }
-static method exactCallA(self::ClassA* object) → void {
-  object.{self::ClassA::usedInSubclass}(){() →* void};
+static method exactCallA(self::ClassA object) → void {
+  object.{self::ClassA::usedInSubclass}(){() → void};
 }
-static method exactCallB(self::ClassB* object) → void {
-  object.{self::ClassB::usedInSubclass}(){() →* void};
+static method exactCallB(self::ClassB object) → void {
+  object.{self::ClassB::usedInSubclass}(){() → void};
 }
 static method unusedTopLevel() → dynamic {
   core::print("Unused");
@@ -114,11 +74,11 @@
 static method usedTopLevel() → dynamic {}
 static method main() → dynamic {
   self::usedTopLevel();
-  self::ClassA* a = new self::ClassA::•();
+  self::ClassA a = new self::ClassA::•();
   self::exactCallA(a);
   self::baseClassCall(a);
   self::interfaceCall(a);
-  self::ClassB* b = new self::ClassB::•();
+  self::ClassB b = new self::ClassB::•();
   self::exactCallB(b);
   self::baseClassCall(b);
   self::interfaceCall(b);
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.weak.outline.expect b/pkg/front_end/testcases/general/unused_methods.dart.weak.outline.expect
index 1ddee56..7014eb3 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.weak.outline.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class UnusedClass extends core::Object {
-  constructor •() → self::UnusedClass*
+  constructor •() → self::UnusedClass
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 UsedAsBaseClass extends core::Object {
-  synthetic constructor •() → self::UsedAsBaseClass*
+  synthetic constructor •() → self::UsedAsBaseClass
     ;
   method usedInSubclass() → void
     ;
@@ -25,70 +15,40 @@
     ;
   method calledFromSubclass() → 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 UsedAsInterface extends core::Object {
-  synthetic constructor •() → self::UsedAsInterface*
+  synthetic constructor •() → self::UsedAsInterface
     ;
   method usedInSubclass() → 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 InstantiatedButMethodsUnused extends core::Object {
-  synthetic constructor •() → self::InstantiatedButMethodsUnused*
+  synthetic constructor •() → self::InstantiatedButMethodsUnused
     ;
   method usedInSubclass() → 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 ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
-  synthetic constructor •() → self::ClassA*
+  synthetic constructor •() → self::ClassA
     ;
   method usedInSubclass() → void
     ;
 }
 class ClassB extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
-  synthetic constructor •() → self::ClassB*
+  synthetic constructor •() → self::ClassB
     ;
   method usedInSubclass() → void
     ;
   method calledFromSubclass() → void
     ;
 }
-static method baseClassCall(self::UsedAsBaseClass* object) → void
+static method baseClassCall(self::UsedAsBaseClass object) → void
   ;
-static method interfaceCall(self::UsedAsInterface* object) → void
+static method interfaceCall(self::UsedAsInterface object) → void
   ;
-static method exactCallA(self::ClassA* object) → void
+static method exactCallA(self::ClassA object) → void
   ;
-static method exactCallB(self::ClassB* object) → void
+static method exactCallB(self::ClassB object) → void
   ;
 static method unusedTopLevel() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/unused_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/general/unused_methods.dart.weak.transformed.expect
index 060120a..30afbfa 100644
--- a/pkg/front_end/testcases/general/unused_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/unused_methods.dart.weak.transformed.expect
@@ -1,85 +1,45 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class UnusedClass extends core::Object {
-  constructor •() → self::UnusedClass*
+  constructor •() → self::UnusedClass
     : super core::Object::•() {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 UsedAsBaseClass extends core::Object {
-  synthetic constructor •() → self::UsedAsBaseClass*
+  synthetic constructor •() → self::UsedAsBaseClass
     : super core::Object::•()
     ;
   method usedInSubclass() → void {
     core::print("Unused");
   }
   method calledFromB() → void {
-    this.{self::UsedAsBaseClass::calledFromSubclass}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromSubclass}(){() → void};
   }
   method calledFromSubclass() → void {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 UsedAsInterface extends core::Object {
-  synthetic constructor •() → self::UsedAsInterface*
+  synthetic constructor •() → self::UsedAsInterface
     : super core::Object::•()
     ;
   method usedInSubclass() → void {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 InstantiatedButMethodsUnused extends core::Object {
-  synthetic constructor •() → self::InstantiatedButMethodsUnused*
+  synthetic constructor •() → self::InstantiatedButMethodsUnused
     : super core::Object::•()
     ;
   method usedInSubclass() → void {
     core::print("Unused");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 ClassA extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
-  synthetic constructor •() → self::ClassA*
+  synthetic constructor •() → self::ClassA
     : super self::UsedAsBaseClass::•()
     ;
   method usedInSubclass() → void {
@@ -87,26 +47,26 @@
   }
 }
 class ClassB extends self::UsedAsBaseClass implements self::UsedAsInterface, self::InstantiatedButMethodsUnused {
-  synthetic constructor •() → self::ClassB*
+  synthetic constructor •() → self::ClassB
     : super self::UsedAsBaseClass::•()
     ;
   method usedInSubclass() → void {
     core::print("B");
-    this.{self::UsedAsBaseClass::calledFromB}(){() →* void};
+    this.{self::UsedAsBaseClass::calledFromB}(){() → void};
   }
   method calledFromSubclass() → void {}
 }
-static method baseClassCall(self::UsedAsBaseClass* object) → void {
-  object.{self::UsedAsBaseClass::usedInSubclass}(){() →* void};
+static method baseClassCall(self::UsedAsBaseClass object) → void {
+  object.{self::UsedAsBaseClass::usedInSubclass}(){() → void};
 }
-static method interfaceCall(self::UsedAsInterface* object) → void {
-  object.{self::UsedAsInterface::usedInSubclass}(){() →* void};
+static method interfaceCall(self::UsedAsInterface object) → void {
+  object.{self::UsedAsInterface::usedInSubclass}(){() → void};
 }
-static method exactCallA(self::ClassA* object) → void {
-  object.{self::ClassA::usedInSubclass}(){() →* void};
+static method exactCallA(self::ClassA object) → void {
+  object.{self::ClassA::usedInSubclass}(){() → void};
 }
-static method exactCallB(self::ClassB* object) → void {
-  object.{self::ClassB::usedInSubclass}(){() →* void};
+static method exactCallB(self::ClassB object) → void {
+  object.{self::ClassB::usedInSubclass}(){() → void};
 }
 static method unusedTopLevel() → dynamic {
   core::print("Unused");
@@ -114,11 +74,11 @@
 static method usedTopLevel() → dynamic {}
 static method main() → dynamic {
   self::usedTopLevel();
-  self::ClassA* a = new self::ClassA::•();
+  self::ClassA a = new self::ClassA::•();
   self::exactCallA(a);
   self::baseClassCall(a);
   self::interfaceCall(a);
-  self::ClassB* b = new self::ClassB::•();
+  self::ClassB b = new self::ClassB::•();
   self::exactCallB(b);
   self::baseClassCall(b);
   self::interfaceCall(b);
diff --git a/pkg/front_end/testcases/general/var_as_type_name.dart b/pkg/front_end/testcases/general/var_as_type_name.dart
index dc79310..21030cd 100644
--- a/pkg/front_end/testcases/general/var_as_type_name.dart
+++ b/pkg/front_end/testcases/general/var_as_type_name.dart
@@ -1,9 +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
+
 class A {
-  Map<String, var> m;
+  Map<String, var>? m;
 }
 
 main() {
diff --git a/pkg/front_end/testcases/general/var_as_type_name.dart.textual_outline.expect b/pkg/front_end/testcases/general/var_as_type_name.dart.textual_outline.expect
index d013230..97f695e 100644
--- a/pkg/front_end/testcases/general/var_as_type_name.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/var_as_type_name.dart.textual_outline.expect
@@ -1,5 +1,4 @@
-// @dart = 2.9
 class A {
-  Map<String, var> m;
+  Map<String, var>? m;
 }
 main() {}
diff --git a/pkg/front_end/testcases/general/var_as_type_name.dart.weak.expect b/pkg/front_end/testcases/general/var_as_type_name.dart.weak.expect
index 4673e3d..d7d3382 100644
--- a/pkg/front_end/testcases/general/var_as_type_name.dart.weak.expect
+++ b/pkg/front_end/testcases/general/var_as_type_name.dart.weak.expect
@@ -1,39 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: The keyword 'var' can't be used as a type name.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: Type 'var' not found.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: 'var' isn't a type.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::Map<core::String*, invalid-type>* m = null;
-  synthetic constructor •() → self::A*
+  field core::Map<core::String, invalid-type>? m = null;
+  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
 }
 static method main() → dynamic {
-  self::A* a = new self::A::•();
+  self::A a = new self::A::•();
   a.{self::A::m} = null;
 }
diff --git a/pkg/front_end/testcases/general/var_as_type_name.dart.weak.modular.expect b/pkg/front_end/testcases/general/var_as_type_name.dart.weak.modular.expect
index 4673e3d..d7d3382 100644
--- a/pkg/front_end/testcases/general/var_as_type_name.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/var_as_type_name.dart.weak.modular.expect
@@ -1,39 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: The keyword 'var' can't be used as a type name.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: Type 'var' not found.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: 'var' isn't a type.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::Map<core::String*, invalid-type>* m = null;
-  synthetic constructor •() → self::A*
+  field core::Map<core::String, invalid-type>? m = null;
+  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
 }
 static method main() → dynamic {
-  self::A* a = new self::A::•();
+  self::A a = new self::A::•();
   a.{self::A::m} = null;
 }
diff --git a/pkg/front_end/testcases/general/var_as_type_name.dart.weak.outline.expect b/pkg/front_end/testcases/general/var_as_type_name.dart.weak.outline.expect
index 4d3b219..926d61d 100644
--- a/pkg/front_end/testcases/general/var_as_type_name.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/var_as_type_name.dart.weak.outline.expect
@@ -1,32 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: The keyword 'var' can't be used as a type name.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: Type 'var' not found.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::Map<core::String*, invalid-type>* m;
-  synthetic constructor •() → self::A*
+  field core::Map<core::String, invalid-type>? m;
+  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
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/var_as_type_name.dart.weak.transformed.expect b/pkg/front_end/testcases/general/var_as_type_name.dart.weak.transformed.expect
index 4673e3d..d7d3382 100644
--- a/pkg/front_end/testcases/general/var_as_type_name.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/var_as_type_name.dart.weak.transformed.expect
@@ -1,39 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: The keyword 'var' can't be used as a type name.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: Type 'var' not found.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 // pkg/front_end/testcases/general/var_as_type_name.dart:6:15: Error: 'var' isn't a type.
-//   Map<String, var> m;
+//   Map<String, var>? m;
 //               ^^^
 //
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::Map<core::String*, invalid-type>* m = null;
-  synthetic constructor •() → self::A*
+  field core::Map<core::String, invalid-type>? m = null;
+  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
 }
 static method main() → dynamic {
-  self::A* a = new self::A::•();
+  self::A a = new self::A::•();
   a.{self::A::m} = null;
 }
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart b/pkg/front_end/testcases/general/vm_type_ops.dart
index dea0537..04f3785 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart
+++ b/pkg/front_end/testcases/general/vm_type_ops.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
+
 // Copied from pkg/vm/testcases/bytecode/type_ops.dart
 
 class A<T> {}
@@ -51,14 +51,14 @@
   }
 }
 
-List<Iterable> globalVar;
+late List<Iterable> globalVar;
 
 void foo5(x) {
   globalVar = x;
 }
 
 class E<P extends String> {
-  factory E() => null;
+  factory E() => throw '';
   void foo6<T extends P, U extends List<T>>(Map<T, U> map) {}
 }
 
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline.expect
index ab65d0d..89d2735 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<T> {}
 
 class B extends A<String> {}
@@ -15,11 +14,11 @@
   Map<P, Q> foo4(w) {}
 }
 
-List<Iterable> globalVar;
+late List<Iterable> globalVar;
 void foo5(x) {}
 
 class E<P extends String> {
-  factory E() => null;
+  factory E() => throw '';
   void foo6<T extends P, U extends List<T>>(Map<T, U> map) {}
 }
 
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline_modelled.expect
index fbadedf..7720cab 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.textual_outline_modelled.expect
@@ -1,17 +1,6 @@
-// @dart = 2.9
-List<Iterable> globalVar;
-
-abstract class F<T> {
-  void foo7<Q extends T>(Q a, covariant num b, T c);
-  void foo8<Q extends T>(Q a, covariant num b, T c);
-}
-
 class A<T> {}
-
 class B extends A<String> {}
-
 class C<T1, T2, T3> extends B {}
-
 class D<P, Q> extends C<int, Q, P> {
   D(tt) : foo = tt;
   Map<P, Q> foo;
@@ -19,20 +8,24 @@
   foo2(y) {}
   foo3<T1, T2>(z) {}
 }
-
+foo1(x) {}
+---- unknown chunk starts ----
+late
+---- unknown chunk ends ----
+List<Iterable> globalVar;
+abstract class F<T> {
+  void foo7<Q extends T>(Q a, covariant num b, T c);
+  void foo8<Q extends T>(Q a, covariant num b, T c);
+}
 class E<P extends String> {
-  factory E() => null;
+  factory E() => throw '';
   void foo6<T extends P, U extends List<T>>(Map<T, U> map) {}
 }
-
 class G<T> {
   void foo7<Q extends T>(Q a, int b, T c) {}
 }
-
 class H<T> extends G<T> implements F<T> {
   void foo8<Q extends T>(Q a, int b, T c) {}
 }
-
-foo1(x) {}
 main() {}
 void foo5(x) {}
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.expect
index 47d6412f..17dd908 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.expect
@@ -1,127 +1,87 @@
-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::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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
     : super self::A::•()
     ;
 }
-class C<T1 extends core::Object* = dynamic, T2 extends core::Object* = dynamic, T3 extends core::Object* = dynamic> extends self::B {
-  synthetic constructor •() → self::C<self::C::T1*, self::C::T2*, self::C::T3*>*
+class C<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic, T3 extends core::Object? = dynamic> extends self::B {
+  synthetic constructor •() → self::C<self::C::T1%, self::C::T2%, self::C::T3%>
     : super self::B::•()
     ;
 }
-class D<P extends core::Object* = dynamic, Q extends core::Object* = dynamic> extends self::C<core::int*, self::D::Q*, self::D::P*> {
-  covariant-by-class field core::Map<self::D::P*, self::D::Q*>* foo;
-  constructor •(dynamic tt) → self::D<self::D::P*, self::D::Q*>*
-    : self::D::foo = tt as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*, super self::C::•()
+class D<P extends core::Object? = dynamic, Q extends core::Object? = dynamic> extends self::C<core::int, self::D::Q%, self::D::P%> {
+  covariant-by-class field core::Map<self::D::P%, self::D::Q%> foo;
+  constructor •(dynamic tt) → self::D<self::D::P%, self::D::Q%>
+    : self::D::foo = tt as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>, super self::C::•()
     ;
   method foo2(dynamic y) → dynamic {
-    if(y is self::A<self::D::P*>*) {
+    if(y is{ForNonNullableByDefault} self::A<self::D::P%>) {
       core::print("21");
     }
-    if(y is self::C<dynamic, self::D::Q*, core::List<self::D::P*>*>*) {
+    if(y is{ForNonNullableByDefault} self::C<dynamic, self::D::Q%, core::List<self::D::P%>>) {
       core::print("22");
     }
-    this.{self::D::foo} = y as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*;
+    this.{self::D::foo} = y as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>;
   }
-  method foo3<T1 extends core::Object* = dynamic, T2 extends core::Object* = dynamic>(dynamic z) → dynamic {
-    if(z is self::A<self::D::foo3::T1*>*) {
+  method foo3<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(dynamic z) → dynamic {
+    if(z is{ForNonNullableByDefault} self::A<self::D::foo3::T1%>) {
       core::print("31");
     }
-    if(z is self::C<core::Map<self::D::foo3::T1*, self::D::P*>*, core::List<self::D::foo3::T2*>*, self::D::Q*>*) {
+    if(z is{ForNonNullableByDefault} self::C<core::Map<self::D::foo3::T1%, self::D::P%>, core::List<self::D::foo3::T2%>, self::D::Q%>) {
       core::print("32");
     }
-    return (z as core::Map<self::D::foo3::T2*, self::D::Q*>*).{core::Map::values}{core::Iterable<self::D::Q*>*};
+    return (z as{ForNonNullableByDefault} core::Map<self::D::foo3::T2%, self::D::Q%>).{core::Map::values}{core::Iterable<self::D::Q%>};
   }
-  method foo4(dynamic w) → core::Map<self::D::P*, self::D::Q*>* {
-    core::List<core::Map<self::D::P*, self::D::Q*>*>* list = <core::Map<self::D::P*, self::D::Q*>*>[w as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*];
-    return w as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*;
+  method foo4(dynamic w) → core::Map<self::D::P%, self::D::Q%> {
+    core::List<core::Map<self::D::P%, self::D::Q%>> list = <core::Map<self::D::P%, self::D::Q%>>[w as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>];
+    return w as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>;
   }
 }
-class E<P extends core::String*> extends core::Object {
-  static factory •<P extends core::String*>() → self::E<self::E::•::P*>*
-    return null;
-  method foo6<covariant-by-class T extends self::E::P*, U extends core::List<self::E::foo6::T*>* = core::List<self::E::P*>*>(core::Map<self::E::foo6::T*, self::E::foo6::U*>* map) → 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 E<P extends core::String> extends core::Object {
+  static factory •<P extends core::String>() → self::E<self::E::•::P>
+    return throw "";
+  method foo6<covariant-by-class T extends self::E::P, U extends core::List<self::E::foo6::T> = core::List<self::E::P>>(core::Map<self::E::foo6::T, self::E::foo6::U> map) → void {}
 }
-abstract class F<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::F<self::F::T*>*
+abstract class F<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::F<self::F::T%>
     : super core::Object::•()
     ;
-  abstract method foo7<covariant-by-class Q extends self::F::T*>(self::F::foo7::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::F::T* c) → void;
-  abstract method foo8<covariant-by-class Q extends self::F::T*>(self::F::foo8::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::F::T* c) → 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 foo7<covariant-by-class Q extends self::F::T%>(self::F::foo7::Q% a, covariant-by-declaration core::num b, covariant-by-class self::F::T% c) → void;
+  abstract method foo8<covariant-by-class Q extends self::F::T%>(self::F::foo8::Q% a, covariant-by-declaration core::num b, covariant-by-class self::F::T% c) → void;
 }
-class G<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::G<self::G::T*>*
+class G<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::G<self::G::T%>
     : super core::Object::•()
     ;
-  method foo7<covariant-by-class Q extends self::G::T*>(self::G::foo7::Q* a, core::int* b, covariant-by-class self::G::T* c) → 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 foo7<covariant-by-class Q extends self::G::T%>(self::G::foo7::Q% a, core::int b, covariant-by-class self::G::T% c) → void {}
 }
-class H<T extends core::Object* = dynamic> extends self::G<self::H::T*> implements self::F<self::H::T*> {
-  synthetic constructor •() → self::H<self::H::T*>*
+class H<T extends core::Object? = dynamic> extends self::G<self::H::T%> implements self::F<self::H::T%> {
+  synthetic constructor •() → self::H<self::H::T%>
     : super self::G::•()
     ;
-  method foo8<covariant-by-class Q extends self::H::T*>(self::H::foo8::Q* a, covariant-by-declaration core::int* b, covariant-by-class self::H::T* c) → void {}
-  forwarding-stub method foo7<covariant-by-class Q extends self::H::T*>(self::H::foo7::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::H::T* c) → void
-    return super.{self::G::foo7}<self::H::foo7::Q*>(a, b as core::int*, c);
+  method foo8<covariant-by-class Q extends self::H::T%>(self::H::foo8::Q% a, covariant-by-declaration core::int b, covariant-by-class self::H::T% c) → void {}
+  forwarding-stub method foo7<covariant-by-class Q extends self::H::T%>(self::H::foo7::Q% a, covariant-by-declaration core::num b, covariant-by-class self::H::T% c) → void
+    return super.{self::G::foo7}<self::H::foo7::Q%>(a, b as core::int, c);
 }
-static field core::List<core::Iterable<dynamic>*>* globalVar;
+late static field core::List<core::Iterable<dynamic>> globalVar;
 static method foo1(dynamic x) → dynamic {
-  if(x is self::B*) {
+  if(x is{ForNonNullableByDefault} self::B) {
     core::print("11");
   }
-  if(x is self::C<core::int*, core::Object*, dynamic>*) {
+  if(x is{ForNonNullableByDefault} self::C<core::int, core::Object, dynamic>) {
     core::print("12");
   }
-  return x as self::A<core::int*>*;
+  return x as{ForNonNullableByDefault} self::A<core::int>;
 }
 static method foo5(dynamic x) → void {
-  self::globalVar = x as{TypeError,ForDynamic} core::List<core::Iterable<dynamic>*>*;
+  self::globalVar = x as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<core::Iterable<dynamic>>;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.modular.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.modular.expect
index 47d6412f..17dd908 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.modular.expect
@@ -1,127 +1,87 @@
-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::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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
     : super self::A::•()
     ;
 }
-class C<T1 extends core::Object* = dynamic, T2 extends core::Object* = dynamic, T3 extends core::Object* = dynamic> extends self::B {
-  synthetic constructor •() → self::C<self::C::T1*, self::C::T2*, self::C::T3*>*
+class C<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic, T3 extends core::Object? = dynamic> extends self::B {
+  synthetic constructor •() → self::C<self::C::T1%, self::C::T2%, self::C::T3%>
     : super self::B::•()
     ;
 }
-class D<P extends core::Object* = dynamic, Q extends core::Object* = dynamic> extends self::C<core::int*, self::D::Q*, self::D::P*> {
-  covariant-by-class field core::Map<self::D::P*, self::D::Q*>* foo;
-  constructor •(dynamic tt) → self::D<self::D::P*, self::D::Q*>*
-    : self::D::foo = tt as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*, super self::C::•()
+class D<P extends core::Object? = dynamic, Q extends core::Object? = dynamic> extends self::C<core::int, self::D::Q%, self::D::P%> {
+  covariant-by-class field core::Map<self::D::P%, self::D::Q%> foo;
+  constructor •(dynamic tt) → self::D<self::D::P%, self::D::Q%>
+    : self::D::foo = tt as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>, super self::C::•()
     ;
   method foo2(dynamic y) → dynamic {
-    if(y is self::A<self::D::P*>*) {
+    if(y is{ForNonNullableByDefault} self::A<self::D::P%>) {
       core::print("21");
     }
-    if(y is self::C<dynamic, self::D::Q*, core::List<self::D::P*>*>*) {
+    if(y is{ForNonNullableByDefault} self::C<dynamic, self::D::Q%, core::List<self::D::P%>>) {
       core::print("22");
     }
-    this.{self::D::foo} = y as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*;
+    this.{self::D::foo} = y as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>;
   }
-  method foo3<T1 extends core::Object* = dynamic, T2 extends core::Object* = dynamic>(dynamic z) → dynamic {
-    if(z is self::A<self::D::foo3::T1*>*) {
+  method foo3<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(dynamic z) → dynamic {
+    if(z is{ForNonNullableByDefault} self::A<self::D::foo3::T1%>) {
       core::print("31");
     }
-    if(z is self::C<core::Map<self::D::foo3::T1*, self::D::P*>*, core::List<self::D::foo3::T2*>*, self::D::Q*>*) {
+    if(z is{ForNonNullableByDefault} self::C<core::Map<self::D::foo3::T1%, self::D::P%>, core::List<self::D::foo3::T2%>, self::D::Q%>) {
       core::print("32");
     }
-    return (z as core::Map<self::D::foo3::T2*, self::D::Q*>*).{core::Map::values}{core::Iterable<self::D::Q*>*};
+    return (z as{ForNonNullableByDefault} core::Map<self::D::foo3::T2%, self::D::Q%>).{core::Map::values}{core::Iterable<self::D::Q%>};
   }
-  method foo4(dynamic w) → core::Map<self::D::P*, self::D::Q*>* {
-    core::List<core::Map<self::D::P*, self::D::Q*>*>* list = <core::Map<self::D::P*, self::D::Q*>*>[w as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*];
-    return w as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*;
+  method foo4(dynamic w) → core::Map<self::D::P%, self::D::Q%> {
+    core::List<core::Map<self::D::P%, self::D::Q%>> list = <core::Map<self::D::P%, self::D::Q%>>[w as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>];
+    return w as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>;
   }
 }
-class E<P extends core::String*> extends core::Object {
-  static factory •<P extends core::String*>() → self::E<self::E::•::P*>*
-    return null;
-  method foo6<covariant-by-class T extends self::E::P*, U extends core::List<self::E::foo6::T*>* = core::List<self::E::P*>*>(core::Map<self::E::foo6::T*, self::E::foo6::U*>* map) → 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 E<P extends core::String> extends core::Object {
+  static factory •<P extends core::String>() → self::E<self::E::•::P>
+    return throw "";
+  method foo6<covariant-by-class T extends self::E::P, U extends core::List<self::E::foo6::T> = core::List<self::E::P>>(core::Map<self::E::foo6::T, self::E::foo6::U> map) → void {}
 }
-abstract class F<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::F<self::F::T*>*
+abstract class F<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::F<self::F::T%>
     : super core::Object::•()
     ;
-  abstract method foo7<covariant-by-class Q extends self::F::T*>(self::F::foo7::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::F::T* c) → void;
-  abstract method foo8<covariant-by-class Q extends self::F::T*>(self::F::foo8::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::F::T* c) → 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 foo7<covariant-by-class Q extends self::F::T%>(self::F::foo7::Q% a, covariant-by-declaration core::num b, covariant-by-class self::F::T% c) → void;
+  abstract method foo8<covariant-by-class Q extends self::F::T%>(self::F::foo8::Q% a, covariant-by-declaration core::num b, covariant-by-class self::F::T% c) → void;
 }
-class G<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::G<self::G::T*>*
+class G<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::G<self::G::T%>
     : super core::Object::•()
     ;
-  method foo7<covariant-by-class Q extends self::G::T*>(self::G::foo7::Q* a, core::int* b, covariant-by-class self::G::T* c) → 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 foo7<covariant-by-class Q extends self::G::T%>(self::G::foo7::Q% a, core::int b, covariant-by-class self::G::T% c) → void {}
 }
-class H<T extends core::Object* = dynamic> extends self::G<self::H::T*> implements self::F<self::H::T*> {
-  synthetic constructor •() → self::H<self::H::T*>*
+class H<T extends core::Object? = dynamic> extends self::G<self::H::T%> implements self::F<self::H::T%> {
+  synthetic constructor •() → self::H<self::H::T%>
     : super self::G::•()
     ;
-  method foo8<covariant-by-class Q extends self::H::T*>(self::H::foo8::Q* a, covariant-by-declaration core::int* b, covariant-by-class self::H::T* c) → void {}
-  forwarding-stub method foo7<covariant-by-class Q extends self::H::T*>(self::H::foo7::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::H::T* c) → void
-    return super.{self::G::foo7}<self::H::foo7::Q*>(a, b as core::int*, c);
+  method foo8<covariant-by-class Q extends self::H::T%>(self::H::foo8::Q% a, covariant-by-declaration core::int b, covariant-by-class self::H::T% c) → void {}
+  forwarding-stub method foo7<covariant-by-class Q extends self::H::T%>(self::H::foo7::Q% a, covariant-by-declaration core::num b, covariant-by-class self::H::T% c) → void
+    return super.{self::G::foo7}<self::H::foo7::Q%>(a, b as core::int, c);
 }
-static field core::List<core::Iterable<dynamic>*>* globalVar;
+late static field core::List<core::Iterable<dynamic>> globalVar;
 static method foo1(dynamic x) → dynamic {
-  if(x is self::B*) {
+  if(x is{ForNonNullableByDefault} self::B) {
     core::print("11");
   }
-  if(x is self::C<core::int*, core::Object*, dynamic>*) {
+  if(x is{ForNonNullableByDefault} self::C<core::int, core::Object, dynamic>) {
     core::print("12");
   }
-  return x as self::A<core::int*>*;
+  return x as{ForNonNullableByDefault} self::A<core::int>;
 }
 static method foo5(dynamic x) → void {
-  self::globalVar = x as{TypeError,ForDynamic} core::List<core::Iterable<dynamic>*>*;
+  self::globalVar = x as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<core::Iterable<dynamic>>;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.outline.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.outline.expect
index 1f5d785..a5cbf1b 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.outline.expect
@@ -1,97 +1,57 @@
-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*>*
-    ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::T%>
     ;
 }
-class C<T1 extends core::Object* = dynamic, T2 extends core::Object* = dynamic, T3 extends core::Object* = dynamic> extends self::B {
-  synthetic constructor •() → self::C<self::C::T1*, self::C::T2*, self::C::T3*>*
+class B extends self::A<core::String> {
+  synthetic constructor •() → self::B
     ;
 }
-class D<P extends core::Object* = dynamic, Q extends core::Object* = dynamic> extends self::C<core::int*, self::D::Q*, self::D::P*> {
-  covariant-by-class field core::Map<self::D::P*, self::D::Q*>* foo;
-  constructor •(dynamic tt) → self::D<self::D::P*, self::D::Q*>*
+class C<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic, T3 extends core::Object? = dynamic> extends self::B {
+  synthetic constructor •() → self::C<self::C::T1%, self::C::T2%, self::C::T3%>
+    ;
+}
+class D<P extends core::Object? = dynamic, Q extends core::Object? = dynamic> extends self::C<core::int, self::D::Q%, self::D::P%> {
+  covariant-by-class field core::Map<self::D::P%, self::D::Q%> foo;
+  constructor •(dynamic tt) → self::D<self::D::P%, self::D::Q%>
     ;
   method foo2(dynamic y) → dynamic
     ;
-  method foo3<T1 extends core::Object* = dynamic, T2 extends core::Object* = dynamic>(dynamic z) → dynamic
+  method foo3<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(dynamic z) → dynamic
     ;
-  method foo4(dynamic w) → core::Map<self::D::P*, self::D::Q*>*
+  method foo4(dynamic w) → core::Map<self::D::P%, self::D::Q%>
     ;
 }
-class E<P extends core::String*> extends core::Object {
-  static factory •<P extends core::String*>() → self::E<self::E::•::P*>*
+class E<P extends core::String> extends core::Object {
+  static factory •<P extends core::String>() → self::E<self::E::•::P>
     ;
-  method foo6<covariant-by-class T extends self::E::P*, U extends core::List<self::E::foo6::T*>* = core::List<self::E::P*>*>(core::Map<self::E::foo6::T*, self::E::foo6::U*>* map) → void
+  method foo6<covariant-by-class T extends self::E::P, U extends core::List<self::E::foo6::T> = core::List<self::E::P>>(core::Map<self::E::foo6::T, self::E::foo6::U> map) → 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<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::F<self::F::T*>*
+abstract class F<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::F<self::F::T%>
     ;
-  abstract method foo7<covariant-by-class Q extends self::F::T*>(self::F::foo7::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::F::T* c) → void;
-  abstract method foo8<covariant-by-class Q extends self::F::T*>(self::F::foo8::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::F::T* c) → 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 foo7<covariant-by-class Q extends self::F::T%>(self::F::foo7::Q% a, covariant-by-declaration core::num b, covariant-by-class self::F::T% c) → void;
+  abstract method foo8<covariant-by-class Q extends self::F::T%>(self::F::foo8::Q% a, covariant-by-declaration core::num b, covariant-by-class self::F::T% c) → void;
 }
-class G<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::G<self::G::T*>*
+class G<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::G<self::G::T%>
     ;
-  method foo7<covariant-by-class Q extends self::G::T*>(self::G::foo7::Q* a, core::int* b, covariant-by-class self::G::T* c) → void
+  method foo7<covariant-by-class Q extends self::G::T%>(self::G::foo7::Q% a, core::int b, covariant-by-class self::G::T% c) → 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 H<T extends core::Object* = dynamic> extends self::G<self::H::T*> implements self::F<self::H::T*> {
-  synthetic constructor •() → self::H<self::H::T*>*
+class H<T extends core::Object? = dynamic> extends self::G<self::H::T%> implements self::F<self::H::T%> {
+  synthetic constructor •() → self::H<self::H::T%>
     ;
-  method foo8<covariant-by-class Q extends self::H::T*>(self::H::foo8::Q* a, covariant-by-declaration core::int* b, covariant-by-class self::H::T* c) → void
+  method foo8<covariant-by-class Q extends self::H::T%>(self::H::foo8::Q% a, covariant-by-declaration core::int b, covariant-by-class self::H::T% c) → void
     ;
-  forwarding-stub method foo7<covariant-by-class Q extends self::H::T*>(self::H::foo7::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::H::T* c) → void
-    return super.{self::G::foo7}<self::H::foo7::Q*>(a, b as core::int*, c);
+  forwarding-stub method foo7<covariant-by-class Q extends self::H::T%>(self::H::foo7::Q% a, covariant-by-declaration core::num b, covariant-by-class self::H::T% c) → void
+    return super.{self::G::foo7}<self::H::foo7::Q%>(a, b as core::int, c);
 }
-static field core::List<core::Iterable<dynamic>*>* globalVar;
+late static field core::List<core::Iterable<dynamic>> globalVar;
 static method foo1(dynamic x) → dynamic
   ;
 static method foo5(dynamic x) → void
diff --git a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.transformed.expect b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.transformed.expect
index 96a4931..4df369e 100644
--- a/pkg/front_end/testcases/general/vm_type_ops.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/vm_type_ops.dart.weak.transformed.expect
@@ -1,127 +1,87 @@
-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::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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
     : super self::A::•()
     ;
 }
-class C<T1 extends core::Object* = dynamic, T2 extends core::Object* = dynamic, T3 extends core::Object* = dynamic> extends self::B {
-  synthetic constructor •() → self::C<self::C::T1*, self::C::T2*, self::C::T3*>*
+class C<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic, T3 extends core::Object? = dynamic> extends self::B {
+  synthetic constructor •() → self::C<self::C::T1%, self::C::T2%, self::C::T3%>
     : super self::B::•()
     ;
 }
-class D<P extends core::Object* = dynamic, Q extends core::Object* = dynamic> extends self::C<core::int*, self::D::Q*, self::D::P*> {
-  covariant-by-class field core::Map<self::D::P*, self::D::Q*>* foo;
-  constructor •(dynamic tt) → self::D<self::D::P*, self::D::Q*>*
-    : self::D::foo = tt as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*, super self::C::•()
+class D<P extends core::Object? = dynamic, Q extends core::Object? = dynamic> extends self::C<core::int, self::D::Q%, self::D::P%> {
+  covariant-by-class field core::Map<self::D::P%, self::D::Q%> foo;
+  constructor •(dynamic tt) → self::D<self::D::P%, self::D::Q%>
+    : self::D::foo = tt as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>, super self::C::•()
     ;
   method foo2(dynamic y) → dynamic {
-    if(y is self::A<self::D::P*>*) {
+    if(y is{ForNonNullableByDefault} self::A<self::D::P%>) {
       core::print("21");
     }
-    if(y is self::C<dynamic, self::D::Q*, core::List<self::D::P*>*>*) {
+    if(y is{ForNonNullableByDefault} self::C<dynamic, self::D::Q%, core::List<self::D::P%>>) {
       core::print("22");
     }
-    this.{self::D::foo} = y as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*;
+    this.{self::D::foo} = y as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>;
   }
-  method foo3<T1 extends core::Object* = dynamic, T2 extends core::Object* = dynamic>(dynamic z) → dynamic {
-    if(z is self::A<self::D::foo3::T1*>*) {
+  method foo3<T1 extends core::Object? = dynamic, T2 extends core::Object? = dynamic>(dynamic z) → dynamic {
+    if(z is{ForNonNullableByDefault} self::A<self::D::foo3::T1%>) {
       core::print("31");
     }
-    if(z is self::C<core::Map<self::D::foo3::T1*, self::D::P*>*, core::List<self::D::foo3::T2*>*, self::D::Q*>*) {
+    if(z is{ForNonNullableByDefault} self::C<core::Map<self::D::foo3::T1%, self::D::P%>, core::List<self::D::foo3::T2%>, self::D::Q%>) {
       core::print("32");
     }
-    return (z as core::Map<self::D::foo3::T2*, self::D::Q*>*).{core::Map::values}{core::Iterable<self::D::Q*>*};
+    return (z as{ForNonNullableByDefault} core::Map<self::D::foo3::T2%, self::D::Q%>).{core::Map::values}{core::Iterable<self::D::Q%>};
   }
-  method foo4(dynamic w) → core::Map<self::D::P*, self::D::Q*>* {
-    core::List<core::Map<self::D::P*, self::D::Q*>*>* list = core::_GrowableList::_literal1<core::Map<self::D::P*, self::D::Q*>*>(w as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*);
-    return w as{TypeError,ForDynamic} core::Map<self::D::P*, self::D::Q*>*;
+  method foo4(dynamic w) → core::Map<self::D::P%, self::D::Q%> {
+    core::List<core::Map<self::D::P%, self::D::Q%>> list = core::_GrowableList::_literal1<core::Map<self::D::P%, self::D::Q%>>(w as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>);
+    return w as{TypeError,ForDynamic,ForNonNullableByDefault} core::Map<self::D::P%, self::D::Q%>;
   }
 }
-class E<P extends core::String*> extends core::Object {
-  static factory •<P extends core::String*>() → self::E<self::E::•::P*>*
-    return null;
-  method foo6<covariant-by-class T extends self::E::P*, U extends core::List<self::E::foo6::T*>* = core::List<self::E::P*>*>(core::Map<self::E::foo6::T*, self::E::foo6::U*>* map) → 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 E<P extends core::String> extends core::Object {
+  static factory •<P extends core::String>() → self::E<self::E::•::P>
+    return throw "";
+  method foo6<covariant-by-class T extends self::E::P, U extends core::List<self::E::foo6::T> = core::List<self::E::P>>(core::Map<self::E::foo6::T, self::E::foo6::U> map) → void {}
 }
-abstract class F<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::F<self::F::T*>*
+abstract class F<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::F<self::F::T%>
     : super core::Object::•()
     ;
-  abstract method foo7<covariant-by-class Q extends self::F::T*>(self::F::foo7::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::F::T* c) → void;
-  abstract method foo8<covariant-by-class Q extends self::F::T*>(self::F::foo8::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::F::T* c) → 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 foo7<covariant-by-class Q extends self::F::T%>(self::F::foo7::Q% a, covariant-by-declaration core::num b, covariant-by-class self::F::T% c) → void;
+  abstract method foo8<covariant-by-class Q extends self::F::T%>(self::F::foo8::Q% a, covariant-by-declaration core::num b, covariant-by-class self::F::T% c) → void;
 }
-class G<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::G<self::G::T*>*
+class G<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::G<self::G::T%>
     : super core::Object::•()
     ;
-  method foo7<covariant-by-class Q extends self::G::T*>(self::G::foo7::Q* a, core::int* b, covariant-by-class self::G::T* c) → 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 foo7<covariant-by-class Q extends self::G::T%>(self::G::foo7::Q% a, core::int b, covariant-by-class self::G::T% c) → void {}
 }
-class H<T extends core::Object* = dynamic> extends self::G<self::H::T*> implements self::F<self::H::T*> {
-  synthetic constructor •() → self::H<self::H::T*>*
+class H<T extends core::Object? = dynamic> extends self::G<self::H::T%> implements self::F<self::H::T%> {
+  synthetic constructor •() → self::H<self::H::T%>
     : super self::G::•()
     ;
-  method foo8<covariant-by-class Q extends self::H::T*>(self::H::foo8::Q* a, covariant-by-declaration core::int* b, covariant-by-class self::H::T* c) → void {}
-  forwarding-stub method foo7<covariant-by-class Q extends self::H::T*>(self::H::foo7::Q* a, covariant-by-declaration core::num* b, covariant-by-class self::H::T* c) → void
-    return super.{self::G::foo7}<self::H::foo7::Q*>(a, b as core::int*, c);
+  method foo8<covariant-by-class Q extends self::H::T%>(self::H::foo8::Q% a, covariant-by-declaration core::int b, covariant-by-class self::H::T% c) → void {}
+  forwarding-stub method foo7<covariant-by-class Q extends self::H::T%>(self::H::foo7::Q% a, covariant-by-declaration core::num b, covariant-by-class self::H::T% c) → void
+    return super.{self::G::foo7}<self::H::foo7::Q%>(a, b as core::int, c);
 }
-static field core::List<core::Iterable<dynamic>*>* globalVar;
+late static field core::List<core::Iterable<dynamic>> globalVar;
 static method foo1(dynamic x) → dynamic {
-  if(x is self::B*) {
+  if(x is{ForNonNullableByDefault} self::B) {
     core::print("11");
   }
-  if(x is self::C<core::int*, core::Object*, dynamic>*) {
+  if(x is{ForNonNullableByDefault} self::C<core::int, core::Object, dynamic>) {
     core::print("12");
   }
-  return x as self::A<core::int*>*;
+  return x as{ForNonNullableByDefault} self::A<core::int>;
 }
 static method foo5(dynamic x) → void {
-  self::globalVar = x as{TypeError,ForDynamic} core::List<core::Iterable<dynamic>*>*;
+  self::globalVar = x as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<core::Iterable<dynamic>>;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/void_methods.dart b/pkg/front_end/testcases/general/void_methods.dart
index a313fb6..5e8d6f7 100644
--- a/pkg/front_end/testcases/general/void_methods.dart
+++ b/pkg/front_end/testcases/general/void_methods.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 {
   List list = [1, 2, 3];
   set first(x) => list[0] = x;
diff --git a/pkg/front_end/testcases/general/void_methods.dart.textual_outline.expect b/pkg/front_end/testcases/general/void_methods.dart.textual_outline.expect
index bf49b71..a23d97f 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {
   List list = [1, 2, 3];
   set first(x) => list[0] = x;
diff --git a/pkg/front_end/testcases/general/void_methods.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/void_methods.dart.textual_outline_modelled.expect
index 4637b10..f5f0084 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo {
   List list = [1, 2, 3];
   operator []=(x, y) => list[x] = y;
diff --git a/pkg/front_end/testcases/general/void_methods.dart.weak.expect b/pkg/front_end/testcases/general/void_methods.dart.weak.expect
index dff46ae..7442dc4 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.weak.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.weak.expect
@@ -1,31 +1,21 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  field core::List<dynamic>* list = <dynamic>[1, 2, 3];
-  synthetic constructor •() → self::Foo*
+  field core::List<dynamic> list = <dynamic>[1, 2, 3];
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
   set first(dynamic x) → void
-    return let final core::List<dynamic>* #t1 = this.{self::Foo::list}{core::List<dynamic>*} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int*, dynamic) →* void} in #t3;
+    return let final core::List<dynamic> #t1 = this.{self::Foo::list}{core::List<dynamic>} in let final core::int #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int, dynamic) → void} in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list}{core::List<dynamic>*} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7){(core::int*, dynamic) →* void} in #t7;
+    return let final core::List<dynamic> #t5 = this.{self::Foo::list}{core::List<dynamic>} in let final dynamic #t6 = x as{TypeError,ForDynamic,ForNonNullableByDefault} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7){(core::int, dynamic) → void} in #t7;
   method clear() → void
-    return this.{self::Foo::list}{core::List<dynamic>*}.{core::List::clear}(){() →* 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
+    return this.{self::Foo::list}{core::List<dynamic>}.{core::List::clear}(){() → void};
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
-  new self::Foo::•().{self::Foo::[]=}(3, 4){(dynamic, dynamic) →* void};
-  new self::Foo::•().{self::Foo::clear}(){() →* void};
+  new self::Foo::•().{self::Foo::[]=}(3, 4){(dynamic, dynamic) → void};
+  new self::Foo::•().{self::Foo::clear}(){() → void};
 }
diff --git a/pkg/front_end/testcases/general/void_methods.dart.weak.modular.expect b/pkg/front_end/testcases/general/void_methods.dart.weak.modular.expect
index dff46ae..7442dc4 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.weak.modular.expect
@@ -1,31 +1,21 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  field core::List<dynamic>* list = <dynamic>[1, 2, 3];
-  synthetic constructor •() → self::Foo*
+  field core::List<dynamic> list = <dynamic>[1, 2, 3];
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
   set first(dynamic x) → void
-    return let final core::List<dynamic>* #t1 = this.{self::Foo::list}{core::List<dynamic>*} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int*, dynamic) →* void} in #t3;
+    return let final core::List<dynamic> #t1 = this.{self::Foo::list}{core::List<dynamic>} in let final core::int #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int, dynamic) → void} in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list}{core::List<dynamic>*} in let final dynamic #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7){(core::int*, dynamic) →* void} in #t7;
+    return let final core::List<dynamic> #t5 = this.{self::Foo::list}{core::List<dynamic>} in let final dynamic #t6 = x as{TypeError,ForDynamic,ForNonNullableByDefault} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7){(core::int, dynamic) → void} in #t7;
   method clear() → void
-    return this.{self::Foo::list}{core::List<dynamic>*}.{core::List::clear}(){() →* 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
+    return this.{self::Foo::list}{core::List<dynamic>}.{core::List::clear}(){() → void};
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
-  new self::Foo::•().{self::Foo::[]=}(3, 4){(dynamic, dynamic) →* void};
-  new self::Foo::•().{self::Foo::clear}(){() →* void};
+  new self::Foo::•().{self::Foo::[]=}(3, 4){(dynamic, dynamic) → void};
+  new self::Foo::•().{self::Foo::clear}(){() → void};
 }
diff --git a/pkg/front_end/testcases/general/void_methods.dart.weak.outline.expect b/pkg/front_end/testcases/general/void_methods.dart.weak.outline.expect
index af66f5b..7fdf48c 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.weak.outline.expect
@@ -1,10 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  field core::List<dynamic>* list;
-  synthetic constructor •() → self::Foo*
+  field core::List<dynamic> list;
+  synthetic constructor •() → self::Foo
     ;
   set first(dynamic x) → void
     ;
@@ -12,16 +12,6 @@
     ;
   method clear() → 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() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/void_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/general/void_methods.dart.weak.transformed.expect
index a6dfbf8..cb19514 100644
--- a/pkg/front_end/testcases/general/void_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/void_methods.dart.weak.transformed.expect
@@ -1,33 +1,23 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  field core::List<dynamic>* list = core::_GrowableList::_literal3<dynamic>(1, 2, 3);
-  synthetic constructor •() → self::Foo*
+  field core::List<dynamic> list = core::_GrowableList::_literal3<dynamic>(1, 2, 3);
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
   set first(dynamic x) → void
-    return let final core::List<dynamic>* #t1 = this.{self::Foo::list}{core::List<dynamic>*} in let final core::int* #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int*, dynamic) →* void} in #t3;
+    return let final core::List<dynamic> #t1 = this.{self::Foo::list}{core::List<dynamic>} in let final core::int #t2 = 0 in let final dynamic #t3 = x in let final void #t4 = #t1.{core::List::[]=}(#t2, #t3){(core::int, dynamic) → void} in #t3;
   operator []=(dynamic x, dynamic y) → void
-    return let final core::List<dynamic>* #t5 = this.{self::Foo::list}{core::List<dynamic>*} in let final core::int* #t6 = x as{TypeError,ForDynamic} core::int* in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7){(core::int*, dynamic) →* void} in #t7;
+    return let final core::List<dynamic> #t5 = this.{self::Foo::list}{core::List<dynamic>} in let final core::int #t6 = x as{TypeError,ForDynamic,ForNonNullableByDefault} core::int in let final dynamic #t7 = y in let final void #t8 = #t5.{core::List::[]=}(#t6, #t7){(core::int, dynamic) → void} in #t7;
   method clear() → void
-    return this.{self::Foo::list}{core::List<dynamic>*}.{core::List::clear}(){() →* 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
+    return this.{self::Foo::list}{core::List<dynamic>}.{core::List::clear}(){() → void};
 }
 static method main() → dynamic {
   new self::Foo::•().{self::Foo::first} = 4;
-  new self::Foo::•().{self::Foo::[]=}(3, 4){(dynamic, dynamic) →* void};
-  new self::Foo::•().{self::Foo::clear}(){() →* void};
+  new self::Foo::•().{self::Foo::[]=}(3, 4){(dynamic, dynamic) → void};
+  new self::Foo::•().{self::Foo::clear}(){() → void};
 }
 
 
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart b/pkg/front_end/testcases/general/warn_unresolved_sends.dart
index 92e87a5..ba78add 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.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 C {
   var superField;
   superMethod() {}
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.textual_outline.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.textual_outline.expect
index 55d70d6..9862754 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {
   var superField;
   superMethod() {}
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.textual_outline_modelled.expect
index 0d861b4..73c7281 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {
   get getterOnly => null;
   get setterOnly => null;
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.expect
index 300333f2..3ea613a 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -43,7 +43,7 @@
 
 class C extends core::Object {
   field dynamic superField = null;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
   method superMethod() → dynamic {}
@@ -53,20 +53,10 @@
   get getterOnly() → dynamic
     return null;
   set getterOnly(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
 }
 class D extends self::C {
   field dynamic field = null;
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
   set setterOnly(dynamic _) → void {}
@@ -78,8 +68,8 @@
     this.{self::C::superField}{dynamic};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
+    this.{self::D::method}(){() → dynamic};
+    this.{self::C::superMethod}(){() → dynamic};
     this.{self::C::setterOnly}{dynamic};
     this.{self::D::setterOnly} = 0;
     this.{self::D::getterOnly}{dynamic};
@@ -88,8 +78,8 @@
     this.{self::C::superField}{dynamic};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
+    this.{self::D::method}(){() → dynamic};
+    this.{self::C::superMethod}(){() → dynamic};
     this.{self::C::setterOnly}{dynamic};
     this.{self::D::setterOnly} = 0;
     this.{self::D::getterOnly}{dynamic};
@@ -128,7 +118,7 @@
 }
 class E extends self::D {
   field dynamic missingField = null;
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
   method missingMethod() → void {}
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.modular.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.modular.expect
index 300333f2..3ea613a 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -43,7 +43,7 @@
 
 class C extends core::Object {
   field dynamic superField = null;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
   method superMethod() → dynamic {}
@@ -53,20 +53,10 @@
   get getterOnly() → dynamic
     return null;
   set getterOnly(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
 }
 class D extends self::C {
   field dynamic field = null;
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
   set setterOnly(dynamic _) → void {}
@@ -78,8 +68,8 @@
     this.{self::C::superField}{dynamic};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
+    this.{self::D::method}(){() → dynamic};
+    this.{self::C::superMethod}(){() → dynamic};
     this.{self::C::setterOnly}{dynamic};
     this.{self::D::setterOnly} = 0;
     this.{self::D::getterOnly}{dynamic};
@@ -88,8 +78,8 @@
     this.{self::C::superField}{dynamic};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
+    this.{self::D::method}(){() → dynamic};
+    this.{self::C::superMethod}(){() → dynamic};
     this.{self::C::setterOnly}{dynamic};
     this.{self::D::setterOnly} = 0;
     this.{self::D::getterOnly}{dynamic};
@@ -128,7 +118,7 @@
 }
 class E extends self::D {
   field dynamic missingField = null;
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
   method missingMethod() → void {}
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.outline.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.outline.expect
index ef5e55a..7b5f46b 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.outline.expect
@@ -1,10 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class C extends core::Object {
   field dynamic superField;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
   method superMethod() → dynamic
     ;
@@ -16,20 +16,10 @@
     ;
   set getterOnly(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
 }
 class D extends self::C {
   field dynamic field;
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
   set setterOnly(dynamic _) → void
     ;
@@ -42,7 +32,7 @@
 }
 class E extends self::D {
   field dynamic missingField;
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
   method missingMethod() → void
     ;
diff --git a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.transformed.expect b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.transformed.expect
index 300333f2..3ea613a 100644
--- a/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/warn_unresolved_sends.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -43,7 +43,7 @@
 
 class C extends core::Object {
   field dynamic superField = null;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
   method superMethod() → dynamic {}
@@ -53,20 +53,10 @@
   get getterOnly() → dynamic
     return null;
   set getterOnly(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
 }
 class D extends self::C {
   field dynamic field = null;
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super self::C::•()
     ;
   set setterOnly(dynamic _) → void {}
@@ -78,8 +68,8 @@
     this.{self::C::superField}{dynamic};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
+    this.{self::D::method}(){() → dynamic};
+    this.{self::C::superMethod}(){() → dynamic};
     this.{self::C::setterOnly}{dynamic};
     this.{self::D::setterOnly} = 0;
     this.{self::D::getterOnly}{dynamic};
@@ -88,8 +78,8 @@
     this.{self::C::superField}{dynamic};
     this.{self::D::field} = 0;
     this.{self::C::superField} = 0;
-    this.{self::D::method}(){() →* dynamic};
-    this.{self::C::superMethod}(){() →* dynamic};
+    this.{self::D::method}(){() → dynamic};
+    this.{self::C::superMethod}(){() → dynamic};
     this.{self::C::setterOnly}{dynamic};
     this.{self::D::setterOnly} = 0;
     this.{self::D::getterOnly}{dynamic};
@@ -128,7 +118,7 @@
 }
 class E extends self::D {
   field dynamic missingField = null;
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
   method missingMethod() → void {}
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart
index fd3815d..dd3af5d9 100644
--- a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.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
+
 class A<X extends int> {}
 
 class B {
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.expect
index a688b79..145ed00 100644
--- a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.expect
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.expect
@@ -2,59 +2,59 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:8:10: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:10:10: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   A<num> fieldOfA; // Error.
 //          ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:9:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:11:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   static A<num> staticFieldOfA; // Error.
 //                 ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:12:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:14:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 // extension E<X extends A<num>> // Error.
 //             ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:14:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:16:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   static A<num> fieldOfE; // Error.
 //                 ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:15:16: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:17:16: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
 // Try changing type arguments so that they conform to the bounds.
 //   A<num> fooOfE() => null; // Error.
 //                ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:16:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:18:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   void barOfE(A<num> a) {} // Error.
 //                      ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:17:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:19:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   void bazOfE<Y extends A<num>>() {} // Error.
 //               ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.modular.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.modular.expect
index a688b79..145ed00 100644
--- a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.modular.expect
@@ -2,59 +2,59 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:8:10: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:10:10: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   A<num> fieldOfA; // Error.
 //          ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:9:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:11:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   static A<num> staticFieldOfA; // Error.
 //                 ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:12:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:14:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 // extension E<X extends A<num>> // Error.
 //             ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:14:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:16:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   static A<num> fieldOfE; // Error.
 //                 ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:15:16: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:17:16: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
 // Try changing type arguments so that they conform to the bounds.
 //   A<num> fooOfE() => null; // Error.
 //                ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:16:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:18:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   void barOfE(A<num> a) {} // Error.
 //                      ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:17:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:19:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   void bazOfE<Y extends A<num>>() {} // Error.
 //               ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.outline.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.outline.expect
index f1bac31..401ed4e 100644
--- a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.outline.expect
@@ -2,59 +2,59 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:8:10: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:10:10: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   A<num> fieldOfA; // Error.
 //          ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:9:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:11:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   static A<num> staticFieldOfA; // Error.
 //                 ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:12:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:14:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 // extension E<X extends A<num>> // Error.
 //             ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:14:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:16:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   static A<num> fieldOfE; // Error.
 //                 ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:15:16: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:17:16: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
 // Try changing type arguments so that they conform to the bounds.
 //   A<num> fooOfE() => null; // Error.
 //                ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:16:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:18:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   void barOfE(A<num> a) {} // Error.
 //                      ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:17:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:19:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   void bazOfE<Y extends A<num>>() {} // Error.
 //               ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.transformed.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.transformed.expect
index a688b79..145ed00 100644
--- a/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart.weak.transformed.expect
@@ -2,59 +2,59 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:8:10: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:10:10: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   A<num> fieldOfA; // Error.
 //          ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:9:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:11:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   static A<num> staticFieldOfA; // Error.
 //                 ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:12:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:14:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 // extension E<X extends A<num>> // Error.
 //             ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:14:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:16:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   static A<num> fieldOfE; // Error.
 //                 ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:15:16: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:17:16: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
 // Try changing type arguments so that they conform to the bounds.
 //   A<num> fooOfE() => null; // Error.
 //                ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:16:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:18:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   void barOfE(A<num> a) {} // Error.
 //                      ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:17:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:19:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
 // Try changing type arguments so that they conform to the bounds.
 //   void bazOfE<Y extends A<num>>() {} // Error.
 //               ^
-// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline.dart:7:9: Context: This is the type variable whose bound isn't conformed to.
 // class A<X extends int> {}
 //         ^
 //
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart
new file mode 100644
index 0000000..3eca954
--- /dev/null
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart
@@ -0,0 +1,20 @@
+// 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.
+
+class A<X extends int> {}
+
+class B {
+  A<num>? fieldOfA; // Error.
+  static A<num>? staticFieldOfA; // Error.
+}
+
+extension E<X extends A<num>> // Error.
+    on A {
+  static A<num>? fieldOfE; // Error.
+  A<num>? fooOfE() => null; // Error.
+  void barOfE(A<num> a) {} // Error.
+  void bazOfE<Y extends A<num>>() {} // Error.
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.textual_outline.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.textual_outline.expect
new file mode 100644
index 0000000..84ddb17
--- /dev/null
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.textual_outline.expect
@@ -0,0 +1,15 @@
+class A<X extends int> {}
+
+class B {
+  A<num>? fieldOfA;
+  static A<num>? staticFieldOfA;
+}
+
+extension E<X extends A<num>> on A {
+  static A<num>? fieldOfE;
+  A<num>? fooOfE() => null;
+  void barOfE(A<num> a) {}
+  void bazOfE<Y extends A<num>>() {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..8a06cad
--- /dev/null
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.textual_outline_modelled.expect
@@ -0,0 +1,15 @@
+class A<X extends int> {}
+
+class B {
+  A<num>? fieldOfA;
+  static A<num>? staticFieldOfA;
+}
+
+extension E<X extends A<num>> on A {
+  A<num>? fooOfE() => null;
+  static A<num>? fieldOfE;
+  void barOfE(A<num> a) {}
+  void bazOfE<Y extends A<num>>() {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.expect
new file mode 100644
index 0000000..c19f798
--- /dev/null
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.expect
@@ -0,0 +1,96 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:8:11: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   A<num>? fieldOfA; // Error.
+//           ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:9:18: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   static A<num>? staticFieldOfA; // Error.
+//                  ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:12:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// extension E<X extends A<num>> // Error.
+//             ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:14:18: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   static A<num>? fieldOfE; // Error.
+//                  ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:15:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
+// Try changing type arguments so that they conform to the bounds.
+//   A<num>? fooOfE() => null; // Error.
+//                 ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:16:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   void barOfE(A<num> a) {} // Error.
+//                      ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:17:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   void bazOfE<Y extends A<num>>() {} // Error.
+//               ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A<X extends core::int> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
+    : super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  field self::A<core::num>? fieldOfA = null;
+  static field self::A<core::num>? staticFieldOfA = null;
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+}
+extension E<X extends self::A<core::num>> on self::A<core::int> {
+  static field fieldOfE = self::E|fieldOfE;
+  method fooOfE = self::E|fooOfE;
+  tearoff fooOfE = self::E|get#fooOfE;
+  method barOfE = self::E|barOfE;
+  tearoff barOfE = self::E|get#barOfE;
+  method bazOfE = self::E|bazOfE;
+  tearoff bazOfE = self::E|get#bazOfE;
+}
+static field self::A<core::num>? E|fieldOfE;
+static method E|fooOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → self::A<core::num>?
+  return null;
+static method E|get#fooOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → () → self::A<core::num>?
+  return () → self::A<core::num>? => self::E|fooOfE<self::E|get#fooOfE::X>(#this);
+static method E|barOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this, self::A<core::num> a) → void {}
+static method E|get#barOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → (self::A<core::num>) → void
+  return (self::A<core::num> a) → void => self::E|barOfE<self::E|get#barOfE::X>(#this, a);
+static method E|bazOfE<X extends self::A<core::num>, Y extends self::A<core::num>>(lowered final self::A<core::int> #this) → void {}
+static method E|get#bazOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → <Y extends self::A<core::num>>() → void
+  return <Y extends self::A<core::num>>() → void => self::E|bazOfE<self::E|get#bazOfE::X, Y>(#this);
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.modular.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.modular.expect
new file mode 100644
index 0000000..c19f798
--- /dev/null
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.modular.expect
@@ -0,0 +1,96 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:8:11: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   A<num>? fieldOfA; // Error.
+//           ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:9:18: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   static A<num>? staticFieldOfA; // Error.
+//                  ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:12:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// extension E<X extends A<num>> // Error.
+//             ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:14:18: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   static A<num>? fieldOfE; // Error.
+//                  ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:15:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
+// Try changing type arguments so that they conform to the bounds.
+//   A<num>? fooOfE() => null; // Error.
+//                 ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:16:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   void barOfE(A<num> a) {} // Error.
+//                      ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:17:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   void bazOfE<Y extends A<num>>() {} // Error.
+//               ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A<X extends core::int> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
+    : super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  field self::A<core::num>? fieldOfA = null;
+  static field self::A<core::num>? staticFieldOfA = null;
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+}
+extension E<X extends self::A<core::num>> on self::A<core::int> {
+  static field fieldOfE = self::E|fieldOfE;
+  method fooOfE = self::E|fooOfE;
+  tearoff fooOfE = self::E|get#fooOfE;
+  method barOfE = self::E|barOfE;
+  tearoff barOfE = self::E|get#barOfE;
+  method bazOfE = self::E|bazOfE;
+  tearoff bazOfE = self::E|get#bazOfE;
+}
+static field self::A<core::num>? E|fieldOfE;
+static method E|fooOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → self::A<core::num>?
+  return null;
+static method E|get#fooOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → () → self::A<core::num>?
+  return () → self::A<core::num>? => self::E|fooOfE<self::E|get#fooOfE::X>(#this);
+static method E|barOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this, self::A<core::num> a) → void {}
+static method E|get#barOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → (self::A<core::num>) → void
+  return (self::A<core::num> a) → void => self::E|barOfE<self::E|get#barOfE::X>(#this, a);
+static method E|bazOfE<X extends self::A<core::num>, Y extends self::A<core::num>>(lowered final self::A<core::int> #this) → void {}
+static method E|get#bazOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → <Y extends self::A<core::num>>() → void
+  return <Y extends self::A<core::num>>() → void => self::E|bazOfE<self::E|get#bazOfE::X, Y>(#this);
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.outline.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.outline.expect
new file mode 100644
index 0000000..ed99e3a
--- /dev/null
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.outline.expect
@@ -0,0 +1,97 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:8:11: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   A<num>? fieldOfA; // Error.
+//           ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:9:18: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   static A<num>? staticFieldOfA; // Error.
+//                  ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:12:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// extension E<X extends A<num>> // Error.
+//             ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:14:18: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   static A<num>? fieldOfE; // Error.
+//                  ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:15:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
+// Try changing type arguments so that they conform to the bounds.
+//   A<num>? fooOfE() => null; // Error.
+//                 ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:16:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   void barOfE(A<num> a) {} // Error.
+//                      ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:17:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   void bazOfE<Y extends A<num>>() {} // Error.
+//               ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A<X extends core::int> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
+    ;
+}
+class B extends core::Object {
+  field self::A<core::num>? fieldOfA;
+  static field self::A<core::num>? staticFieldOfA;
+  synthetic constructor •() → self::B
+    ;
+}
+extension E<X extends self::A<core::num>> on self::A<core::int> {
+  static field fieldOfE = self::E|fieldOfE;
+  method fooOfE = self::E|fooOfE;
+  tearoff fooOfE = self::E|get#fooOfE;
+  method barOfE = self::E|barOfE;
+  tearoff barOfE = self::E|get#barOfE;
+  method bazOfE = self::E|bazOfE;
+  tearoff bazOfE = self::E|get#bazOfE;
+}
+static field self::A<core::num>? E|fieldOfE;
+static method E|fooOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → self::A<core::num>?
+  ;
+static method E|get#fooOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → () → self::A<core::num>?
+  return () → self::A<core::num>? => self::E|fooOfE<self::E|get#fooOfE::X>(#this);
+static method E|barOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this, self::A<core::num> a) → void
+  ;
+static method E|get#barOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → (self::A<core::num>) → void
+  return (self::A<core::num> a) → void => self::E|barOfE<self::E|get#barOfE::X>(#this, a);
+static method E|bazOfE<X extends self::A<core::num>, Y extends self::A<core::num>>(lowered final self::A<core::int> #this) → void
+  ;
+static method E|get#bazOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → <Y extends self::A<core::num>>() → void
+  return <Y extends self::A<core::num>>() → void => self::E|bazOfE<self::E|get#bazOfE::X, Y>(#this);
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.transformed.expect
new file mode 100644
index 0000000..c19f798
--- /dev/null
+++ b/pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart.weak.transformed.expect
@@ -0,0 +1,96 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:8:11: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   A<num>? fieldOfA; // Error.
+//           ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:9:18: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   static A<num>? staticFieldOfA; // Error.
+//                  ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:12:13: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+// extension E<X extends A<num>> // Error.
+//             ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:14:18: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   static A<num>? fieldOfE; // Error.
+//                  ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:15:17: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A' in the return type.
+// Try changing type arguments so that they conform to the bounds.
+//   A<num>? fooOfE() => null; // Error.
+//                 ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:16:22: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   void barOfE(A<num> a) {} // Error.
+//                      ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:17:15: Error: Type argument 'num' doesn't conform to the bound 'int' of the type variable 'X' on 'A'.
+// Try changing type arguments so that they conform to the bounds.
+//   void bazOfE<Y extends A<num>>() {} // Error.
+//               ^
+// pkg/front_end/testcases/general/well_boundness_checks_in_outline2.dart:5:9: Context: This is the type variable whose bound isn't conformed to.
+// class A<X extends int> {}
+//         ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A<X extends core::int> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
+    : super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  field self::A<core::num>? fieldOfA = null;
+  static field self::A<core::num>? staticFieldOfA = null;
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+}
+extension E<X extends self::A<core::num>> on self::A<core::int> {
+  static field fieldOfE = self::E|fieldOfE;
+  method fooOfE = self::E|fooOfE;
+  tearoff fooOfE = self::E|get#fooOfE;
+  method barOfE = self::E|barOfE;
+  tearoff barOfE = self::E|get#barOfE;
+  method bazOfE = self::E|bazOfE;
+  tearoff bazOfE = self::E|get#bazOfE;
+}
+static field self::A<core::num>? E|fieldOfE;
+static method E|fooOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → self::A<core::num>?
+  return null;
+static method E|get#fooOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → () → self::A<core::num>?
+  return () → self::A<core::num>? => self::E|fooOfE<self::E|get#fooOfE::X>(#this);
+static method E|barOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this, self::A<core::num> a) → void {}
+static method E|get#barOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → (self::A<core::num>) → void
+  return (self::A<core::num> a) → void => self::E|barOfE<self::E|get#barOfE::X>(#this, a);
+static method E|bazOfE<X extends self::A<core::num>, Y extends self::A<core::num>>(lowered final self::A<core::int> #this) → void {}
+static method E|get#bazOfE<X extends self::A<core::num>>(lowered final self::A<core::int> #this) → <Y extends self::A<core::num>>() → void
+  return <Y extends self::A<core::num>>() → void => self::E|bazOfE<self::E|get#bazOfE::X, Y>(#this);
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index 33aebe0..0bca12b 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -106,6 +106,9 @@
 general/null_aware_super: FormatterCrash
 general/null_safety_invalid_experiment: FormatterCrash
 general/null_safety_invalid_experiment_and_language_version: FormatterCrash
+general/type_parameter_type_named_int: FormatterCrash
+general/type_parameter_usage_in_static_method_in_class: FormatterCrash
+general/type_parameter_usage_in_static_method_in_extension: FormatterCrash
 general/type_parameters_on_void: FormatterCrash
 general/type_variable_in_static_context: FormatterCrash
 general/var_as_type_name: FormatterCrash
diff --git a/runtime/observatory_2/tests/service_2/service_2.status b/runtime/observatory_2/tests/service_2/service_2.status
index 54c0328..d56e17c 100644
--- a/runtime/observatory_2/tests/service_2/service_2.status
+++ b/runtime/observatory_2/tests/service_2/service_2.status
@@ -41,6 +41,9 @@
 dev_fs_weird_char_test: Skip # Windows disallows question mark in paths
 uri_mappings_lookup_test: SkipByDesign # Relies on file paths in the SDK.
 
+[ $arch == ia32 && $mode == debug ]
+break_on_function_many_child_isolates_test: Skip # Times out anyway, so skipping to reduce chance of shard timeout.
+
 [ $compiler == none && $runtime == vm ]
 evaluate_activation_test/instance: RuntimeError # http://dartbug.com/20047
 evaluate_activation_test/scope: RuntimeError # http://dartbug.com/20047
diff --git a/tools/VERSION b/tools/VERSION
index 6533fe6..5d4cdea 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 191
+PRERELEASE 192
 PRERELEASE_PATCH 0
\ No newline at end of file