Version 2.17.0-184.0.dev

Merge commit 'bf40bf4ebb7326468be738329518a8b05303894d' into 'dev'
diff --git a/pkg/analysis_server/test/domain_analysis_test.dart b/pkg/analysis_server/test/domain_analysis_test.dart
index 21b79b3..e2b363c 100644
--- a/pkg/analysis_server/test/domain_analysis_test.dart
+++ b/pkg/analysis_server/test/domain_analysis_test.dart
@@ -7,20 +7,9 @@
 import 'package:analysis_server/protocol/protocol.dart';
 import 'package:analysis_server/protocol/protocol_constants.dart';
 import 'package:analysis_server/protocol/protocol_generated.dart';
-import 'package:analysis_server/src/analysis_server.dart';
-import 'package:analysis_server/src/domain_analysis.dart';
-import 'package:analysis_server/src/server/crash_reporting_attachments.dart';
-import 'package:analysis_server/src/utilities/mocks.dart';
-import 'package:analysis_server/src/utilities/progress.dart';
-import 'package:analyzer/instrumentation/instrumentation.dart';
-import 'package:analyzer/src/generated/sdk.dart';
-import 'package:analyzer/src/test_utilities/mock_sdk.dart';
 import 'package:analyzer/src/test_utilities/package_config_file_builder.dart';
-import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
-import 'package:analyzer_plugin/src/protocol/protocol_internal.dart'
-    show HasToJson;
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
@@ -32,7 +21,6 @@
   defineReflectiveSuite(() {
     defineReflectiveTests(AnalysisDomainBazelTest);
     defineReflectiveTests(AnalysisDomainPubTest);
-    defineReflectiveTests(AnalysisDomainHandlerTest);
     defineReflectiveTests(SetSubscriptionsTest);
   });
 }
@@ -79,272 +67,6 @@
 }
 
 @reflectiveTest
-class AnalysisDomainHandlerTest extends AbstractAnalysisTest {
-  Future<void> outOfRangeTest(SourceEdit edit) async {
-    var helper = AnalysisTestHelper();
-    await helper.createSingleFileProject('library A;');
-    await helper.onAnalysisComplete;
-    helper.sendContentChange(AddContentOverlay('library B;'));
-    await helper.onAnalysisComplete;
-    var contentChange = ChangeContentOverlay([edit]);
-    var request = AnalysisUpdateContentParams({helper.testFile: contentChange})
-        .toRequest('0');
-    var response = helper.handler.handleRequest(request, NotCancelableToken());
-    expect(response,
-        isResponseFailure('0', RequestErrorCode.INVALID_OVERLAY_CHANGE));
-  }
-
-  Future<void> test_setAnalysisRoots_excludedFolder() async {
-    newFile('/project/aaa/a.dart', content: '// a');
-    newFile('/project/bbb/b.dart', content: '// b');
-    var excludedPath = join(projectPath, 'bbb');
-    var response = await testSetAnalysisRoots([projectPath], [excludedPath]);
-    expect(response, isResponseSuccess('0'));
-  }
-
-  Future<void> test_setAnalysisRoots_included_newFolder() async {
-    newPubspecYamlFile('/project', 'name: project');
-    var file = newFile('/project/bin/test.dart', content: 'main() {}').path;
-    var response = await testSetAnalysisRoots([projectPath], []);
-    var serverRef = server;
-    expect(response, isResponseSuccess('0'));
-    // verify that unit is resolved eventually
-    await server.onAnalysisComplete;
-    var resolvedUnit = await serverRef.getResolvedUnit(file);
-    expect(resolvedUnit, isNotNull);
-  }
-
-  Future<void> test_setAnalysisRoots_included_nonexistentFolder() async {
-    var projectA = convertPath('/project_a');
-    var projectB = convertPath('/project_b');
-    var fileB = newFile('/project_b/b.dart', content: '// b').path;
-    var response = await testSetAnalysisRoots([projectA, projectB], []);
-    var serverRef = server;
-    expect(response, isResponseSuccess('0'));
-    // Non-existence of /project_a should not prevent files in /project_b
-    // from being analyzed.
-    await server.onAnalysisComplete;
-    var resolvedUnit = await serverRef.getResolvedUnit(fileB);
-    expect(resolvedUnit, isNotNull);
-  }
-
-  Future<void> test_setAnalysisRoots_included_notAbsolute() async {
-    var response = await testSetAnalysisRoots(['foo/bar'], []);
-    expect(response,
-        isResponseFailure('0', RequestErrorCode.INVALID_FILE_PATH_FORMAT));
-  }
-
-  Future<void> test_setAnalysisRoots_included_notNormalized() async {
-    var response = await testSetAnalysisRoots(['/foo/../bar'], []);
-    expect(response,
-        isResponseFailure('0', RequestErrorCode.INVALID_FILE_PATH_FORMAT));
-  }
-
-  Future<void> test_setAnalysisRoots_notAbsolute() async {
-    var response = await testSetAnalysisRoots([], ['foo/bar']);
-    expect(response,
-        isResponseFailure('0', RequestErrorCode.INVALID_FILE_PATH_FORMAT));
-  }
-
-  Future<void> test_setAnalysisRoots_notNormalized() async {
-    var response = await testSetAnalysisRoots([], ['/foo/../bar']);
-    expect(response,
-        isResponseFailure('0', RequestErrorCode.INVALID_FILE_PATH_FORMAT));
-  }
-
-  void test_setPriorityFiles_invalid() {
-    var request = AnalysisSetPriorityFilesParams(
-      [convertPath('/project/lib.dart')],
-    ).toRequest('0');
-    var response = handler.handleRequest(request, NotCancelableToken());
-    expect(response, isResponseSuccess('0'));
-  }
-
-  Future<void> test_setPriorityFiles_valid() async {
-    var p1 = convertPath('/p1');
-    var p2 = convertPath('/p2');
-    var aPath = convertPath('/p1/a.dart');
-    var bPath = convertPath('/p2/b.dart');
-    var cPath = convertPath('/p2/c.dart');
-    newFile(aPath, content: 'library a;');
-    newFile(bPath, content: 'library b;');
-    newFile(cPath, content: 'library c;');
-
-    await setRoots(included: [p1, p2], excluded: []);
-
-    void setPriorityFiles(List<String> fileList) {
-      var request = AnalysisSetPriorityFilesParams(fileList).toRequest('0');
-      var response = handler.handleRequest(request, NotCancelableToken());
-      expect(response, isResponseSuccess('0'));
-      // TODO(brianwilkerson) Enable the line below after getPriorityFiles
-      // has been implemented.
-      // expect(server.getPriorityFiles(), unorderedEquals(fileList));
-    }
-
-    setPriorityFiles([aPath, bPath]);
-    setPriorityFiles([bPath, cPath]);
-    setPriorityFiles([]);
-  }
-
-  Future<void> test_updateContent_badType() async {
-    var helper = AnalysisTestHelper();
-    await helper.createSingleFileProject('// empty');
-    await helper.onAnalysisComplete;
-    var request = Request('0', ANALYSIS_REQUEST_UPDATE_CONTENT, {
-      ANALYSIS_REQUEST_UPDATE_CONTENT_FILES: {
-        helper.testFile: {
-          'type': 'foo',
-        }
-      }
-    });
-    var response = helper.handler.handleRequest(request, NotCancelableToken());
-    expect(response, isResponseFailure('0'));
-  }
-
-  Future<void> test_updateContent_changeOnDisk_duringOverride() async {
-    var helper = AnalysisTestHelper();
-    await helper.createSingleFileProject('library A;');
-    await helper.onAnalysisComplete;
-    // update code
-    helper.sendContentChange(AddContentOverlay('library B;'));
-    // There should be no errors
-    await helper.onAnalysisComplete;
-    expect(helper.getTestErrors(), hasLength(0));
-    // Change file on disk, adding a syntax error.
-    helper.resourceProvider.modifyFile(helper.testFile, 'library lib');
-    // There should still be no errors (file should not have been reread).
-    await helper.onAnalysisComplete;
-    expect(helper.getTestErrors(), hasLength(0));
-    // Send a content change with a null content param--file should be
-    // reread from disk.
-    helper.sendContentChange(RemoveContentOverlay());
-    // There should be errors now.
-    await helper.onAnalysisComplete;
-    expect(helper.getTestErrors(), hasLength(1));
-  }
-
-  Future<void> test_updateContent_changeOnDisk_normal() async {
-    var helper = AnalysisTestHelper();
-    await helper.createSingleFileProject('library A;');
-    await helper.onAnalysisComplete;
-    // There should be no errors
-    expect(helper.getTestErrors(), hasLength(0));
-    // Change file on disk, adding a syntax error.
-    helper.resourceProvider.modifyFile(helper.testFile, 'library lib');
-    // There should be errors now.
-    await pumpEventQueue();
-    await helper.onAnalysisComplete;
-    expect(helper.getTestErrors(), hasLength(1));
-  }
-
-  Future<void> test_updateContent_fullContent() async {
-    var helper = AnalysisTestHelper();
-    await helper.createSingleFileProject('// empty');
-    await helper.onAnalysisComplete;
-    // no errors initially
-    var errors = helper.getTestErrors();
-    expect(errors, isEmpty);
-    // update code
-    helper.sendContentChange(AddContentOverlay('library lib'));
-    // wait, there is an error
-    await helper.onAnalysisComplete;
-    errors = helper.getTestErrors();
-    expect(errors, hasLength(1));
-  }
-
-  Future<void> test_updateContent_incremental() async {
-    var helper = AnalysisTestHelper();
-    var initialContent = 'library A;';
-    await helper.createSingleFileProject(initialContent);
-    await helper.onAnalysisComplete;
-    // no errors initially
-    var errors = helper.getTestErrors();
-    expect(errors, isEmpty);
-    // Add the file to the cache
-    helper.sendContentChange(AddContentOverlay(initialContent));
-    // update code
-    helper.sendContentChange(ChangeContentOverlay(
-        [SourceEdit('library '.length, 'A;'.length, 'lib')]));
-    // wait, there is an error
-    await helper.onAnalysisComplete;
-    errors = helper.getTestErrors();
-    expect(errors, hasLength(1));
-  }
-
-  Future<void> test_updateContent_outOfRange_beyondEnd() {
-    return outOfRangeTest(SourceEdit(6, 6, 'foo'));
-  }
-
-  Future<void> test_updateContent_outOfRange_negativeLength() {
-    return outOfRangeTest(SourceEdit(3, -1, 'foo'));
-  }
-
-  Future<void> test_updateContent_outOfRange_negativeOffset() {
-    return outOfRangeTest(SourceEdit(-1, 3, 'foo'));
-  }
-
-  void test_updateOptions_invalid() {
-    var request = Request('0', ANALYSIS_REQUEST_UPDATE_OPTIONS, {
-      ANALYSIS_REQUEST_UPDATE_OPTIONS_OPTIONS: {'not-an-option': true}
-    });
-    var response = handler.handleRequest(request, NotCancelableToken());
-    // Invalid options should be silently ignored.
-    expect(response, isResponseSuccess('0'));
-  }
-
-  void test_updateOptions_null() {
-    // null is allowed as a synonym for {}.
-    var request = Request('0', ANALYSIS_REQUEST_UPDATE_OPTIONS,
-        {ANALYSIS_REQUEST_UPDATE_OPTIONS_OPTIONS: null});
-    var response = handler.handleRequest(request, NotCancelableToken());
-    expect(response, isResponseSuccess('0'));
-  }
-
-  Future<Response> testSetAnalysisRoots(
-      List<String> included, List<String> excluded) {
-    return setRoots(
-        included: included, excluded: excluded, validateSuccessResponse: false);
-  }
-
-  Future<void> xtest_getReachableSources_invalidSource() async {
-    // TODO(brianwilkerson) Re-enable this test if we re-enable the
-    // analysis.getReachableSources request.
-    newFile('/project/a.dart', content: 'import "b.dart";');
-    await server.setAnalysisRoots('0', ['/project/'], []);
-
-    await server.onAnalysisComplete;
-
-    var request = AnalysisGetReachableSourcesParams('/does/not/exist.dart')
-        .toRequest('0');
-    var response = handler.handleRequest(request, NotCancelableToken())!;
-    var error = response.error!;
-    expect(error.code, RequestErrorCode.GET_REACHABLE_SOURCES_INVALID_FILE);
-  }
-
-  Future<void> xtest_getReachableSources_validSources() async {
-    // TODO(brianwilkerson) Re-enable this test if we re-enable the
-    // analysis.getReachableSources request.
-    var fileA = newFile('/project/a.dart', content: 'import "b.dart";').path;
-    newFile('/project/b.dart');
-
-    await server.setAnalysisRoots('0', ['/project/'], []);
-
-    await server.onAnalysisComplete;
-
-    var request = AnalysisGetReachableSourcesParams(fileA).toRequest('0');
-    var response = handler.handleRequest(request, NotCancelableToken())!;
-
-    var json = response.toJson()[Response.RESULT] as Map<String, dynamic>;
-
-    // Sanity checks.
-    expect(json['sources'], hasLength(6));
-    expect(json['sources']['file:///project/a.dart'],
-        unorderedEquals(['dart:core', 'file:///project/b.dart']));
-    expect(json['sources']['file:///project/b.dart'], ['dart:core']);
-  }
-}
-
-@reflectiveTest
 class AnalysisDomainPubTest extends _AnalysisDomainTest {
   Future<void> test_fileSystem_addFile_analysisOptions() async {
     deleteTestPackageAnalysisOptionsFile();
@@ -908,6 +630,52 @@
     _assertFlushedResults([]);
   }
 
+  Future<void> test_fileSystem_changeFile_hasOverlay_removeOverlay() async {
+    newFile(testFilePath, content: '');
+
+    // Add an overlay without errors.
+    await handleSuccessfulRequest(
+      AnalysisUpdateContentParams({
+        testFilePathPlatform: AddContentOverlay(''),
+      }).toRequest('0'),
+    );
+
+    await setRoots(included: [workspaceRootPath], excluded: []);
+
+    // The test file is analyzed, no errors.
+    await server.onAnalysisComplete;
+    _assertAnalyzedFiles(
+      hasErrors: [],
+      noErrors: [testFilePathPlatform],
+      notAnalyzed: [],
+    );
+
+    // Change the file, has errors.
+    newFile(testFilePath, content: 'error');
+
+    // But the overlay is still present, so the file is not analyzed.
+    await server.onAnalysisComplete;
+    _assertAnalyzedFiles(
+      hasErrors: [],
+      notAnalyzed: [testFilePathPlatform],
+    );
+
+    // Remove the overlay, now the file will be read.
+    await handleSuccessfulRequest(
+      AnalysisUpdateContentParams({
+        testFilePathPlatform: RemoveContentOverlay(),
+      }).toRequest('0'),
+    );
+
+    // The file has errors.
+    await server.onAnalysisComplete;
+    _assertAnalyzedFiles(
+      hasErrors: [testFilePathPlatform],
+      noErrors: [],
+      notAnalyzed: [],
+    );
+  }
+
   Future<void> test_fileSystem_changeFile_packageConfigJsonFile() async {
     var aaaRootPath = '/packages/aaa';
     var a_path = '$aaaRootPath/lib/a.dart';
@@ -1163,6 +931,62 @@
     assertNoErrorsNotification(a_path);
   }
 
+  Future<void> test_setPriorityFiles() async {
+    var a = getFile('$workspaceRootPath/foo/lib/a.dart');
+    var b = getFile('$workspaceRootPath/foo/lib/b.dart');
+    var c = getFile('$workspaceRootPath/bar/lib/c.dart');
+    var d = getFile('$workspaceRootPath/bar/lib/d.dart');
+
+    a.writeAsStringSync('');
+    b.writeAsStringSync('');
+    c.writeAsStringSync('');
+    d.writeAsStringSync('');
+
+    await handleSuccessfulRequest(
+      AnalysisSetPriorityFilesParams(
+        [a.path, c.path],
+      ).toRequest('0'),
+    );
+
+    await setRoots(included: [workspaceRootPath], excluded: []);
+
+    var hasPath = <String>{};
+    for (var notification in analysisErrorsNotifications) {
+      var path = notification.file;
+      if (!hasPath.add(path)) {
+        fail('Duplicate: $path');
+      } else if (path == a.path || path == c.path) {
+        if (hasPath.contains(b.path) || hasPath.contains(d.path)) {
+          fail('Priority after non-priority');
+        }
+      }
+    }
+  }
+
+  Future<void> test_setPriorityFiles_notAbsolute() async {
+    var response = await handleRequest(
+      AnalysisSetPriorityFilesParams(
+        ['a.dart'],
+      ).toRequest('0'),
+    );
+
+    expect(
+      response,
+      isResponseFailure(
+        '0',
+        RequestErrorCode.INVALID_FILE_PATH_FORMAT,
+      ),
+    );
+  }
+
+  Future<void> test_setPriorityFiles_withoutRoots() async {
+    await handleSuccessfulRequest(
+      AnalysisSetPriorityFilesParams(
+        [convertPath('$testPackageLibPath/a.dart')],
+      ).toRequest('0'),
+    );
+  }
+
   Future<void> test_setRoots_dotPackagesFile() async {
     deleteTestPackageConfigJsonFile();
     var aaaLibPath = '/packages/aaa/lib';
@@ -1192,6 +1016,78 @@
     assertNoErrorsNotification(a_path);
   }
 
+  Future<void> test_setRoots_excluded_notAbsolute() async {
+    var response = await handleRequest(
+      AnalysisSetAnalysisRootsParams(
+        [workspaceRootPath],
+        ['foo'],
+        packageRoots: {},
+      ).toRequest('0'),
+    );
+
+    expect(
+      response,
+      isResponseFailure(
+        '0',
+        RequestErrorCode.INVALID_FILE_PATH_FORMAT,
+      ),
+    );
+  }
+
+  Future<void> test_setRoots_excluded_notNormalized() async {
+    var response = await handleRequest(
+      AnalysisSetAnalysisRootsParams(
+        [workspaceRootPath],
+        [convertPath('/foo/../bar')],
+        packageRoots: {},
+      ).toRequest('0'),
+    );
+
+    expect(
+      response,
+      isResponseFailure(
+        '0',
+        RequestErrorCode.INVALID_FILE_PATH_FORMAT,
+      ),
+    );
+  }
+
+  Future<void> test_setRoots_included_notAbsolute() async {
+    var response = await handleRequest(
+      AnalysisSetAnalysisRootsParams(
+        ['foo'],
+        [],
+        packageRoots: {},
+      ).toRequest('0'),
+    );
+
+    expect(
+      response,
+      isResponseFailure(
+        '0',
+        RequestErrorCode.INVALID_FILE_PATH_FORMAT,
+      ),
+    );
+  }
+
+  Future<void> test_setRoots_included_notNormalized() async {
+    var response = await handleRequest(
+      AnalysisSetAnalysisRootsParams(
+        [convertPath('/foo/../bar')],
+        [],
+        packageRoots: {},
+      ).toRequest('0'),
+    );
+
+    expect(
+      response,
+      isResponseFailure(
+        '0',
+        RequestErrorCode.INVALID_FILE_PATH_FORMAT,
+      ),
+    );
+  }
+
   Future<void> test_setRoots_includedFile() async {
     var a_path = '$testPackageLibPath/a.dart';
     var b_path = '$testPackageLibPath/b.dart';
@@ -1323,6 +1219,30 @@
     );
   }
 
+  Future<void> test_setRoots_includedFolder_notExisting() async {
+    var existingFolder_path = '$testPackageLibPath/exiting';
+    var notExistingFolder_path = '$testPackageLibPath/notExisting';
+    var existingFile_path = '$existingFolder_path/1.dart';
+    var notExistingFile_path = '$notExistingFolder_path/1.dart';
+
+    _createFilesWithErrors([
+      existingFile_path,
+    ]);
+
+    await setRoots(included: [
+      existingFolder_path,
+      notExistingFolder_path,
+    ], excluded: []);
+    await server.onAnalysisComplete;
+
+    // The not existing root does not prevent analysis of the existing one.
+    _assertAnalyzedFiles(hasErrors: [
+      existingFile_path,
+    ], notAnalyzed: [
+      notExistingFile_path,
+    ]);
+  }
+
   Future<void> test_setRoots_notDartFile_androidManifestXml() async {
     var path = '$testPackageRootPath/AndroidManifest.xml';
 
@@ -1381,198 +1301,123 @@
     // errors are not reported for packages
     assertNoErrorsNotification(a_path);
   }
-}
 
-/// A helper to test 'analysis.*' requests.
-class AnalysisTestHelper with ResourceProviderMixin {
-  late MockServerChannel serverChannel;
-  late AnalysisServer server;
-  late AnalysisDomainHandler handler;
+  Future<void> test_updateContent_addOverlay() async {
+    newFile('$testFilePath', content: 'error');
 
-  Map<AnalysisService, List<String>> analysisSubscriptions = {};
+    await setRoots(included: [workspaceRootPath], excluded: []);
 
-  Map<String, List<AnalysisError>> filesErrors = {};
-  Map<String, List<HighlightRegion>> filesHighlights = {};
-  Map<String, List<NavigationRegion>> filesNavigation = {};
-
-  late String projectPath;
-  late String testFile;
-  late String testCode;
-
-  AnalysisTestHelper() {
-    projectPath = convertPath('/project');
-    testFile = convertPath('/project/bin/test.dart');
-    serverChannel = MockServerChannel();
-
-    // Create an SDK in the mock file system.
-    var sdkRoot = newFolder('/sdk');
-    createMockSdk(
-      resourceProvider: resourceProvider,
-      root: sdkRoot,
+    // The file in the file system has errors.
+    await server.onAnalysisComplete;
+    _assertAnalyzedFiles(
+      hasErrors: [testFilePathPlatform],
+      noErrors: [],
+      notAnalyzed: [],
     );
 
-    server = AnalysisServer(
-        serverChannel,
-        resourceProvider,
-        AnalysisServerOptions(),
-        DartSdkManager(sdkRoot.path),
-        CrashReportingAttachmentsBuilder.empty,
-        InstrumentationService.NULL_SERVICE);
-    handler = AnalysisDomainHandler(server);
-    // listen for notifications
-    serverChannel.notifications.listen((Notification notification) {
-      if (notification.event == ANALYSIS_NOTIFICATION_ERRORS) {
-        var decoded = AnalysisErrorsParams.fromNotification(notification);
-        filesErrors[decoded.file] = decoded.errors;
-      }
-      if (notification.event == ANALYSIS_NOTIFICATION_HIGHLIGHTS) {
-        var params = AnalysisHighlightsParams.fromNotification(notification);
-        filesHighlights[params.file] = params.regions;
-      }
-      if (notification.event == ANALYSIS_NOTIFICATION_NAVIGATION) {
-        var params = AnalysisNavigationParams.fromNotification(notification);
-        filesNavigation[params.file] = params.regions;
-      }
-    });
+    // Add an overlay without errors.
+    await handleSuccessfulRequest(
+      AnalysisUpdateContentParams({
+        testFilePathPlatform: AddContentOverlay(''),
+      }).toRequest('0'),
+    );
+
+    // A new errors notification was received, no errors.
+    await server.onAnalysisComplete;
+    _assertAnalyzedFiles(
+      hasErrors: [],
+      noErrors: [testFilePathPlatform],
+      notAnalyzed: [],
+    );
   }
 
-  /// Returns a [Future] that completes when the server's analysis is complete.
-  Future get onAnalysisComplete {
-    return server.onAnalysisComplete;
+  Future<void> test_updateContent_changeOverlay() async {
+    newFile('$testFilePath', content: '');
+
+    // Add the content with an error.
+    await handleSuccessfulRequest(
+      AnalysisUpdateContentParams({
+        testFilePathPlatform: AddContentOverlay('var v = 0'),
+      }).toRequest('0'),
+    );
+
+    await setRoots(included: [workspaceRootPath], excluded: []);
+
+    // The overlay has an error.
+    await server.onAnalysisComplete;
+    _assertAnalyzedFiles(
+      hasErrors: [testFilePathPlatform],
+      noErrors: [],
+      notAnalyzed: [],
+    );
+
+    // Add the missing `;`.
+    await handleSuccessfulRequest(
+      AnalysisUpdateContentParams({
+        testFilePathPlatform: ChangeContentOverlay([
+          SourceEdit(9, 0, ';'),
+        ]),
+      }).toRequest('0'),
+    );
+
+    // A new errors notification was received, no errors.
+    await server.onAnalysisComplete;
+    _assertAnalyzedFiles(
+      hasErrors: [],
+      noErrors: [testFilePathPlatform],
+      notAnalyzed: [],
+    );
   }
 
-  void addAnalysisSubscription(AnalysisService service, String file) {
-    // add file to subscription
-    var files = analysisSubscriptions[service];
-    if (files == null) {
-      files = <String>[];
-      analysisSubscriptions[service] = files;
-    }
-    files.add(file);
-    // set subscriptions
-    var request =
-        AnalysisSetSubscriptionsParams(analysisSubscriptions).toRequest('0');
-    handleSuccessfulRequest(request);
+  Future<void> test_updateContent_notAbsolute() async {
+    var response = await handleRequest(
+      AnalysisUpdateContentParams({
+        'a.dart': AddContentOverlay(''),
+      }).toRequest('0'),
+    );
+    expect(response, isResponseFailure('0'));
   }
 
-  void addAnalysisSubscriptionHighlights(String file) {
-    addAnalysisSubscription(AnalysisService.HIGHLIGHTS, file);
+  Future<void> test_updateContent_outOfRange_beyondEnd() {
+    return _updateContent_outOfRange('012', SourceEdit(0, 5, 'foo'));
   }
 
-  void addAnalysisSubscriptionNavigation(String file) {
-    addAnalysisSubscription(AnalysisService.NAVIGATION, file);
+  Future<void> test_updateContent_outOfRange_negativeLength() {
+    return _updateContent_outOfRange('', SourceEdit(3, -1, 'foo'));
   }
 
-  /// Creates an empty project `/project`.
-  void createEmptyProject() {
-    newFolder(projectPath);
-    var request =
-        AnalysisSetAnalysisRootsParams([projectPath], []).toRequest('0');
-    handleSuccessfulRequest(request);
+  Future<void> test_updateContent_outOfRange_negativeOffset() {
+    return _updateContent_outOfRange('', SourceEdit(-1, 3, 'foo'));
   }
 
-  /// Creates a project with a single Dart file `/project/bin/test.dart` with
-  /// the given [code].
-  Future<void> createSingleFileProject(code) async {
-    testCode = _getCodeString(code);
-    newFolder(projectPath);
-    newFile(testFile, content: testCode);
-    await setRoots(included: [projectPath], excluded: []);
-  }
+  Future<void> _updateContent_outOfRange(
+    String initialContent,
+    SourceEdit edit,
+  ) async {
+    newFile('$testFilePath', content: initialContent);
 
-  /// Returns the offset of [search] in [testCode].
-  /// Fails if not found.
-  int findOffset(String search) {
-    var offset = testCode.indexOf(search);
-    expect(offset, isNot(-1));
-    return offset;
-  }
+    await setRoots(included: [workspaceRootPath], excluded: []);
+    await server.onAnalysisComplete;
 
-  /// Returns [AnalysisError]s recorded for the given [file].
-  /// May be empty, but not `null`.
-  List<AnalysisError> getErrors(String file) {
-    var errors = filesErrors[file];
-    if (errors != null) {
-      return errors;
-    }
-    return <AnalysisError>[];
-  }
+    await handleSuccessfulRequest(
+      AnalysisUpdateContentParams({
+        testFilePathPlatform: AddContentOverlay(initialContent),
+      }).toRequest('0'),
+    );
 
-  /// Returns highlights recorded for the given [file].
-  /// May be empty, but not `null`.
-  List<HighlightRegion> getHighlights(String file) {
-    var highlights = filesHighlights[file];
-    if (highlights != null) {
-      return highlights;
-    }
-    return [];
-  }
+    var response = await handleRequest(
+      AnalysisUpdateContentParams({
+        testFilePathPlatform: ChangeContentOverlay([edit]),
+      }).toRequest('0'),
+    );
 
-  /// Returns navigation regions recorded for the given [file].
-  /// May be empty, but not `null`.
-  List<NavigationRegion> getNavigation(String file) {
-    var navigation = filesNavigation[file];
-    if (navigation != null) {
-      return navigation;
-    }
-    return [];
-  }
-
-  /// Returns [AnalysisError]s recorded for the [testFile].
-  /// May be empty, but not `null`.
-  List<AnalysisError> getTestErrors() {
-    return getErrors(testFile);
-  }
-
-  /// Returns highlights recorded for the given [testFile].
-  /// May be empty, but not `null`.
-  List<HighlightRegion> getTestHighlights() {
-    return getHighlights(testFile);
-  }
-
-  /// Returns navigation information recorded for the given [testFile].
-  /// May be empty, but not `null`.
-  List<NavigationRegion> getTestNavigation() {
-    return getNavigation(testFile);
-  }
-
-  /// Validates that the given [request] is handled successfully.
-  void handleSuccessfulRequest(Request request) {
-    var response = handler.handleRequest(request, NotCancelableToken());
-    expect(response, isResponseSuccess('0'));
-  }
-
-  /// Send an `updateContent` request for [testFile].
-  void sendContentChange(HasToJson contentChange) {
-    var request =
-        AnalysisUpdateContentParams({testFile: contentChange}).toRequest('0');
-    handleSuccessfulRequest(request);
-  }
-
-  Future<void> setRoots(
-      {required List<String> included, required List<String> excluded}) async {
-    var request =
-        AnalysisSetAnalysisRootsParams(included, excluded).toRequest('0');
-    var response = await waitResponse(request);
-    expect(response, isResponseSuccess(request.id));
-  }
-
-  /// Stops the associated server.
-  void stopServer() {
-    server.done();
-  }
-
-  /// Completes with a successful [Response] for the given [request].
-  /// Otherwise fails.
-  Future<Response> waitResponse(Request request) async {
-    return serverChannel.sendRequest(request);
-  }
-
-  static String _getCodeString(code) {
-    if (code is List<String>) {
-      code = code.join('\n');
-    }
-    return code as String;
+    expect(
+      response,
+      isResponseFailure(
+        '0',
+        RequestErrorCode.INVALID_OVERLAY_CHANGE,
+      ),
+    );
   }
 }
 
@@ -1729,6 +1574,7 @@
 }
 
 class _AnalysisDomainTest extends PubPackageAnalysisServerTest {
+  final List<AnalysisErrorsParams> analysisErrorsNotifications = [];
   final Map<String, List<AnalysisError>> filesErrors = {};
 
   /// The files for which `analysis.flushResults` was received.
@@ -1762,6 +1608,7 @@
     }
     if (notification.event == ANALYSIS_NOTIFICATION_ERRORS) {
       var decoded = AnalysisErrorsParams.fromNotification(notification);
+      analysisErrorsNotifications.add(decoded);
       filesErrors[decoded.file] = decoded.errors;
     }
   }
diff --git a/pkg/analysis_server/test/domain_completion_test.dart b/pkg/analysis_server/test/domain_completion_test.dart
index 37bf033..3618cc0 100644
--- a/pkg/analysis_server/test/domain_completion_test.dart
+++ b/pkg/analysis_server/test/domain_completion_test.dart
@@ -249,7 +249,7 @@
       libraryUri,
     ).toRequest('0');
 
-    var response = await _handleSuccessfulRequest(request);
+    var response = await handleSuccessfulRequest(request);
     return CompletionGetSuggestionDetails2Result.fromResponse(response);
   }
 
@@ -328,7 +328,7 @@
     var request = _sendTestCompletionRequest('0', 0);
 
     // Simulate typing in the IDE.
-    await _handleSuccessfulRequest(
+    await handleSuccessfulRequest(
       AnalysisUpdateContentParams({
         testFilePathPlatform: AddContentOverlay('void f() {}'),
       }).toRequest('1'),
@@ -1973,7 +1973,7 @@
       maxResults,
     ).toRequest('0');
 
-    var response = await _handleSuccessfulRequest(request);
+    var response = await handleSuccessfulRequest(request);
     var result = CompletionGetSuggestions2Result.fromResponse(response);
     return CompletionResponseForTesting(
       requestOffset: completionOffset,
@@ -2963,6 +2963,13 @@
     return await serverChannel.sendRequest(request);
   }
 
+  /// Validates that the given [request] is handled successfully.
+  Future<Response> handleSuccessfulRequest(Request request) async {
+    var response = await handleRequest(request);
+    expect(response, isResponseSuccess(request.id));
+    return response;
+  }
+
   void processNotification(Notification notification) {}
 
   Future<void> setRoots({
@@ -2971,7 +2978,7 @@
   }) async {
     var includedConverted = included.map(convertPath).toList();
     var excludedConverted = excluded.map(convertPath).toList();
-    await _handleSuccessfulRequest(
+    await handleSuccessfulRequest(
       AnalysisSetAnalysisRootsParams(
         includedConverted,
         excludedConverted,
@@ -3053,13 +3060,6 @@
     await setRoots(included: [workspaceRootPath], excluded: []);
     await server.onAnalysisComplete;
   }
-
-  /// Validates that the given [request] is handled successfully.
-  Future<Response> _handleSuccessfulRequest(Request request) async {
-    var response = await handleRequest(request);
-    expect(response, isResponseSuccess(request.id));
-    return response;
-  }
 }
 
 class RequestWithFutureResponse {
diff --git a/pkg/front_end/testcases/general/issue129167943.dart b/pkg/front_end/testcases/general/issue129167943.dart
index 73d1967..c7560ea 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart
+++ b/pkg/front_end/testcases/general/issue129167943.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
-
 abstract class A {}
 
 abstract class B {
diff --git a/pkg/front_end/testcases/general/issue129167943.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue129167943.dart.textual_outline.expect
index 88e4708..2d33b0a 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue129167943.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class A {}
 
 abstract class B {
diff --git a/pkg/front_end/testcases/general/issue129167943.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue129167943.dart.textual_outline_modelled.expect
index c1dd876..3d5bb93 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue129167943.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class A {}
 
 abstract class B {
diff --git a/pkg/front_end/testcases/general/issue129167943.dart.weak.expect b/pkg/front_end/testcases/general/issue129167943.dart.weak.expect
index dbcaed7..8ec3fec 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue129167943.dart.weak.expect
@@ -1,244 +1,94 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract method foo(core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(core::num x) → void;
 }
 abstract class C extends core::Object implements self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D1*
+  synthetic constructor •() → self::D1
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D2*
+  synthetic constructor •() → self::D2
     : super core::Object::•()
     ;
-  method foo(covariant-by-declaration core::int* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo(covariant-by-declaration core::int x) → void {}
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D3*
+  synthetic constructor •() → self::D3
     : 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 forwarding-stub method foo(covariant-by-declaration core::num* x) → void;
+  abstract forwarding-stub method foo(covariant-by-declaration core::num x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D4*
+  synthetic constructor •() → self::D4
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D5*
+  synthetic constructor •() → self::D5
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::num x) → void;
 }
 abstract class E extends core::Object {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super core::Object::•()
     ;
-  abstract set foo(core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(core::num x) → void;
 }
 abstract class G extends core::Object implements self::E {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H1*
+  synthetic constructor •() → self::H1
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H2*
+  synthetic constructor •() → self::H2
     : super core::Object::•()
     ;
-  set foo(covariant-by-declaration core::int* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set foo(covariant-by-declaration core::int x) → void {}
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H3*
+  synthetic constructor •() → self::H3
     : 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 forwarding-stub set foo(covariant-by-declaration core::num* x) → void;
+  abstract forwarding-stub set foo(covariant-by-declaration core::num x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H4*
+  synthetic constructor •() → self::H4
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H5*
+  synthetic constructor •() → self::H5
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::num x) → void;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue129167943.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue129167943.dart.weak.modular.expect
index dbcaed7..8ec3fec 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue129167943.dart.weak.modular.expect
@@ -1,244 +1,94 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract method foo(core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(core::num x) → void;
 }
 abstract class C extends core::Object implements self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D1*
+  synthetic constructor •() → self::D1
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D2*
+  synthetic constructor •() → self::D2
     : super core::Object::•()
     ;
-  method foo(covariant-by-declaration core::int* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo(covariant-by-declaration core::int x) → void {}
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D3*
+  synthetic constructor •() → self::D3
     : 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 forwarding-stub method foo(covariant-by-declaration core::num* x) → void;
+  abstract forwarding-stub method foo(covariant-by-declaration core::num x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D4*
+  synthetic constructor •() → self::D4
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D5*
+  synthetic constructor •() → self::D5
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::num x) → void;
 }
 abstract class E extends core::Object {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super core::Object::•()
     ;
-  abstract set foo(core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(core::num x) → void;
 }
 abstract class G extends core::Object implements self::E {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H1*
+  synthetic constructor •() → self::H1
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H2*
+  synthetic constructor •() → self::H2
     : super core::Object::•()
     ;
-  set foo(covariant-by-declaration core::int* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set foo(covariant-by-declaration core::int x) → void {}
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H3*
+  synthetic constructor •() → self::H3
     : 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 forwarding-stub set foo(covariant-by-declaration core::num* x) → void;
+  abstract forwarding-stub set foo(covariant-by-declaration core::num x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H4*
+  synthetic constructor •() → self::H4
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H5*
+  synthetic constructor •() → self::H5
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::num x) → void;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue129167943.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue129167943.dart.weak.outline.expect
index 6d18c9a..e4d23f9 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue129167943.dart.weak.outline.expect
@@ -1,232 +1,82 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  abstract method foo(core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(core::num x) → void;
 }
 abstract class C extends core::Object implements self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D1*
+  synthetic constructor •() → self::D1
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D2*
+  synthetic constructor •() → self::D2
     ;
-  method foo(covariant-by-declaration core::int* x) → void
+  method foo(covariant-by-declaration core::int x) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D3*
+  synthetic constructor •() → self::D3
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 forwarding-stub method foo(covariant-by-declaration core::num* x) → void;
+  abstract forwarding-stub method foo(covariant-by-declaration core::num x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D4*
+  synthetic constructor •() → self::D4
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D5*
+  synthetic constructor •() → self::D5
     ;
-  abstract method foo(covariant-by-declaration core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::num x) → void;
 }
 abstract class E extends core::Object {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
-  abstract set foo(core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(core::num x) → void;
 }
 abstract class G extends core::Object implements self::E {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H1*
+  synthetic constructor •() → self::H1
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H2*
+  synthetic constructor •() → self::H2
     ;
-  set foo(covariant-by-declaration core::int* x) → void
+  set foo(covariant-by-declaration core::int x) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H3*
+  synthetic constructor •() → self::H3
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 forwarding-stub set foo(covariant-by-declaration core::num* x) → void;
+  abstract forwarding-stub set foo(covariant-by-declaration core::num x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H4*
+  synthetic constructor •() → self::H4
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H5*
+  synthetic constructor •() → self::H5
     ;
-  abstract set foo(covariant-by-declaration core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::num x) → void;
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue129167943.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue129167943.dart.weak.transformed.expect
index dbcaed7..8ec3fec 100644
--- a/pkg/front_end/testcases/general/issue129167943.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue129167943.dart.weak.transformed.expect
@@ -1,244 +1,94 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract method foo(core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(core::num x) → void;
 }
 abstract class C extends core::Object implements self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 abstract class D1 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D1*
+  synthetic constructor •() → self::D1
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 class D2 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D2*
+  synthetic constructor •() → self::D2
     : super core::Object::•()
     ;
-  method foo(covariant-by-declaration core::int* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo(covariant-by-declaration core::int x) → void {}
 }
 abstract class D3 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D3*
+  synthetic constructor •() → self::D3
     : 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 forwarding-stub method foo(covariant-by-declaration core::num* x) → void;
+  abstract forwarding-stub method foo(covariant-by-declaration core::num x) → void;
 }
 abstract class D4 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D4*
+  synthetic constructor •() → self::D4
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::int x) → void;
 }
 abstract class D5 extends core::Object implements self::A, self::C, self::B {
-  synthetic constructor •() → self::D5*
+  synthetic constructor •() → self::D5
     : super core::Object::•()
     ;
-  abstract method foo(covariant-by-declaration core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method foo(covariant-by-declaration core::num x) → void;
 }
 abstract class E extends core::Object {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super core::Object::•()
     ;
-  abstract set foo(core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(core::num x) → void;
 }
 abstract class G extends core::Object implements self::E {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 abstract class H1 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H1*
+  synthetic constructor •() → self::H1
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 class H2 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H2*
+  synthetic constructor •() → self::H2
     : super core::Object::•()
     ;
-  set foo(covariant-by-declaration core::int* x) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set foo(covariant-by-declaration core::int x) → void {}
 }
 abstract class H3 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H3*
+  synthetic constructor •() → self::H3
     : 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 forwarding-stub set foo(covariant-by-declaration core::num* x) → void;
+  abstract forwarding-stub set foo(covariant-by-declaration core::num x) → void;
 }
 abstract class H4 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H4*
+  synthetic constructor •() → self::H4
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::int* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::int x) → void;
 }
 abstract class H5 extends core::Object implements self::A, self::E, self::G {
-  synthetic constructor •() → self::H5*
+  synthetic constructor •() → self::H5
     : super core::Object::•()
     ;
-  abstract set foo(covariant-by-declaration core::num* x) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set foo(covariant-by-declaration core::num x) → void;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue31767.dart b/pkg/front_end/testcases/general/issue31767.dart
index 4a9997b..045dced 100644
--- a/pkg/front_end/testcases/general/issue31767.dart
+++ b/pkg/front_end/testcases/general/issue31767.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // @dart=2.9
 
 import 'issue31767_lib.dart';
diff --git a/pkg/front_end/testcases/general/issue31767.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue31767.dart.textual_outline.expect
index 56c60d9..c0f1050 100644
--- a/pkg/front_end/testcases/general/issue31767.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue31767.dart.textual_outline.expect
@@ -1,5 +1,4 @@
 // @dart = 2.9
-// @dart = 2.9
 import 'issue31767_lib.dart';
 
 StringBuffer sb;
diff --git a/pkg/front_end/testcases/general/issue31767.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue31767.dart.textual_outline_modelled.expect
index 05a7c2e..e349691 100644
--- a/pkg/front_end/testcases/general/issue31767.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue31767.dart.textual_outline_modelled.expect
@@ -1,5 +1,4 @@
 // @dart = 2.9
-// @dart = 2.9
 import 'issue31767_lib.dart';
 
 StringBuffer sb;
diff --git a/pkg/front_end/testcases/general/issue31767_lib.dart b/pkg/front_end/testcases/general/issue31767_lib.dart
index 2041300..61406fd 100644
--- a/pkg/front_end/testcases/general/issue31767_lib.dart
+++ b/pkg/front_end/testcases/general/issue31767_lib.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // @dart=2.9
 
 import 'issue31767.dart';
diff --git a/pkg/front_end/testcases/general/issue34515.dart b/pkg/front_end/testcases/general/issue34515.dart
index eeebfc8..829ce3b 100644
--- a/pkg/front_end/testcases/general/issue34515.dart
+++ b/pkg/front_end/testcases/general/issue34515.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 import "issue34515_lib1.dart";
 import "issue34515_lib2.dart";
 
diff --git a/pkg/front_end/testcases/general/issue34515.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue34515.dart.textual_outline.expect
index 76ca224..0d74c15 100644
--- a/pkg/front_end/testcases/general/issue34515.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue34515.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import "issue34515_lib1.dart";
 import "issue34515_lib2.dart";
 
diff --git a/pkg/front_end/testcases/general/issue34515.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue34515.dart.textual_outline_modelled.expect
index 51b0be9..608fcf1 100644
--- a/pkg/front_end/testcases/general/issue34515.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue34515.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import "issue34515_lib1.dart";
 import "issue34515_lib2.dart";
 
diff --git a/pkg/front_end/testcases/general/issue34515.dart.weak.expect b/pkg/front_end/testcases/general/issue34515.dart.weak.expect
index 6ca6a9d..d92d811 100644
--- a/pkg/front_end/testcases/general/issue34515.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue34515.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,51 +17,31 @@
 import "org-dartlang-testcase:///issue34515_lib2.dart";
 
 static method test() → void {
-  let final core::Object* #t1 = 1 in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:9:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
+  let final core::Object? #t1 = 1 in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:9:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
   ImportedClass(1);
   ^^^^^^^^^^^^^";
-  let final core::Object* #t2 = "a" in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:10:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
+  let final core::Object? #t2 = "a" in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:10:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
   ImportedClass(\"a\");
   ^^^^^^^^^^^^^";
 }
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 import "dart:core" as core;
 
 class ImportedClass extends core::Object {
-  constructor •(core::int* a) → self2::ImportedClass*
+  constructor •(core::int a) → self2::ImportedClass
     : 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
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self3;
 import "dart:core" as core;
 
 class ImportedClass extends core::Object {
-  constructor •(core::String* a) → self3::ImportedClass*
+  constructor •(core::String a) → self3::ImportedClass
     : 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
 }
diff --git a/pkg/front_end/testcases/general/issue34515.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue34515.dart.weak.modular.expect
index 6ca6a9d..d92d811 100644
--- a/pkg/front_end/testcases/general/issue34515.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue34515.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,51 +17,31 @@
 import "org-dartlang-testcase:///issue34515_lib2.dart";
 
 static method test() → void {
-  let final core::Object* #t1 = 1 in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:9:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
+  let final core::Object? #t1 = 1 in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:9:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
   ImportedClass(1);
   ^^^^^^^^^^^^^";
-  let final core::Object* #t2 = "a" in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:10:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
+  let final core::Object? #t2 = "a" in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:10:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
   ImportedClass(\"a\");
   ^^^^^^^^^^^^^";
 }
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 import "dart:core" as core;
 
 class ImportedClass extends core::Object {
-  constructor •(core::int* a) → self2::ImportedClass*
+  constructor •(core::int a) → self2::ImportedClass
     : 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
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self3;
 import "dart:core" as core;
 
 class ImportedClass extends core::Object {
-  constructor •(core::String* a) → self3::ImportedClass*
+  constructor •(core::String a) → self3::ImportedClass
     : 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
 }
diff --git a/pkg/front_end/testcases/general/issue34515.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue34515.dart.weak.outline.expect
index a6f6e10..70e67a5 100644
--- a/pkg/front_end/testcases/general/issue34515.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue34515.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 import "org-dartlang-testcase:///issue34515_lib1.dart";
@@ -9,40 +9,20 @@
 static method main() → dynamic
   ;
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 import "dart:core" as core;
 
 class ImportedClass extends core::Object {
-  constructor •(core::int* a) → self2::ImportedClass*
+  constructor •(core::int a) → self2::ImportedClass
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self3;
 import "dart:core" as core;
 
 class ImportedClass extends core::Object {
-  constructor •(core::String* a) → self3::ImportedClass*
+  constructor •(core::String a) → self3::ImportedClass
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/issue34515.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue34515.dart.weak.transformed.expect
index 6ca6a9d..d92d811 100644
--- a/pkg/front_end/testcases/general/issue34515.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue34515.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,51 +17,31 @@
 import "org-dartlang-testcase:///issue34515_lib2.dart";
 
 static method test() → void {
-  let final core::Object* #t1 = 1 in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:9:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
+  let final core::Object? #t1 = 1 in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:9:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
   ImportedClass(1);
   ^^^^^^^^^^^^^";
-  let final core::Object* #t2 = "a" in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:10:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
+  let final core::Object? #t2 = "a" in invalid-expression "pkg/front_end/testcases/general/issue34515.dart:10:3: Error: 'ImportedClass' is imported from both 'pkg/front_end/testcases/general/issue34515_lib1.dart' and 'pkg/front_end/testcases/general/issue34515_lib2.dart'.
   ImportedClass(\"a\");
   ^^^^^^^^^^^^^";
 }
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self2;
 import "dart:core" as core;
 
 class ImportedClass extends core::Object {
-  constructor •(core::int* a) → self2::ImportedClass*
+  constructor •(core::int a) → self2::ImportedClass
     : 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
 }
 
-library;
+library /*isNonNullableByDefault*/;
 import self as self3;
 import "dart:core" as core;
 
 class ImportedClass extends core::Object {
-  constructor •(core::String* a) → self3::ImportedClass*
+  constructor •(core::String a) → self3::ImportedClass
     : 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
 }
diff --git a/pkg/front_end/testcases/general/issue34515_lib1.dart b/pkg/front_end/testcases/general/issue34515_lib1.dart
index 1777ac3..00f9340 100644
--- a/pkg/front_end/testcases/general/issue34515_lib1.dart
+++ b/pkg/front_end/testcases/general/issue34515_lib1.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class ImportedClass {
   ImportedClass(int a);
 }
diff --git a/pkg/front_end/testcases/general/issue34515_lib2.dart b/pkg/front_end/testcases/general/issue34515_lib2.dart
index 7382d3c..2ec64bb 100644
--- a/pkg/front_end/testcases/general/issue34515_lib2.dart
+++ b/pkg/front_end/testcases/general/issue34515_lib2.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class ImportedClass {
   ImportedClass(String a);
 }
diff --git a/pkg/front_end/testcases/general/issue34714.dart b/pkg/front_end/testcases/general/issue34714.dart
index df43261..918ed93 100644
--- a/pkg/front_end/testcases/general/issue34714.dart
+++ b/pkg/front_end/testcases/general/issue34714.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> {
   factory A() = B; // Should infer B<T>.
 }
diff --git a/pkg/front_end/testcases/general/issue34714.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue34714.dart.textual_outline.expect
index 29124ba..82ac1d1 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<T> {
   factory A() = B;
 }
diff --git a/pkg/front_end/testcases/general/issue34714.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue34714.dart.textual_outline_modelled.expect
index 29124ba..82ac1d1 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<T> {
   factory A() = B;
 }
diff --git a/pkg/front_end/testcases/general/issue34714.dart.weak.expect b/pkg/front_end/testcases/general/issue34714.dart.weak.expect
index c0cc024..c16c3c6 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.weak.expect
@@ -1,36 +1,16 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return new self::B::•<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 A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return new self::B::•<self::A::•::T%>();
 }
-class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends core::Object implements self::A<self::B::T%> {
+  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
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue34714.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue34714.dart.weak.modular.expect
index c0cc024..c16c3c6 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.weak.modular.expect
@@ -1,36 +1,16 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return new self::B::•<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 A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return new self::B::•<self::A::•::T%>();
 }
-class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends core::Object implements self::A<self::B::T%> {
+  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
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue34714.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue34714.dart.weak.outline.expect
index 6b16904..ded3fad 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.weak.outline.expect
@@ -1,35 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[self::A::•];
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return new self::B::•<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 A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return new self::B::•<self::A::•::T%>();
 }
-class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends core::Object implements self::A<self::B::T%> {
+  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
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue34714.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue34714.dart.weak.transformed.expect
index c0cc024..c16c3c6 100644
--- a/pkg/front_end/testcases/general/issue34714.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue34714.dart.weak.transformed.expect
@@ -1,36 +1,16 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<T extends core::Object* = dynamic> extends core::Object {
-  static final field dynamic _redirecting# = <dynamic>[#C1];
-  static factory •<T extends core::Object* = dynamic>() → self::A<self::A::•::T*>*
-    return new self::B::•<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 A<T extends core::Object? = dynamic> extends core::Object {
+  static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/;
+  static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%>
+    return new self::B::•<self::A::•::T%>();
 }
-class B<T extends core::Object* = dynamic> extends core::Object implements self::A<self::B::T*> {
-  constructor •() → self::B<self::B::T*>*
+class B<T extends core::Object? = dynamic> extends core::Object implements self::A<self::B::T%> {
+  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
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue34899.dart b/pkg/front_end/testcases/general/issue34899.dart
index 6923798..deacf78 100644
--- a/pkg/front_end/testcases/general/issue34899.dart
+++ b/pkg/front_end/testcases/general/issue34899.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 Foo<T> {
   final Future<dynamic> Function() quux;
   T t;
@@ -12,12 +12,12 @@
 }
 
 class Bar {
-  Foo<Baz> qux;
+  Foo<Baz> qux = throw '';
 
   Future<void> quuz() =>
       qux().then((baz) => corge(baz)).then((grault) => garply(grault));
 
-  Grault corge(Baz baz) => null;
+  Grault corge(Baz baz) => throw '';
 
   void garply(Grault grault) {}
 }
diff --git a/pkg/front_end/testcases/general/issue34899.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue34899.dart.textual_outline.expect
index f989a75..1e916aa 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Foo<T> {
   final Future<dynamic> Function() quux;
   T t;
@@ -7,10 +6,10 @@
 }
 
 class Bar {
-  Foo<Baz> qux;
+  Foo<Baz> qux = throw '';
   Future<void> quuz() =>
       qux().then((baz) => corge(baz)).then((grault) => garply(grault));
-  Grault corge(Baz baz) => null;
+  Grault corge(Baz baz) => throw '';
   void garply(Grault grault) {}
 }
 
diff --git a/pkg/front_end/testcases/general/issue34899.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue34899.dart.textual_outline_modelled.expect
index 1f0bcd0..cda9295 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.textual_outline_modelled.expect
@@ -1,9 +1,8 @@
-// @dart = 2.9
 class Bar {
-  Foo<Baz> qux;
+  Foo<Baz> qux = throw '';
   Future<void> quuz() =>
       qux().then((baz) => corge(baz)).then((grault) => garply(grault));
-  Grault corge(Baz baz) => null;
+  Grault corge(Baz baz) => throw '';
   void garply(Grault grault) {}
 }
 
diff --git a/pkg/front_end/testcases/general/issue34899.dart.weak.expect b/pkg/front_end/testcases/general/issue34899.dart.weak.expect
index c1735e3..b7fefe3 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.weak.expect
@@ -1,76 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
 
-class Foo<T extends core::Object* = dynamic> extends core::Object {
-  final field () →* asy::Future<dynamic>* quux;
-  covariant-by-class field self::Foo::T* t;
-  constructor •(() →* asy::Future<dynamic>* quux, self::Foo::T* t) → self::Foo<self::Foo::T*>*
+class Foo<T extends core::Object? = dynamic> extends core::Object {
+  final field () → asy::Future<dynamic> quux;
+  covariant-by-class field self::Foo::T% t;
+  constructor •(() → asy::Future<dynamic> quux, self::Foo::T% t) → self::Foo<self::Foo::T%>
     : self::Foo::quux = quux, self::Foo::t = t, super core::Object::•()
     ;
-  method call() → asy::Future<self::Foo::T*>*
-    return this.{self::Foo::quux}{() →* asy::Future<dynamic>*}(){() →* asy::Future<dynamic>*}.{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t}{self::Foo::T*}){((dynamic) →* FutureOr<self::Foo::T*>*, {onError: core::Function*}) →* asy::Future<self::Foo::T*>*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method call() → asy::Future<self::Foo::T%>
+    return this.{self::Foo::quux}{() → asy::Future<dynamic>}(){() → asy::Future<dynamic>}.{asy::Future::then}<self::Foo::T%>((dynamic _) → self::Foo::T% => this.{self::Foo::t}{self::Foo::T%}){((dynamic) → FutureOr<self::Foo::T%>, {onError: core::Function?}) → asy::Future<self::Foo::T%>};
 }
 class Bar extends core::Object {
-  field self::Foo<self::Baz*>* qux = null;
-  synthetic constructor •() → self::Bar*
+  field self::Foo<self::Baz> qux = throw "";
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  method quuz() → asy::Future<void>*
-    return this.{self::Bar::qux}{self::Foo<self::Baz*>*}.{self::Foo::call}(){() →* asy::Future<self::Baz*>*}.{asy::Future::then}<self::Grault*>((self::Baz* baz) → self::Grault* => this.{self::Bar::corge}(baz){(self::Baz*) →* self::Grault*}){((self::Baz*) →* FutureOr<self::Grault*>*, {onError: core::Function*}) →* asy::Future<self::Grault*>*}.{asy::Future::then}<void>((self::Grault* grault) → void => this.{self::Bar::garply}(grault){(self::Grault*) →* void}){((self::Grault*) →* FutureOr<void>*, {onError: core::Function*}) →* asy::Future<void>*};
-  method corge(self::Baz* baz) → self::Grault*
-    return null;
-  method garply(self::Grault* grault) → 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 quuz() → asy::Future<void>
+    return this.{self::Bar::qux}{self::Foo<self::Baz>}.{self::Foo::call}(){() → asy::Future<self::Baz>}.{asy::Future::then}<self::Grault>((self::Baz baz) → self::Grault => this.{self::Bar::corge}(baz){(self::Baz) → self::Grault}){((self::Baz) → FutureOr<self::Grault>, {onError: core::Function?}) → asy::Future<self::Grault>}.{asy::Future::then}<void>((self::Grault grault) → void => this.{self::Bar::garply}(grault){(self::Grault) → void}){((self::Grault) → FutureOr<void>, {onError: core::Function?}) → asy::Future<void>};
+  method corge(self::Baz baz) → self::Grault
+    return throw "";
+  method garply(self::Grault grault) → void {}
 }
 class Baz extends core::Object {
-  synthetic constructor •() → self::Baz*
+  synthetic constructor •() → self::Baz
     : 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 Grault extends core::Object {
-  synthetic constructor •() → self::Grault*
+  synthetic constructor •() → self::Grault
     : 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/issue34899.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue34899.dart.weak.modular.expect
index c1735e3..b7fefe3 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.weak.modular.expect
@@ -1,76 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
 
-class Foo<T extends core::Object* = dynamic> extends core::Object {
-  final field () →* asy::Future<dynamic>* quux;
-  covariant-by-class field self::Foo::T* t;
-  constructor •(() →* asy::Future<dynamic>* quux, self::Foo::T* t) → self::Foo<self::Foo::T*>*
+class Foo<T extends core::Object? = dynamic> extends core::Object {
+  final field () → asy::Future<dynamic> quux;
+  covariant-by-class field self::Foo::T% t;
+  constructor •(() → asy::Future<dynamic> quux, self::Foo::T% t) → self::Foo<self::Foo::T%>
     : self::Foo::quux = quux, self::Foo::t = t, super core::Object::•()
     ;
-  method call() → asy::Future<self::Foo::T*>*
-    return this.{self::Foo::quux}{() →* asy::Future<dynamic>*}(){() →* asy::Future<dynamic>*}.{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t}{self::Foo::T*}){((dynamic) →* FutureOr<self::Foo::T*>*, {onError: core::Function*}) →* asy::Future<self::Foo::T*>*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method call() → asy::Future<self::Foo::T%>
+    return this.{self::Foo::quux}{() → asy::Future<dynamic>}(){() → asy::Future<dynamic>}.{asy::Future::then}<self::Foo::T%>((dynamic _) → self::Foo::T% => this.{self::Foo::t}{self::Foo::T%}){((dynamic) → FutureOr<self::Foo::T%>, {onError: core::Function?}) → asy::Future<self::Foo::T%>};
 }
 class Bar extends core::Object {
-  field self::Foo<self::Baz*>* qux = null;
-  synthetic constructor •() → self::Bar*
+  field self::Foo<self::Baz> qux = throw "";
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  method quuz() → asy::Future<void>*
-    return this.{self::Bar::qux}{self::Foo<self::Baz*>*}.{self::Foo::call}(){() →* asy::Future<self::Baz*>*}.{asy::Future::then}<self::Grault*>((self::Baz* baz) → self::Grault* => this.{self::Bar::corge}(baz){(self::Baz*) →* self::Grault*}){((self::Baz*) →* FutureOr<self::Grault*>*, {onError: core::Function*}) →* asy::Future<self::Grault*>*}.{asy::Future::then}<void>((self::Grault* grault) → void => this.{self::Bar::garply}(grault){(self::Grault*) →* void}){((self::Grault*) →* FutureOr<void>*, {onError: core::Function*}) →* asy::Future<void>*};
-  method corge(self::Baz* baz) → self::Grault*
-    return null;
-  method garply(self::Grault* grault) → 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 quuz() → asy::Future<void>
+    return this.{self::Bar::qux}{self::Foo<self::Baz>}.{self::Foo::call}(){() → asy::Future<self::Baz>}.{asy::Future::then}<self::Grault>((self::Baz baz) → self::Grault => this.{self::Bar::corge}(baz){(self::Baz) → self::Grault}){((self::Baz) → FutureOr<self::Grault>, {onError: core::Function?}) → asy::Future<self::Grault>}.{asy::Future::then}<void>((self::Grault grault) → void => this.{self::Bar::garply}(grault){(self::Grault) → void}){((self::Grault) → FutureOr<void>, {onError: core::Function?}) → asy::Future<void>};
+  method corge(self::Baz baz) → self::Grault
+    return throw "";
+  method garply(self::Grault grault) → void {}
 }
 class Baz extends core::Object {
-  synthetic constructor •() → self::Baz*
+  synthetic constructor •() → self::Baz
     : 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 Grault extends core::Object {
-  synthetic constructor •() → self::Grault*
+  synthetic constructor •() → self::Grault
     : 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/issue34899.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue34899.dart.weak.outline.expect
index d15bcb7..715285c 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.weak.outline.expect
@@ -1,74 +1,34 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
 
-class Foo<T extends core::Object* = dynamic> extends core::Object {
-  final field () →* asy::Future<dynamic>* quux;
-  covariant-by-class field self::Foo::T* t;
-  constructor •(() →* asy::Future<dynamic>* quux, self::Foo::T* t) → self::Foo<self::Foo::T*>*
+class Foo<T extends core::Object? = dynamic> extends core::Object {
+  final field () → asy::Future<dynamic> quux;
+  covariant-by-class field self::Foo::T% t;
+  constructor •(() → asy::Future<dynamic> quux, self::Foo::T% t) → self::Foo<self::Foo::T%>
     ;
-  method call() → asy::Future<self::Foo::T*>*
+  method call() → asy::Future<self::Foo::T%>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Bar extends core::Object {
-  field self::Foo<self::Baz*>* qux;
-  synthetic constructor •() → self::Bar*
+  field self::Foo<self::Baz> qux;
+  synthetic constructor •() → self::Bar
     ;
-  method quuz() → asy::Future<void>*
+  method quuz() → asy::Future<void>
     ;
-  method corge(self::Baz* baz) → self::Grault*
+  method corge(self::Baz baz) → self::Grault
     ;
-  method garply(self::Grault* grault) → void
+  method garply(self::Grault grault) → 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 Baz extends core::Object {
-  synthetic constructor •() → self::Baz*
+  synthetic constructor •() → self::Baz
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 Grault extends core::Object {
-  synthetic constructor •() → self::Grault*
+  synthetic constructor •() → self::Grault
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/issue34899.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue34899.dart.weak.transformed.expect
index c1735e3..b7fefe3 100644
--- a/pkg/front_end/testcases/general/issue34899.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue34899.dart.weak.transformed.expect
@@ -1,76 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
 
-class Foo<T extends core::Object* = dynamic> extends core::Object {
-  final field () →* asy::Future<dynamic>* quux;
-  covariant-by-class field self::Foo::T* t;
-  constructor •(() →* asy::Future<dynamic>* quux, self::Foo::T* t) → self::Foo<self::Foo::T*>*
+class Foo<T extends core::Object? = dynamic> extends core::Object {
+  final field () → asy::Future<dynamic> quux;
+  covariant-by-class field self::Foo::T% t;
+  constructor •(() → asy::Future<dynamic> quux, self::Foo::T% t) → self::Foo<self::Foo::T%>
     : self::Foo::quux = quux, self::Foo::t = t, super core::Object::•()
     ;
-  method call() → asy::Future<self::Foo::T*>*
-    return this.{self::Foo::quux}{() →* asy::Future<dynamic>*}(){() →* asy::Future<dynamic>*}.{asy::Future::then}<self::Foo::T*>((dynamic _) → self::Foo::T* => this.{self::Foo::t}{self::Foo::T*}){((dynamic) →* FutureOr<self::Foo::T*>*, {onError: core::Function*}) →* asy::Future<self::Foo::T*>*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method call() → asy::Future<self::Foo::T%>
+    return this.{self::Foo::quux}{() → asy::Future<dynamic>}(){() → asy::Future<dynamic>}.{asy::Future::then}<self::Foo::T%>((dynamic _) → self::Foo::T% => this.{self::Foo::t}{self::Foo::T%}){((dynamic) → FutureOr<self::Foo::T%>, {onError: core::Function?}) → asy::Future<self::Foo::T%>};
 }
 class Bar extends core::Object {
-  field self::Foo<self::Baz*>* qux = null;
-  synthetic constructor •() → self::Bar*
+  field self::Foo<self::Baz> qux = throw "";
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  method quuz() → asy::Future<void>*
-    return this.{self::Bar::qux}{self::Foo<self::Baz*>*}.{self::Foo::call}(){() →* asy::Future<self::Baz*>*}.{asy::Future::then}<self::Grault*>((self::Baz* baz) → self::Grault* => this.{self::Bar::corge}(baz){(self::Baz*) →* self::Grault*}){((self::Baz*) →* FutureOr<self::Grault*>*, {onError: core::Function*}) →* asy::Future<self::Grault*>*}.{asy::Future::then}<void>((self::Grault* grault) → void => this.{self::Bar::garply}(grault){(self::Grault*) →* void}){((self::Grault*) →* FutureOr<void>*, {onError: core::Function*}) →* asy::Future<void>*};
-  method corge(self::Baz* baz) → self::Grault*
-    return null;
-  method garply(self::Grault* grault) → 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 quuz() → asy::Future<void>
+    return this.{self::Bar::qux}{self::Foo<self::Baz>}.{self::Foo::call}(){() → asy::Future<self::Baz>}.{asy::Future::then}<self::Grault>((self::Baz baz) → self::Grault => this.{self::Bar::corge}(baz){(self::Baz) → self::Grault}){((self::Baz) → FutureOr<self::Grault>, {onError: core::Function?}) → asy::Future<self::Grault>}.{asy::Future::then}<void>((self::Grault grault) → void => this.{self::Bar::garply}(grault){(self::Grault) → void}){((self::Grault) → FutureOr<void>, {onError: core::Function?}) → asy::Future<void>};
+  method corge(self::Baz baz) → self::Grault
+    return throw "";
+  method garply(self::Grault grault) → void {}
 }
 class Baz extends core::Object {
-  synthetic constructor •() → self::Baz*
+  synthetic constructor •() → self::Baz
     : 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 Grault extends core::Object {
-  synthetic constructor •() → self::Grault*
+  synthetic constructor •() → self::Grault
     : 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/issue35875.dart b/pkg/front_end/testcases/general/issue35875.dart
index cdcd28f..27f7a21 100644
--- a/pkg/front_end/testcases/general/issue35875.dart
+++ b/pkg/front_end/testcases/general/issue35875.dart
@@ -1,10 +1,10 @@
 // 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 {
-  int a;
-  A(int a) {
+  int? a;
+  A(int? a) {
     (this).a = a;
   }
 }
diff --git a/pkg/front_end/testcases/general/issue35875.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue35875.dart.textual_outline.expect
index a1997db..1201844 100644
--- a/pkg/front_end/testcases/general/issue35875.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue35875.dart.textual_outline.expect
@@ -1,7 +1,6 @@
-// @dart = 2.9
 class A {
-  int a;
-  A(int a) {}
+  int? a;
+  A(int? a) {}
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/issue35875.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue35875.dart.textual_outline_modelled.expect
index 0de1b77..697216b 100644
--- a/pkg/front_end/testcases/general/issue35875.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue35875.dart.textual_outline_modelled.expect
@@ -1,7 +1,6 @@
-// @dart = 2.9
 class A {
-  A(int a) {}
-  int a;
+  A(int? a) {}
+  int? a;
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/issue35875.dart.weak.expect b/pkg/front_end/testcases/general/issue35875.dart.weak.expect
index fe26450..9e0ce1e 100644
--- a/pkg/front_end/testcases/general/issue35875.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue35875.dart.weak.expect
@@ -1,22 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::int* a = null;
-  constructor •(core::int* a) → self::A*
+  field core::int? a = null;
+  constructor •(core::int? a) → self::A
     : super core::Object::•() {
     this.{self::A::a} = 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/issue35875.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue35875.dart.weak.modular.expect
index fe26450..9e0ce1e 100644
--- a/pkg/front_end/testcases/general/issue35875.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue35875.dart.weak.modular.expect
@@ -1,22 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::int* a = null;
-  constructor •(core::int* a) → self::A*
+  field core::int? a = null;
+  constructor •(core::int? a) → self::A
     : super core::Object::•() {
     this.{self::A::a} = 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/issue35875.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue35875.dart.weak.outline.expect
index f25c2ca..a5aedf8 100644
--- a/pkg/front_end/testcases/general/issue35875.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue35875.dart.weak.outline.expect
@@ -1,21 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::int* a;
-  constructor •(core::int* a) → self::A*
+  field core::int? a;
+  constructor •(core::int? a) → 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/issue35875.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue35875.dart.weak.transformed.expect
index fe26450..9e0ce1e 100644
--- a/pkg/front_end/testcases/general/issue35875.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue35875.dart.weak.transformed.expect
@@ -1,22 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::int* a = null;
-  constructor •(core::int* a) → self::A*
+  field core::int? a = null;
+  constructor •(core::int? a) → self::A
     : super core::Object::•() {
     this.{self::A::a} = 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/issue37027.dart b/pkg/front_end/testcases/general/issue37027.dart
index 1da79e2..6272d62 100644
--- a/pkg/front_end/testcases/general/issue37027.dart
+++ b/pkg/front_end/testcases/general/issue37027.dart
@@ -1,9 +1,10 @@
 // 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.
+
 class C {
   final Set<int> s;
   C(List<int> ell) : s = {for (var e in ell) if (e.isOdd) 2 * e};
 }
-// @dart=2.9
+
 main() {}
diff --git a/pkg/front_end/testcases/general/issue37381.dart b/pkg/front_end/testcases/general/issue37381.dart
index aabaf7f..9424045 100644
--- a/pkg/front_end/testcases/general/issue37381.dart
+++ b/pkg/front_end/testcases/general/issue37381.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
+
 // This test checks that the bug reported at http://dartbug.com/37381 is fixed.
 
 class A<X> {
diff --git a/pkg/front_end/testcases/general/issue37381.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue37381.dart.textual_outline.expect
index 8b08987..0e78f9c 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<X> {
   R f<R>(R Function<X>(A<X>) f) => f<X>(this);
 }
diff --git a/pkg/front_end/testcases/general/issue37381.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue37381.dart.textual_outline_modelled.expect
index 8b08987..0e78f9c 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<X> {
   R f<R>(R Function<X>(A<X>) f) => f<X>(this);
 }
diff --git a/pkg/front_end/testcases/general/issue37381.dart.weak.expect b/pkg/front_end/testcases/general/issue37381.dart.weak.expect
index 8ec0e22..b0dd96a 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.weak.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<X extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::X*>*
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
     : super core::Object::•()
     ;
-  method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
-    return f<self::A::X*>(this){(self::A<self::A::X*>*) →* self::A::f::R*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f<R extends core::Object? = dynamic>(<X extends core::Object? = dynamic>(self::A<X%>) → self::A::f::R% f) → self::A::f::R%
+    return f<self::A::X%>(this){(self::A<self::A::X%>) → self::A::f::R%};
 }
 static method main() → dynamic {
-  self::A<core::num*>* a = new self::A::•<core::int*>();
-  a.{self::A::f}<core::int*>(<X extends core::Object* = dynamic>(self::A<X*>* _) → core::int* => 42){(<X extends core::Object* = dynamic>(self::A<X*>*) →* core::int*) →* core::int*};
+  self::A<core::num> a = new self::A::•<core::int>();
+  a.{self::A::f}<core::int>(<X extends core::Object? = dynamic>(self::A<X%> _) → core::int => 42){(<X extends core::Object? = dynamic>(self::A<X%>) → core::int) → core::int};
 }
diff --git a/pkg/front_end/testcases/general/issue37381.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue37381.dart.weak.modular.expect
index 8ec0e22..b0dd96a 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.weak.modular.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<X extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::X*>*
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
     : super core::Object::•()
     ;
-  method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
-    return f<self::A::X*>(this){(self::A<self::A::X*>*) →* self::A::f::R*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f<R extends core::Object? = dynamic>(<X extends core::Object? = dynamic>(self::A<X%>) → self::A::f::R% f) → self::A::f::R%
+    return f<self::A::X%>(this){(self::A<self::A::X%>) → self::A::f::R%};
 }
 static method main() → dynamic {
-  self::A<core::num*>* a = new self::A::•<core::int*>();
-  a.{self::A::f}<core::int*>(<X extends core::Object* = dynamic>(self::A<X*>* _) → core::int* => 42){(<X extends core::Object* = dynamic>(self::A<X*>*) →* core::int*) →* core::int*};
+  self::A<core::num> a = new self::A::•<core::int>();
+  a.{self::A::f}<core::int>(<X extends core::Object? = dynamic>(self::A<X%> _) → core::int => 42){(<X extends core::Object? = dynamic>(self::A<X%>) → core::int) → core::int};
 }
diff --git a/pkg/front_end/testcases/general/issue37381.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue37381.dart.weak.outline.expect
index a22155d..5f94281 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.weak.outline.expect
@@ -1,22 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<X extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::X*>*
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
     ;
-  method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
+  method f<R extends core::Object? = dynamic>(<X extends core::Object? = dynamic>(self::A<X%>) → self::A::f::R% f) → self::A::f::R%
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/issue37381.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue37381.dart.weak.transformed.expect
index 8ec0e22..b0dd96a 100644
--- a/pkg/front_end/testcases/general/issue37381.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37381.dart.weak.transformed.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class A<X extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::X*>*
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
     : super core::Object::•()
     ;
-  method f<R extends core::Object* = dynamic>(<X extends core::Object* = dynamic>(self::A<X*>*) →* self::A::f::R* f) → self::A::f::R*
-    return f<self::A::X*>(this){(self::A<self::A::X*>*) →* self::A::f::R*};
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method f<R extends core::Object? = dynamic>(<X extends core::Object? = dynamic>(self::A<X%>) → self::A::f::R% f) → self::A::f::R%
+    return f<self::A::X%>(this){(self::A<self::A::X%>) → self::A::f::R%};
 }
 static method main() → dynamic {
-  self::A<core::num*>* a = new self::A::•<core::int*>();
-  a.{self::A::f}<core::int*>(<X extends core::Object* = dynamic>(self::A<X*>* _) → core::int* => 42){(<X extends core::Object* = dynamic>(self::A<X*>*) →* core::int*) →* core::int*};
+  self::A<core::num> a = new self::A::•<core::int>();
+  a.{self::A::f}<core::int>(<X extends core::Object? = dynamic>(self::A<X%> _) → core::int => 42){(<X extends core::Object? = dynamic>(self::A<X%>) → core::int) → core::int};
 }
diff --git a/pkg/front_end/testcases/general/issue37753.dart b/pkg/front_end/testcases/general/issue37753.dart
index f653337..d55dc2f 100644
--- a/pkg/front_end/testcases/general/issue37753.dart
+++ b/pkg/front_end/testcases/general/issue37753.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
-
 // Regression test for https://github.com/dart-lang/sdk/issues/37753.
 // A missing piece of transform logic caused nested sync* set to a variable
 // to not get transformed, which would either fail an assert or crash.
diff --git a/pkg/front_end/testcases/general/issue37753.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue37753.dart.textual_outline.expect
index 771fd22..9598357 100644
--- a/pkg/front_end/testcases/general/issue37753.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue37753.dart.textual_outline.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 Iterable<int> getElements() sync* {}
 main() => print(getElements());
diff --git a/pkg/front_end/testcases/general/issue37753.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue37753.dart.textual_outline_modelled.expect
index 771fd22..9598357 100644
--- a/pkg/front_end/testcases/general/issue37753.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue37753.dart.textual_outline_modelled.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 Iterable<int> getElements() sync* {}
 main() => print(getElements());
diff --git a/pkg/front_end/testcases/general/issue37753.dart.weak.expect b/pkg/front_end/testcases/general/issue37753.dart.weak.expect
index 8ce1e9b..a0ac6b6 100644
--- a/pkg/front_end/testcases/general/issue37753.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue37753.dart.weak.expect
@@ -1,12 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method getElements() → core::Iterable<core::int*>* sync* {
-  core::Iterable<core::int*>* elements;
-  elements = (() → core::Iterable<core::int*>* sync* {
+static method getElements() → core::Iterable<core::int> sync* {
+  core::Iterable<core::int> elements;
+  elements = (() → core::Iterable<core::int> sync* {
     yield 7;
-  })(){() →* core::Iterable<core::int*>*};
+  })(){() → core::Iterable<core::int>};
   yield* elements;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/issue37753.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue37753.dart.weak.modular.expect
index 8ce1e9b..a0ac6b6 100644
--- a/pkg/front_end/testcases/general/issue37753.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue37753.dart.weak.modular.expect
@@ -1,12 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method getElements() → core::Iterable<core::int*>* sync* {
-  core::Iterable<core::int*>* elements;
-  elements = (() → core::Iterable<core::int*>* sync* {
+static method getElements() → core::Iterable<core::int> sync* {
+  core::Iterable<core::int> elements;
+  elements = (() → core::Iterable<core::int> sync* {
     yield 7;
-  })(){() →* core::Iterable<core::int*>*};
+  })(){() → core::Iterable<core::int>};
   yield* elements;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/issue37753.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue37753.dart.weak.outline.expect
index 2032eab..fa2f690 100644
--- a/pkg/front_end/testcases/general/issue37753.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue37753.dart.weak.outline.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method getElements() → core::Iterable<core::int*>* sync* 
+static method getElements() → core::Iterable<core::int> sync* 
   ;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue37753.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue37753.dart.weak.transformed.expect
index 7321092..64d5279 100644
--- a/pkg/front_end/testcases/general/issue37753.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37753.dart.weak.transformed.expect
@@ -1,19 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method getElements() → core::Iterable<core::int*>* /* originally sync* */ {
-  function :sync_op_gen() → (core::_SyncIterator<dynamic>*, dynamic, dynamic) →* core::bool* {
-    core::int* :await_jump_var = 0;
+static method getElements() → core::Iterable<core::int> /* originally sync* */ {
+  function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+    core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
-    function :sync_op(core::_SyncIterator<dynamic>* :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+    function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
       {
-        core::Iterable<core::int*>* elements;
-        elements = (() → core::Iterable<core::int*>* /* originally sync* */ {
-          function :sync_op_gen() → (core::_SyncIterator<dynamic>*, dynamic, dynamic) →* core::bool* {
-            core::int* :await_jump_var = 0;
+        core::Iterable<core::int> elements;
+        elements = (() → core::Iterable<core::int> /* originally sync* */ {
+          function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+            core::int :await_jump_var = 0;
             dynamic :await_ctx_var;
-            function :sync_op(core::_SyncIterator<dynamic>* :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+            function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
               {
                 {
                   :iterator.{core::_SyncIterator::_current} = 7;
@@ -24,8 +24,8 @@
             }
             return :sync_op;
           }
-          return new core::_SyncIterable::•<core::int*>(:sync_op_gen);
-        })(){() →* core::Iterable<core::int*>*};
+          return new core::_SyncIterable::•<core::int>(:sync_op_gen);
+        })(){() → core::Iterable<core::int>};
         {
           :iterator.{core::_SyncIterator::_yieldEachIterable} = elements;
           [yield] true;
@@ -35,7 +35,7 @@
     }
     return :sync_op;
   }
-  return new core::_SyncIterable::•<core::int*>(:sync_op_gen);
+  return new core::_SyncIterable::•<core::int>(:sync_op_gen);
 }
 static method main() → dynamic
   return core::print(self::getElements());
diff --git a/pkg/front_end/testcases/general/issue37776.dart b/pkg/front_end/testcases/general/issue37776.dart
index 600c1f5..49b4f52 100644
--- a/pkg/front_end/testcases/general/issue37776.dart
+++ b/pkg/front_end/testcases/general/issue37776.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
+
 // This test checks that the bug reported at http://dartbug.com/37776 is fixed.
 
 class X {
diff --git a/pkg/front_end/testcases/general/issue37776.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue37776.dart.textual_outline.expect
index 48496d9..fe9bbfe 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class X {
   const X.foo();
 }
diff --git a/pkg/front_end/testcases/general/issue37776.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue37776.dart.textual_outline_modelled.expect
index 48496d9..fe9bbfe 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class X {
   const X.foo();
 }
diff --git a/pkg/front_end/testcases/general/issue37776.dart.weak.expect b/pkg/front_end/testcases/general/issue37776.dart.weak.expect
index 7840a4b..67447b5 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,34 +17,14 @@
 import "dart:core" as core;
 
 class X#1 extends core::Object /*hasConstConstructor*/  {
-  const constructor foo() → self::X#1*
+  const constructor foo() → self::X#1
     : 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 X extends core::Object /*hasConstConstructor*/  {
-  const constructor foo() → self::X*
+  const constructor foo() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {
   invalid-expression "pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Couldn't find constructor 'X.foo'.
diff --git a/pkg/front_end/testcases/general/issue37776.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue37776.dart.weak.modular.expect
index 7840a4b..67447b5 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,34 +17,14 @@
 import "dart:core" as core;
 
 class X#1 extends core::Object /*hasConstConstructor*/  {
-  const constructor foo() → self::X#1*
+  const constructor foo() → self::X#1
     : 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 X extends core::Object /*hasConstConstructor*/  {
-  const constructor foo() → self::X*
+  const constructor foo() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {
   invalid-expression "pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Couldn't find constructor 'X.foo'.
diff --git a/pkg/front_end/testcases/general/issue37776.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue37776.dart.weak.outline.expect
index 81a519a..5ed6ff8 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -13,34 +13,14 @@
 import "dart:core" as core;
 
 class X#1 extends core::Object /*hasConstConstructor*/  {
-  const constructor foo() → self::X#1*
+  const constructor foo() → self::X#1
     : 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 X extends core::Object /*hasConstConstructor*/  {
-  const constructor foo() → self::X*
+  const constructor foo() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/issue37776.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue37776.dart.weak.transformed.expect
index 7840a4b..67447b5 100644
--- a/pkg/front_end/testcases/general/issue37776.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue37776.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,34 +17,14 @@
 import "dart:core" as core;
 
 class X#1 extends core::Object /*hasConstConstructor*/  {
-  const constructor foo() → self::X#1*
+  const constructor foo() → self::X#1
     : 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 X extends core::Object /*hasConstConstructor*/  {
-  const constructor foo() → self::X*
+  const constructor foo() → self::X
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → void {
   invalid-expression "pkg/front_end/testcases/general/issue37776.dart:16:9: Error: Couldn't find constructor 'X.foo'.
diff --git a/pkg/front_end/testcases/general/issue38812.dart b/pkg/front_end/testcases/general/issue38812.dart
index eba2ba6..9d26308 100644
--- a/pkg/front_end/testcases/general/issue38812.dart
+++ b/pkg/front_end/testcases/general/issue38812.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
+
 typedef G<X> = void Function();
 
 class A<X extends G<A<Y, X>>, Y extends G<A<X, Y>>> {}
diff --git a/pkg/front_end/testcases/general/issue38812.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue38812.dart.textual_outline.expect
index 5b18a25..f69b6fc 100644
--- a/pkg/front_end/testcases/general/issue38812.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue38812.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 typedef G<X> = void Function();
 
 class A<X extends G<A<Y, X>>, Y extends G<A<X, Y>>> {}
diff --git a/pkg/front_end/testcases/general/issue38812.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue38812.dart.textual_outline_modelled.expect
index ef0531c..f0058f6 100644
--- a/pkg/front_end/testcases/general/issue38812.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue38812.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<X extends G<A<Y, X>>, Y extends G<A<X, Y>>> {}
 
 main() {}
diff --git a/pkg/front_end/testcases/general/issue38812.dart.weak.expect b/pkg/front_end/testcases/general/issue38812.dart.weak.expect
index 1bcd793..7a83fef 100644
--- a/pkg/front_end/testcases/general/issue38812.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue38812.dart.weak.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef G<unrelated X extends core::Object* = dynamic> = () →* void;
-class A<X extends () →* void, Y extends () →* void> extends core::Object {
-  synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
+typedef G<unrelated X extends core::Object? = dynamic> = () → void;
+class A<X extends () → void, Y extends () → void> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X, self::A::Y>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::A::•<() →* void, () →* void>();
+  new self::A::•<() → void, () → void>();
 }
diff --git a/pkg/front_end/testcases/general/issue38812.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue38812.dart.weak.modular.expect
index 1bcd793..7a83fef 100644
--- a/pkg/front_end/testcases/general/issue38812.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue38812.dart.weak.modular.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef G<unrelated X extends core::Object* = dynamic> = () →* void;
-class A<X extends () →* void, Y extends () →* void> extends core::Object {
-  synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
+typedef G<unrelated X extends core::Object? = dynamic> = () → void;
+class A<X extends () → void, Y extends () → void> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X, self::A::Y>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::A::•<() →* void, () →* void>();
+  new self::A::•<() → void, () → void>();
 }
diff --git a/pkg/front_end/testcases/general/issue38812.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue38812.dart.weak.outline.expect
index d9a199c..a50b799 100644
--- a/pkg/front_end/testcases/general/issue38812.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue38812.dart.weak.outline.expect
@@ -1,21 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef G<unrelated X extends core::Object* = dynamic> = () →* void;
-class A<X extends () →* void, Y extends () →* void> extends core::Object {
-  synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
+typedef G<unrelated X extends core::Object? = dynamic> = () → void;
+class A<X extends () → void, Y extends () → void> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X, self::A::Y>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue38812.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue38812.dart.weak.transformed.expect
index 1bcd793..7a83fef 100644
--- a/pkg/front_end/testcases/general/issue38812.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38812.dart.weak.transformed.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef G<unrelated X extends core::Object* = dynamic> = () →* void;
-class A<X extends () →* void, Y extends () →* void> extends core::Object {
-  synthetic constructor •() → self::A<self::A::X*, self::A::Y*>*
+typedef G<unrelated X extends core::Object? = dynamic> = () → void;
+class A<X extends () → void, Y extends () → void> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X, self::A::Y>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  new self::A::•<() →* void, () →* void>();
+  new self::A::•<() → void, () → void>();
 }
diff --git a/pkg/front_end/testcases/general/issue38938.dart b/pkg/front_end/testcases/general/issue38938.dart
index ff65f62..5f76015 100644
--- a/pkg/front_end/testcases/general/issue38938.dart
+++ b/pkg/front_end/testcases/general/issue38938.dart
@@ -1,10 +1,10 @@
 // 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 {
-  int v;
-  int v;
+  int? v;
+  int? v;
   A(this.v);
   A.second();
 }
diff --git a/pkg/front_end/testcases/general/issue38938.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue38938.dart.textual_outline.expect
index 4358745..65c652c 100644
--- a/pkg/front_end/testcases/general/issue38938.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue38938.dart.textual_outline.expect
@@ -1,7 +1,6 @@
-// @dart = 2.9
 class A {
-  int v;
-  int v;
+  int? v;
+  int? v;
   A(this.v);
   A.second();
 }
diff --git a/pkg/front_end/testcases/general/issue38938.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue38938.dart.textual_outline_modelled.expect
index a1d2ccd..50e19e2 100644
--- a/pkg/front_end/testcases/general/issue38938.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue38938.dart.textual_outline_modelled.expect
@@ -1,7 +1,6 @@
-// @dart = 2.9
 class A {
   A(this.v);
   A.second();
-  int v;
-  int v;
+  int? v;
+  int? v;
 }
diff --git a/pkg/front_end/testcases/general/issue38938.dart.weak.expect b/pkg/front_end/testcases/general/issue38938.dart.weak.expect
index 2ed9c3f..6736f12 100644
--- a/pkg/front_end/testcases/general/issue38938.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue38938.dart.weak.expect
@@ -1,13 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue38938.dart:7:7: Error: 'v' is already declared in this scope.
-//   int v;
-//       ^
-// pkg/front_end/testcases/general/issue38938.dart:6:7: Context: Previous declaration of 'v'.
-//   int v;
-//       ^
+// pkg/front_end/testcases/general/issue38938.dart:7:8: Error: 'v' is already declared in this scope.
+//   int? v;
+//        ^
+// pkg/front_end/testcases/general/issue38938.dart:6:8: Context: Previous declaration of 'v'.
+//   int? v;
+//        ^
 //
 // pkg/front_end/testcases/general/issue38938.dart:8:10: Error: Can't use 'v' because it is declared more than once.
 //   A(this.v);
@@ -17,23 +17,13 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::int* v = null;
-  constructor •(core::int* v) → self::A*
+  field core::int? v = null;
+  constructor •(core::int? v) → self::A
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue38938.dart:8:10: Error: Can't use 'v' because it is declared more than once.
   A(this.v);
          ^"
     ;
-  constructor second() → self::A*
+  constructor second() → 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
 }
diff --git a/pkg/front_end/testcases/general/issue38938.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue38938.dart.weak.modular.expect
index 2ed9c3f..6736f12 100644
--- a/pkg/front_end/testcases/general/issue38938.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue38938.dart.weak.modular.expect
@@ -1,13 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue38938.dart:7:7: Error: 'v' is already declared in this scope.
-//   int v;
-//       ^
-// pkg/front_end/testcases/general/issue38938.dart:6:7: Context: Previous declaration of 'v'.
-//   int v;
-//       ^
+// pkg/front_end/testcases/general/issue38938.dart:7:8: Error: 'v' is already declared in this scope.
+//   int? v;
+//        ^
+// pkg/front_end/testcases/general/issue38938.dart:6:8: Context: Previous declaration of 'v'.
+//   int? v;
+//        ^
 //
 // pkg/front_end/testcases/general/issue38938.dart:8:10: Error: Can't use 'v' because it is declared more than once.
 //   A(this.v);
@@ -17,23 +17,13 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::int* v = null;
-  constructor •(core::int* v) → self::A*
+  field core::int? v = null;
+  constructor •(core::int? v) → self::A
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue38938.dart:8:10: Error: Can't use 'v' because it is declared more than once.
   A(this.v);
          ^"
     ;
-  constructor second() → self::A*
+  constructor second() → 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
 }
diff --git a/pkg/front_end/testcases/general/issue38938.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue38938.dart.weak.outline.expect
index b5f3744..8a64757 100644
--- a/pkg/front_end/testcases/general/issue38938.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue38938.dart.weak.outline.expect
@@ -1,31 +1,21 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue38938.dart:7:7: Error: 'v' is already declared in this scope.
-//   int v;
-//       ^
-// pkg/front_end/testcases/general/issue38938.dart:6:7: Context: Previous declaration of 'v'.
-//   int v;
-//       ^
+// pkg/front_end/testcases/general/issue38938.dart:7:8: Error: 'v' is already declared in this scope.
+//   int? v;
+//        ^
+// pkg/front_end/testcases/general/issue38938.dart:6:8: Context: Previous declaration of 'v'.
+//   int? v;
+//        ^
 //
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::int* v;
-  constructor •(core::int* v) → self::A*
+  field core::int? v;
+  constructor •(core::int? v) → self::A
     ;
-  constructor second() → self::A*
+  constructor second() → 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
 }
diff --git a/pkg/front_end/testcases/general/issue38938.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue38938.dart.weak.transformed.expect
index 2ed9c3f..6736f12 100644
--- a/pkg/front_end/testcases/general/issue38938.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38938.dart.weak.transformed.expect
@@ -1,13 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue38938.dart:7:7: Error: 'v' is already declared in this scope.
-//   int v;
-//       ^
-// pkg/front_end/testcases/general/issue38938.dart:6:7: Context: Previous declaration of 'v'.
-//   int v;
-//       ^
+// pkg/front_end/testcases/general/issue38938.dart:7:8: Error: 'v' is already declared in this scope.
+//   int? v;
+//        ^
+// pkg/front_end/testcases/general/issue38938.dart:6:8: Context: Previous declaration of 'v'.
+//   int? v;
+//        ^
 //
 // pkg/front_end/testcases/general/issue38938.dart:8:10: Error: Can't use 'v' because it is declared more than once.
 //   A(this.v);
@@ -17,23 +17,13 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  field core::int* v = null;
-  constructor •(core::int* v) → self::A*
+  field core::int? v = null;
+  constructor •(core::int? v) → self::A
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue38938.dart:8:10: Error: Can't use 'v' because it is declared more than once.
   A(this.v);
          ^"
     ;
-  constructor second() → self::A*
+  constructor second() → 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
 }
diff --git a/pkg/front_end/testcases/general/issue38943.dart b/pkg/front_end/testcases/general/issue38943.dart
index 2db3c96..1d86b19 100644
--- a/pkg/front_end/testcases/general/issue38943.dart
+++ b/pkg/front_end/testcases/general/issue38943.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 D<X extends void Function()> {
   factory D.foo() => new D._();
   D._() {}
diff --git a/pkg/front_end/testcases/general/issue38943.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue38943.dart.textual_outline.expect
index c666e23..f78c92f 100644
--- a/pkg/front_end/testcases/general/issue38943.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue38943.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class D<X extends void Function()> {
   factory D.foo() => new D._();
   D._() {}
diff --git a/pkg/front_end/testcases/general/issue38943.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue38943.dart.textual_outline_modelled.expect
index 3767f32..256c973 100644
--- a/pkg/front_end/testcases/general/issue38943.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue38943.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class D<X extends void Function()> {
   D._() {}
   factory D.foo() => new D._();
diff --git a/pkg/front_end/testcases/general/issue38943.dart.weak.expect b/pkg/front_end/testcases/general/issue38943.dart.weak.expect
index c723406..29dd3c5 100644
--- a/pkg/front_end/testcases/general/issue38943.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue38943.dart.weak.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class D<X extends () →* void> extends core::Object {
-  constructor _() → self::D<self::D::X*>*
+class D<X extends () → void> extends core::Object {
+  constructor _() → self::D<self::D::X>
     : super core::Object::•() {}
-  static factory foo<X extends () →* void>() → self::D<self::D::foo::X*>*
-    return new self::D::_<self::D::foo::X*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory foo<X extends () → void>() → self::D<self::D::foo::X>
+    return new self::D::_<self::D::foo::X>();
 }
 static method main() → dynamic {
-  core::print(self::D::foo<() →* void>());
+  core::print(self::D::foo<() → void>());
 }
diff --git a/pkg/front_end/testcases/general/issue38943.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue38943.dart.weak.modular.expect
index c723406..29dd3c5 100644
--- a/pkg/front_end/testcases/general/issue38943.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue38943.dart.weak.modular.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class D<X extends () →* void> extends core::Object {
-  constructor _() → self::D<self::D::X*>*
+class D<X extends () → void> extends core::Object {
+  constructor _() → self::D<self::D::X>
     : super core::Object::•() {}
-  static factory foo<X extends () →* void>() → self::D<self::D::foo::X*>*
-    return new self::D::_<self::D::foo::X*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory foo<X extends () → void>() → self::D<self::D::foo::X>
+    return new self::D::_<self::D::foo::X>();
 }
 static method main() → dynamic {
-  core::print(self::D::foo<() →* void>());
+  core::print(self::D::foo<() → void>());
 }
diff --git a/pkg/front_end/testcases/general/issue38943.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue38943.dart.weak.outline.expect
index 7c3fcaf..bc85f88 100644
--- a/pkg/front_end/testcases/general/issue38943.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue38943.dart.weak.outline.expect
@@ -1,22 +1,12 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class D<X extends () →* void> extends core::Object {
-  constructor _() → self::D<self::D::X*>*
+class D<X extends () → void> extends core::Object {
+  constructor _() → self::D<self::D::X>
     ;
-  static factory foo<X extends () →* void>() → self::D<self::D::foo::X*>*
+  static factory foo<X extends () → void>() → self::D<self::D::foo::X>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue38943.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue38943.dart.weak.transformed.expect
index c723406..29dd3c5 100644
--- a/pkg/front_end/testcases/general/issue38943.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38943.dart.weak.transformed.expect
@@ -1,23 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class D<X extends () →* void> extends core::Object {
-  constructor _() → self::D<self::D::X*>*
+class D<X extends () → void> extends core::Object {
+  constructor _() → self::D<self::D::X>
     : super core::Object::•() {}
-  static factory foo<X extends () →* void>() → self::D<self::D::foo::X*>*
-    return new self::D::_<self::D::foo::X*>();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static factory foo<X extends () → void>() → self::D<self::D::foo::X>
+    return new self::D::_<self::D::foo::X>();
 }
 static method main() → dynamic {
-  core::print(self::D::foo<() →* void>());
+  core::print(self::D::foo<() → void>());
 }
diff --git a/pkg/front_end/testcases/general/issue38944.dart b/pkg/front_end/testcases/general/issue38944.dart
index c467d0d..a0b7f42 100644
--- a/pkg/front_end/testcases/general/issue38944.dart
+++ b/pkg/front_end/testcases/general/issue38944.dart
@@ -1,6 +1,6 @@
 // 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<Q> {}
 class B<X> extends Object with A<void Function<Y extends X>()> {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/issue38944.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue38944.dart.textual_outline.expect
index 47092ea..279bc70 100644
--- a/pkg/front_end/testcases/general/issue38944.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue38944.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<Q> {}
 
 class B<X> extends Object with A<void Function<Y extends X>()> {}
diff --git a/pkg/front_end/testcases/general/issue38944.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue38944.dart.textual_outline_modelled.expect
index 47092ea..279bc70 100644
--- a/pkg/front_end/testcases/general/issue38944.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue38944.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<Q> {}
 
 class B<X> extends Object with A<void Function<Y extends X>()> {}
diff --git a/pkg/front_end/testcases/general/issue38944.dart.weak.expect b/pkg/front_end/testcases/general/issue38944.dart.weak.expect
index 6ac58de..4f9c07c 100644
--- a/pkg/front_end/testcases/general/issue38944.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue38944.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -9,38 +9,18 @@
 import self as self;
 import "dart:core" as core;
 
-class A<Q extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::Q*>*
+class A<Q extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::Q%>
     : 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&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
+abstract class _B&Object&A<X extends core::Object? = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
-  synthetic constructor •() → self::B<self::B::X*>*
+class B<X extends core::Object? = dynamic> extends self::_B&Object&A<self::B::X%> {
+  synthetic constructor •() → self::B<self::B::X%>
     : super self::_B&Object&A::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue38944.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue38944.dart.weak.modular.expect
index 6ac58de..4f9c07c 100644
--- a/pkg/front_end/testcases/general/issue38944.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue38944.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -9,38 +9,18 @@
 import self as self;
 import "dart:core" as core;
 
-class A<Q extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::Q*>*
+class A<Q extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::Q%>
     : 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&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
+abstract class _B&Object&A<X extends core::Object? = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
-  synthetic constructor •() → self::B<self::B::X*>*
+class B<X extends core::Object? = dynamic> extends self::_B&Object&A<self::B::X%> {
+  synthetic constructor •() → self::B<self::B::X%>
     : super self::_B&Object&A::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue38944.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue38944.dart.weak.outline.expect
index 2ccc972..902d393 100644
--- a/pkg/front_end/testcases/general/issue38944.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue38944.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -9,36 +9,16 @@
 import self as self;
 import "dart:core" as core;
 
-class A<Q extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::Q*>*
+class A<Q extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::Q%>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
+abstract class _B&Object&A<X extends core::Object? = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
-  synthetic constructor •() → self::B<self::B::X*>*
+class B<X extends core::Object? = dynamic> extends self::_B&Object&A<self::B::X%> {
+  synthetic constructor •() → self::B<self::B::X%>
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue38944.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue38944.dart.weak.transformed.expect
index 6ac58de..4f9c07c 100644
--- a/pkg/front_end/testcases/general/issue38944.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38944.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -9,38 +9,18 @@
 import self as self;
 import "dart:core" as core;
 
-class A<Q extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::A<self::A::Q*>*
+class A<Q extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::Q%>
     : 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&Object&A<X extends core::Object* = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X*>*
+abstract class _B&Object&A<X extends core::Object? = dynamic> extends core::Object /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_B&Object&A<self::_B&Object&A::X%>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class B<X extends core::Object* = dynamic> extends self::_B&Object&A<self::B::X*> {
-  synthetic constructor •() → self::B<self::B::X*>*
+class B<X extends core::Object? = dynamic> extends self::_B&Object&A<self::B::X%> {
+  synthetic constructor •() → self::B<self::B::X%>
     : super self::_B&Object&A::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue38961.dart b/pkg/front_end/testcases/general/issue38961.dart
index 00864c2..b98ae94 100644
--- a/pkg/front_end/testcases/general/issue38961.dart
+++ b/pkg/front_end/testcases/general/issue38961.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class C {
   dynamic x = this;
   var x = this;
diff --git a/pkg/front_end/testcases/general/issue38961.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue38961.dart.textual_outline.expect
index f67e4a5..f38f3d3 100644
--- a/pkg/front_end/testcases/general/issue38961.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue38961.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {
   dynamic x = this;
   var x = this;
diff --git a/pkg/front_end/testcases/general/issue38961.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue38961.dart.textual_outline_modelled.expect
index f67e4a5..f38f3d3 100644
--- a/pkg/front_end/testcases/general/issue38961.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue38961.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {
   dynamic x = this;
   var x = this;
diff --git a/pkg/front_end/testcases/general/issue38961.dart.weak.expect b/pkg/front_end/testcases/general/issue38961.dart.weak.expect
index a588600..0b9c61a 100644
--- a/pkg/front_end/testcases/general/issue38961.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue38961.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -22,17 +22,7 @@
 
 class C extends core::Object {
   field dynamic x = null;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : 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
 }
diff --git a/pkg/front_end/testcases/general/issue38961.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue38961.dart.weak.modular.expect
index a588600..0b9c61a 100644
--- a/pkg/front_end/testcases/general/issue38961.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue38961.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -22,17 +22,7 @@
 
 class C extends core::Object {
   field dynamic x = null;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : 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
 }
diff --git a/pkg/front_end/testcases/general/issue38961.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue38961.dart.weak.outline.expect
index 01a97d1..6b1474b 100644
--- a/pkg/front_end/testcases/general/issue38961.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue38961.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,16 +14,6 @@
 
 class C extends core::Object {
   field dynamic x;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature 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/issue38961.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue38961.dart.weak.transformed.expect
index a588600..0b9c61a 100644
--- a/pkg/front_end/testcases/general/issue38961.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38961.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -22,17 +22,7 @@
 
 class C extends core::Object {
   field dynamic x = null;
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : 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
 }
diff --git a/pkg/front_end/testcases/general/issue39344.dart b/pkg/front_end/testcases/general/issue39344.dart
index a86b905..6029631 100644
--- a/pkg/front_end/testcases/general/issue39344.dart
+++ b/pkg/front_end/testcases/general/issue39344.dart
@@ -1,13 +1,13 @@
 // 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 extends A {}
 
-List<B> xs;
-List<List<B>> xss;
+late List<B> xs;
+late List<List<B>> xss;
 
 class Class<T extends A> {
   void method1a(T t) {
diff --git a/pkg/front_end/testcases/general/issue39344.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue39344.dart.textual_outline.expect
index 27aa1fa..baee03e 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.textual_outline.expect
@@ -1,10 +1,9 @@
-// @dart = 2.9
 class A {}
 
 class B extends A {}
 
-List<B> xs;
-List<List<B>> xss;
+late List<B> xs;
+late List<List<B>> xss;
 
 class Class<T extends A> {
   void method1a(T t) {}
diff --git a/pkg/front_end/testcases/general/issue39344.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue39344.dart.textual_outline_modelled.expect
index bc21bce..5eeda1d 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.textual_outline_modelled.expect
@@ -1,18 +1,19 @@
-// @dart = 2.9
-List<B> xs;
-List<List<B>> xss;
-
 class A {}
-
 class B extends A {}
-
+---- unknown chunk starts ----
+late
+---- unknown chunk ends ----
+List<B> xs;
+---- unknown chunk starts ----
+late
+---- unknown chunk ends ----
+List<List<B>> xss;
 class Class<T extends A> {
   void method1a(T t) {}
   void method1b(T t) {}
   void method2a(T t) {}
   void method2b(T t) {}
 }
-
 void errors() {}
 void main() {}
 void throws(void Function() f) {}
diff --git a/pkg/front_end/testcases/general/issue39344.dart.weak.expect b/pkg/front_end/testcases/general/issue39344.dart.weak.expect
index fd2787d..b41852a 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -18,97 +18,77 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
-class Class<T extends self::A*> extends core::Object {
-  synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::A> extends core::Object {
+  synthetic constructor •() → self::Class<self::Class::T>
     : super core::Object::•()
     ;
-  method method1a(covariant-by-class self::Class::T* t) → void {
-    if(t is self::B*) {
-      core::List<self::Class::T*>* ys = <self::Class::T*>[t{self::Class::T* & self::B* /* '*' & '*' = '*' */}];
+  method method1a(covariant-by-class self::Class::T t) → void {
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<self::Class::T> ys = <self::Class::T>[t{self::Class::T & self::B /* '!' & '!' = '!' */}];
       self::xs = invalid-expression "pkg/front_end/testcases/general/issue39344.dart:19:12: Error: A value of type 'List<T>' can't be assigned to a variable of type 'List<B>'.
  - 'List' is from 'dart:core'.
  - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'.
       xs = ys;
-           ^" in ys as{TypeError} core::List<self::B*>*;
+           ^" in ys as{TypeError,ForNonNullableByDefault} core::List<self::B>;
     }
   }
-  method method1b(covariant-by-class self::Class::T* t) → void {
-    if(t is self::B*) {
-      core::List<core::List<self::Class::T*>*>* yss = <core::List<self::Class::T*>*>[<self::Class::T*>[t{self::Class::T* & self::B* /* '*' & '*' = '*' */}]];
+  method method1b(covariant-by-class self::Class::T t) → void {
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<core::List<self::Class::T>> yss = <core::List<self::Class::T>>[<self::Class::T>[t{self::Class::T & self::B /* '!' & '!' = '!' */}]];
       self::xss = invalid-expression "pkg/front_end/testcases/general/issue39344.dart:31:13: Error: A value of type 'List<List<T>>' can't be assigned to a variable of type 'List<List<B>>'.
  - 'List' is from 'dart:core'.
  - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'.
       xss = yss;
-            ^" in yss as{TypeError} core::List<core::List<self::B*>*>*;
+            ^" in yss as{TypeError,ForNonNullableByDefault} core::List<core::List<self::B>>;
     }
   }
-  method method2a(covariant-by-class self::Class::T* t) → void {
+  method method2a(covariant-by-class self::Class::T t) → void {
     dynamic alias;
-    if(t is self::B*) {
-      core::List<self::Class::T*>* ys = <self::Class::T*>[t{self::Class::T* & self::B* /* '*' & '*' = '*' */}];
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<self::Class::T> ys = <self::Class::T>[t{self::Class::T & self::B /* '!' & '!' = '!' */}];
       alias = ys;
-      self::xs = alias as{TypeError,ForDynamic} core::List<self::B*>*;
+      self::xs = alias as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<self::B>;
     }
   }
-  method method2b(covariant-by-class self::Class::T* t) → void {
+  method method2b(covariant-by-class self::Class::T t) → void {
     dynamic alias;
-    if(t is self::B*) {
-      core::List<core::List<self::Class::T*>*>* yss = <core::List<self::Class::T*>*>[<self::Class::T*>[t{self::Class::T* & self::B* /* '*' & '*' = '*' */}]];
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<core::List<self::Class::T>> yss = <core::List<self::Class::T>>[<self::Class::T>[t{self::Class::T & self::B /* '!' & '!' = '!' */}]];
       alias = yss;
-      self::xss = alias as{TypeError,ForDynamic} core::List<core::List<self::B*>*>*;
+      self::xss = alias as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<core::List<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 field core::List<self::B*>* xs;
-static field core::List<core::List<self::B*>*>* xss;
+late static field core::List<self::B> xs;
+late static field core::List<core::List<self::B>> xss;
 static method main() → void {
-  self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2a}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+  self::throws(() → void {
+    new self::Class::•<self::A>().{self::Class::method2a}(new self::B::•()){(self::A) → void};
+    core::print(self::xs.{core::Object::runtimeType}{core::Type});
   });
-  self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2b}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+  self::throws(() → void {
+    new self::Class::•<self::A>().{self::Class::method2b}(new self::B::•()){(self::A) → void};
+    core::print(self::xs.{core::Object::runtimeType}{core::Type});
   });
 }
 static method errors() → void {
-  new self::Class::•<self::A*>().{self::Class::method1a}(new self::B::•()){(self::A*) →* void};
-  new self::Class::•<self::A*>().{self::Class::method1b}(new self::B::•()){(self::A*) →* void};
+  new self::Class::•<self::A>().{self::Class::method1a}(new self::B::•()){(self::A) → void};
+  new self::Class::•<self::A>().{self::Class::method1b}(new self::B::•()){(self::A) → void};
 }
-static method throws(() →* void f) → void {
+static method throws(() → void f) → void {
   try {
-    f(){() →* void};
+    f(){() → void};
   }
-  on dynamic catch(final dynamic e) {
+  on core::Object catch(final core::Object e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/general/issue39344.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue39344.dart.weak.modular.expect
index fd2787d..b41852a 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -18,97 +18,77 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
-class Class<T extends self::A*> extends core::Object {
-  synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::A> extends core::Object {
+  synthetic constructor •() → self::Class<self::Class::T>
     : super core::Object::•()
     ;
-  method method1a(covariant-by-class self::Class::T* t) → void {
-    if(t is self::B*) {
-      core::List<self::Class::T*>* ys = <self::Class::T*>[t{self::Class::T* & self::B* /* '*' & '*' = '*' */}];
+  method method1a(covariant-by-class self::Class::T t) → void {
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<self::Class::T> ys = <self::Class::T>[t{self::Class::T & self::B /* '!' & '!' = '!' */}];
       self::xs = invalid-expression "pkg/front_end/testcases/general/issue39344.dart:19:12: Error: A value of type 'List<T>' can't be assigned to a variable of type 'List<B>'.
  - 'List' is from 'dart:core'.
  - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'.
       xs = ys;
-           ^" in ys as{TypeError} core::List<self::B*>*;
+           ^" in ys as{TypeError,ForNonNullableByDefault} core::List<self::B>;
     }
   }
-  method method1b(covariant-by-class self::Class::T* t) → void {
-    if(t is self::B*) {
-      core::List<core::List<self::Class::T*>*>* yss = <core::List<self::Class::T*>*>[<self::Class::T*>[t{self::Class::T* & self::B* /* '*' & '*' = '*' */}]];
+  method method1b(covariant-by-class self::Class::T t) → void {
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<core::List<self::Class::T>> yss = <core::List<self::Class::T>>[<self::Class::T>[t{self::Class::T & self::B /* '!' & '!' = '!' */}]];
       self::xss = invalid-expression "pkg/front_end/testcases/general/issue39344.dart:31:13: Error: A value of type 'List<List<T>>' can't be assigned to a variable of type 'List<List<B>>'.
  - 'List' is from 'dart:core'.
  - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'.
       xss = yss;
-            ^" in yss as{TypeError} core::List<core::List<self::B*>*>*;
+            ^" in yss as{TypeError,ForNonNullableByDefault} core::List<core::List<self::B>>;
     }
   }
-  method method2a(covariant-by-class self::Class::T* t) → void {
+  method method2a(covariant-by-class self::Class::T t) → void {
     dynamic alias;
-    if(t is self::B*) {
-      core::List<self::Class::T*>* ys = <self::Class::T*>[t{self::Class::T* & self::B* /* '*' & '*' = '*' */}];
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<self::Class::T> ys = <self::Class::T>[t{self::Class::T & self::B /* '!' & '!' = '!' */}];
       alias = ys;
-      self::xs = alias as{TypeError,ForDynamic} core::List<self::B*>*;
+      self::xs = alias as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<self::B>;
     }
   }
-  method method2b(covariant-by-class self::Class::T* t) → void {
+  method method2b(covariant-by-class self::Class::T t) → void {
     dynamic alias;
-    if(t is self::B*) {
-      core::List<core::List<self::Class::T*>*>* yss = <core::List<self::Class::T*>*>[<self::Class::T*>[t{self::Class::T* & self::B* /* '*' & '*' = '*' */}]];
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<core::List<self::Class::T>> yss = <core::List<self::Class::T>>[<self::Class::T>[t{self::Class::T & self::B /* '!' & '!' = '!' */}]];
       alias = yss;
-      self::xss = alias as{TypeError,ForDynamic} core::List<core::List<self::B*>*>*;
+      self::xss = alias as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<core::List<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 field core::List<self::B*>* xs;
-static field core::List<core::List<self::B*>*>* xss;
+late static field core::List<self::B> xs;
+late static field core::List<core::List<self::B>> xss;
 static method main() → void {
-  self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2a}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+  self::throws(() → void {
+    new self::Class::•<self::A>().{self::Class::method2a}(new self::B::•()){(self::A) → void};
+    core::print(self::xs.{core::Object::runtimeType}{core::Type});
   });
-  self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2b}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+  self::throws(() → void {
+    new self::Class::•<self::A>().{self::Class::method2b}(new self::B::•()){(self::A) → void};
+    core::print(self::xs.{core::Object::runtimeType}{core::Type});
   });
 }
 static method errors() → void {
-  new self::Class::•<self::A*>().{self::Class::method1a}(new self::B::•()){(self::A*) →* void};
-  new self::Class::•<self::A*>().{self::Class::method1b}(new self::B::•()){(self::A*) →* void};
+  new self::Class::•<self::A>().{self::Class::method1a}(new self::B::•()){(self::A) → void};
+  new self::Class::•<self::A>().{self::Class::method1b}(new self::B::•()){(self::A) → void};
 }
-static method throws(() →* void f) → void {
+static method throws(() → void f) → void {
   try {
-    f(){() →* void};
+    f(){() → void};
   }
-  on dynamic catch(final dynamic e) {
+  on core::Object catch(final core::Object e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/general/issue39344.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue39344.dart.weak.outline.expect
index 49bc2e6..463057f 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.weak.outline.expect
@@ -1,52 +1,32 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
 }
-class Class<T extends self::A*> extends core::Object {
-  synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::A> extends core::Object {
+  synthetic constructor •() → self::Class<self::Class::T>
     ;
-  method method1a(covariant-by-class self::Class::T* t) → void
+  method method1a(covariant-by-class self::Class::T t) → void
     ;
-  method method1b(covariant-by-class self::Class::T* t) → void
+  method method1b(covariant-by-class self::Class::T t) → void
     ;
-  method method2a(covariant-by-class self::Class::T* t) → void
+  method method2a(covariant-by-class self::Class::T t) → void
     ;
-  method method2b(covariant-by-class self::Class::T* t) → void
+  method method2b(covariant-by-class self::Class::T 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
 }
-static field core::List<self::B*>* xs;
-static field core::List<core::List<self::B*>*>* xss;
+late static field core::List<self::B> xs;
+late static field core::List<core::List<self::B>> xss;
 static method main() → void
   ;
 static method errors() → void
   ;
-static method throws(() →* void f) → void
+static method throws(() → void f) → void
   ;
diff --git a/pkg/front_end/testcases/general/issue39344.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue39344.dart.weak.transformed.expect
index 0e2b847..8febbfe 100644
--- a/pkg/front_end/testcases/general/issue39344.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue39344.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -18,97 +18,77 @@
 import "dart:core" as core;
 
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
 }
-class Class<T extends self::A*> extends core::Object {
-  synthetic constructor •() → self::Class<self::Class::T*>*
+class Class<T extends self::A> extends core::Object {
+  synthetic constructor •() → self::Class<self::Class::T>
     : super core::Object::•()
     ;
-  method method1a(covariant-by-class self::Class::T* t) → void {
-    if(t is self::B*) {
-      core::List<self::Class::T*>* ys = core::_GrowableList::_literal1<self::Class::T*>(t{self::Class::T* & self::B* /* '*' & '*' = '*' */});
+  method method1a(covariant-by-class self::Class::T t) → void {
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<self::Class::T> ys = core::_GrowableList::_literal1<self::Class::T>(t{self::Class::T & self::B /* '!' & '!' = '!' */});
       self::xs = invalid-expression "pkg/front_end/testcases/general/issue39344.dart:19:12: Error: A value of type 'List<T>' can't be assigned to a variable of type 'List<B>'.
  - 'List' is from 'dart:core'.
  - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'.
       xs = ys;
-           ^" in ys as{TypeError} core::List<self::B*>*;
+           ^" in ys as{TypeError,ForNonNullableByDefault} core::List<self::B>;
     }
   }
-  method method1b(covariant-by-class self::Class::T* t) → void {
-    if(t is self::B*) {
-      core::List<core::List<self::Class::T*>*>* yss = core::_GrowableList::_literal1<core::List<self::Class::T*>*>(core::_GrowableList::_literal1<self::Class::T*>(t{self::Class::T* & self::B* /* '*' & '*' = '*' */}));
+  method method1b(covariant-by-class self::Class::T t) → void {
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<core::List<self::Class::T>> yss = core::_GrowableList::_literal1<core::List<self::Class::T>>(core::_GrowableList::_literal1<self::Class::T>(t{self::Class::T & self::B /* '!' & '!' = '!' */}));
       self::xss = invalid-expression "pkg/front_end/testcases/general/issue39344.dart:31:13: Error: A value of type 'List<List<T>>' can't be assigned to a variable of type 'List<List<B>>'.
  - 'List' is from 'dart:core'.
  - 'B' is from 'pkg/front_end/testcases/general/issue39344.dart'.
       xss = yss;
-            ^" in yss as{TypeError} core::List<core::List<self::B*>*>*;
+            ^" in yss as{TypeError,ForNonNullableByDefault} core::List<core::List<self::B>>;
     }
   }
-  method method2a(covariant-by-class self::Class::T* t) → void {
+  method method2a(covariant-by-class self::Class::T t) → void {
     dynamic alias;
-    if(t is self::B*) {
-      core::List<self::Class::T*>* ys = core::_GrowableList::_literal1<self::Class::T*>(t{self::Class::T* & self::B* /* '*' & '*' = '*' */});
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<self::Class::T> ys = core::_GrowableList::_literal1<self::Class::T>(t{self::Class::T & self::B /* '!' & '!' = '!' */});
       alias = ys;
-      self::xs = alias as{TypeError,ForDynamic} core::List<self::B*>*;
+      self::xs = alias as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<self::B>;
     }
   }
-  method method2b(covariant-by-class self::Class::T* t) → void {
+  method method2b(covariant-by-class self::Class::T t) → void {
     dynamic alias;
-    if(t is self::B*) {
-      core::List<core::List<self::Class::T*>*>* yss = core::_GrowableList::_literal1<core::List<self::Class::T*>*>(core::_GrowableList::_literal1<self::Class::T*>(t{self::Class::T* & self::B* /* '*' & '*' = '*' */}));
+    if(t is{ForNonNullableByDefault} self::B) {
+      core::List<core::List<self::Class::T>> yss = core::_GrowableList::_literal1<core::List<self::Class::T>>(core::_GrowableList::_literal1<self::Class::T>(t{self::Class::T & self::B /* '!' & '!' = '!' */}));
       alias = yss;
-      self::xss = alias as{TypeError,ForDynamic} core::List<core::List<self::B*>*>*;
+      self::xss = alias as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<core::List<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 field core::List<self::B*>* xs;
-static field core::List<core::List<self::B*>*>* xss;
+late static field core::List<self::B> xs;
+late static field core::List<core::List<self::B>> xss;
 static method main() → void {
-  self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2a}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+  self::throws(() → void {
+    new self::Class::•<self::A>().{self::Class::method2a}(new self::B::•()){(self::A) → void};
+    core::print(self::xs.{core::Object::runtimeType}{core::Type});
   });
-  self::throws(() → Null {
-    new self::Class::•<self::A*>().{self::Class::method2b}(new self::B::•()){(self::A*) →* void};
-    core::print(self::xs.{core::Object::runtimeType}{core::Type*});
+  self::throws(() → void {
+    new self::Class::•<self::A>().{self::Class::method2b}(new self::B::•()){(self::A) → void};
+    core::print(self::xs.{core::Object::runtimeType}{core::Type});
   });
 }
 static method errors() → void {
-  new self::Class::•<self::A*>().{self::Class::method1a}(new self::B::•()){(self::A*) →* void};
-  new self::Class::•<self::A*>().{self::Class::method1b}(new self::B::•()){(self::A*) →* void};
+  new self::Class::•<self::A>().{self::Class::method1a}(new self::B::•()){(self::A) → void};
+  new self::Class::•<self::A>().{self::Class::method1b}(new self::B::•()){(self::A) → void};
 }
-static method throws(() →* void f) → void {
+static method throws(() → void f) → void {
   try {
-    f(){() →* void};
+    f(){() → void};
   }
-  on dynamic catch(final dynamic e) {
+  on core::Object catch(final core::Object e) {
     core::print(e);
     return;
   }
diff --git a/pkg/front_end/testcases/general/issue39421.dart b/pkg/front_end/testcases/general/issue39421.dart
index e91ce36..e83ee28 100644
--- a/pkg/front_end/testcases/general/issue39421.dart
+++ b/pkg/front_end/testcases/general/issue39421.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
+
 // This is a regression test for http://dartbug.com/39421.
 
 class A {}
diff --git a/pkg/front_end/testcases/general/issue39421.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue39421.dart.textual_outline.expect
index 57219b5..8ac9791 100644
--- a/pkg/front_end/testcases/general/issue39421.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue39421.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {}
 
 class A {}
diff --git a/pkg/front_end/testcases/general/issue39421.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue39421.dart.textual_outline_modelled.expect
index 57219b5..8ac9791 100644
--- a/pkg/front_end/testcases/general/issue39421.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue39421.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {}
 
 class A {}
diff --git a/pkg/front_end/testcases/general/issue39421.dart.weak.expect b/pkg/front_end/testcases/general/issue39421.dart.weak.expect
index cb1d71a..8c5950d 100644
--- a/pkg/front_end/testcases/general/issue39421.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue39421.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -24,55 +24,25 @@
 import "dart:core" as core;
 
 class A#1 extends core::Object {
-  synthetic constructor •() → self::A#1*
+  synthetic constructor •() → self::A#1
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method foo(core::List<Null>* a) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo(core::List<Null> a) → dynamic {}
 }
 class C extends self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::B::•()
     ;
-  method foo(core::List<invalid-type>* a) → dynamic {}
+  method foo(core::List<invalid-type> a) → dynamic {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue39421.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue39421.dart.weak.modular.expect
index cb1d71a..8c5950d 100644
--- a/pkg/front_end/testcases/general/issue39421.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue39421.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -24,55 +24,25 @@
 import "dart:core" as core;
 
 class A#1 extends core::Object {
-  synthetic constructor •() → self::A#1*
+  synthetic constructor •() → self::A#1
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method foo(core::List<Null>* a) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo(core::List<Null> a) → dynamic {}
 }
 class C extends self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::B::•()
     ;
-  method foo(core::List<invalid-type>* a) → dynamic {}
+  method foo(core::List<invalid-type> a) → dynamic {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue39421.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue39421.dart.weak.outline.expect
index 7f2378b..6e45e4e 100644
--- a/pkg/front_end/testcases/general/issue39421.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue39421.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -20,53 +20,23 @@
 import "dart:core" as core;
 
 class A#1 extends core::Object {
-  synthetic constructor •() → self::A#1*
+  synthetic constructor •() → self::A#1
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  method foo(core::List<Null>* a) → dynamic
+  method foo(core::List<Null> a) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  method foo(core::List<invalid-type>* a) → dynamic
+  method foo(core::List<invalid-type> a) → dynamic
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/issue39421.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue39421.dart.weak.transformed.expect
index cb1d71a..8c5950d 100644
--- a/pkg/front_end/testcases/general/issue39421.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue39421.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -24,55 +24,25 @@
 import "dart:core" as core;
 
 class A#1 extends core::Object {
-  synthetic constructor •() → self::A#1*
+  synthetic constructor •() → self::A#1
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  method foo(core::List<Null>* a) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method foo(core::List<Null> a) → dynamic {}
 }
 class C extends self::B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::B::•()
     ;
-  method foo(core::List<invalid-type>* a) → dynamic {}
+  method foo(core::List<invalid-type> a) → dynamic {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue39817.dart b/pkg/front_end/testcases/general/issue39817.dart
index aba9ee1..6dcfcce 100644
--- a/pkg/front_end/testcases/general/issue39817.dart
+++ b/pkg/front_end/testcases/general/issue39817.dart
@@ -1,7 +1,9 @@
 // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
+
 // @dart=2.9
+
 // This is a regression test for http://dartbug.com/39817.
 
 foo() {
diff --git a/pkg/front_end/testcases/general/issue40242.dart b/pkg/front_end/testcases/general/issue40242.dart
index 1e4a836..afd8f73 100644
--- a/pkg/front_end/testcases/general/issue40242.dart
+++ b/pkg/front_end/testcases/general/issue40242.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 C {}
 
 extension E on C {
diff --git a/pkg/front_end/testcases/general/issue40242.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue40242.dart.textual_outline.expect
index b5194c1..4b76f91 100644
--- a/pkg/front_end/testcases/general/issue40242.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue40242.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {}
 
 extension E on C {
diff --git a/pkg/front_end/testcases/general/issue40242.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue40242.dart.textual_outline_modelled.expect
index 519f8af..91844c5 100644
--- a/pkg/front_end/testcases/general/issue40242.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue40242.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C {}
 
 errors() {}
diff --git a/pkg/front_end/testcases/general/issue40242.dart.weak.expect b/pkg/front_end/testcases/general/issue40242.dart.weak.expect
index 69ece96a..cd16aae 100644
--- a/pkg/front_end/testcases/general/issue40242.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue40242.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -26,40 +26,30 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : 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
 }
-extension E on self::C* {
+extension E on self::C {
   method errors = self::E|errors;
   tearoff errors = self::E|get#errors;
 }
-static method E|errors(lowered final self::C* #this) → dynamic {
+static method E|errors(lowered final self::C #this) → dynamic {
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:9:5: Error: Can't assign to 'this'.
     this = new C();
     ^^^^";
 }
-static method E|get#errors(lowered final self::C* #this) → () →* dynamic
+static method E|get#errors(lowered final self::C #this) → () → dynamic
   return () → dynamic => self::E|errors(#this);
 static method errors() → dynamic {
-  final self::C* c1 = new self::C::•();
+  final self::C c1 = new self::C::•();
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:15:3: Error: Can't assign to the final variable 'c1'.
   c1 = new C();
   ^^";
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:16:3: Error: Can't assign to a type literal.
   C = Object;
   ^";
-  self::C* c2;
+  self::C c2;
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:18:6: Error: Can't assign to a parenthesized expression.
   (c2) = new C();
      ^";
diff --git a/pkg/front_end/testcases/general/issue40242.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue40242.dart.weak.modular.expect
index 69ece96a..cd16aae 100644
--- a/pkg/front_end/testcases/general/issue40242.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue40242.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -26,40 +26,30 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : 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
 }
-extension E on self::C* {
+extension E on self::C {
   method errors = self::E|errors;
   tearoff errors = self::E|get#errors;
 }
-static method E|errors(lowered final self::C* #this) → dynamic {
+static method E|errors(lowered final self::C #this) → dynamic {
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:9:5: Error: Can't assign to 'this'.
     this = new C();
     ^^^^";
 }
-static method E|get#errors(lowered final self::C* #this) → () →* dynamic
+static method E|get#errors(lowered final self::C #this) → () → dynamic
   return () → dynamic => self::E|errors(#this);
 static method errors() → dynamic {
-  final self::C* c1 = new self::C::•();
+  final self::C c1 = new self::C::•();
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:15:3: Error: Can't assign to the final variable 'c1'.
   c1 = new C();
   ^^";
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:16:3: Error: Can't assign to a type literal.
   C = Object;
   ^";
-  self::C* c2;
+  self::C c2;
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:18:6: Error: Can't assign to a parenthesized expression.
   (c2) = new C();
      ^";
diff --git a/pkg/front_end/testcases/general/issue40242.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue40242.dart.weak.outline.expect
index 09336b0..98b7dfa 100644
--- a/pkg/front_end/testcases/general/issue40242.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue40242.dart.weak.outline.expect
@@ -1,28 +1,18 @@
-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
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-extension E on self::C* {
+extension E on self::C {
   method errors = self::E|errors;
   tearoff errors = self::E|get#errors;
 }
-static method E|errors(lowered final self::C* #this) → dynamic
+static method E|errors(lowered final self::C #this) → dynamic
   ;
-static method E|get#errors(lowered final self::C* #this) → () →* dynamic
+static method E|get#errors(lowered final self::C #this) → () → dynamic
   return () → dynamic => self::E|errors(#this);
 static method errors() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue40242.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40242.dart.weak.transformed.expect
index 69ece96a..cd16aae 100644
--- a/pkg/front_end/testcases/general/issue40242.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40242.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -26,40 +26,30 @@
 import "dart:core" as core;
 
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : 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
 }
-extension E on self::C* {
+extension E on self::C {
   method errors = self::E|errors;
   tearoff errors = self::E|get#errors;
 }
-static method E|errors(lowered final self::C* #this) → dynamic {
+static method E|errors(lowered final self::C #this) → dynamic {
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:9:5: Error: Can't assign to 'this'.
     this = new C();
     ^^^^";
 }
-static method E|get#errors(lowered final self::C* #this) → () →* dynamic
+static method E|get#errors(lowered final self::C #this) → () → dynamic
   return () → dynamic => self::E|errors(#this);
 static method errors() → dynamic {
-  final self::C* c1 = new self::C::•();
+  final self::C c1 = new self::C::•();
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:15:3: Error: Can't assign to the final variable 'c1'.
   c1 = new C();
   ^^";
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:16:3: Error: Can't assign to a type literal.
   C = Object;
   ^";
-  self::C* c2;
+  self::C c2;
   invalid-expression "pkg/front_end/testcases/general/issue40242.dart:18:6: Error: Can't assign to a parenthesized expression.
   (c2) = new C();
      ^";
diff --git a/pkg/front_end/testcases/general/issue40428.dart b/pkg/front_end/testcases/general/issue40428.dart
index 1fc3e08..f24cb23 100644
--- a/pkg/front_end/testcases/general/issue40428.dart
+++ b/pkg/front_end/testcases/general/issue40428.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 abstract class SuperClass1 {
   final String value;
 
diff --git a/pkg/front_end/testcases/general/issue40428.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue40428.dart.textual_outline.expect
index 8fdd117..4508570 100644
--- a/pkg/front_end/testcases/general/issue40428.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue40428.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class SuperClass1 {
   final String value;
   SuperClass1(this.value);
diff --git a/pkg/front_end/testcases/general/issue40428.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue40428.dart.textual_outline_modelled.expect
index b87094b..b9d7f4f 100644
--- a/pkg/front_end/testcases/general/issue40428.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue40428.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class SuperClass1 {
   SuperClass1(this.value);
   final String value;
diff --git a/pkg/front_end/testcases/general/issue40428.dart.weak.expect b/pkg/front_end/testcases/general/issue40428.dart.weak.expect
index d89d308..d9be0ec 100644
--- a/pkg/front_end/testcases/general/issue40428.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue40428.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,59 +14,29 @@
 import "dart:core" as core;
 
 abstract class SuperClass1 extends core::Object {
-  final field core::String* value;
-  constructor •(core::String* value) → self::SuperClass1*
+  final field core::String value;
+  constructor •(core::String value) → self::SuperClass1
     : self::SuperClass1::value = value, 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 SuperClass2 extends core::Object {
-  final field core::String* value;
-  constructor •(core::String* i) → self::SuperClass2*
+  final field core::String value;
+  constructor •(core::String i) → self::SuperClass2
     : self::SuperClass2::value = i, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : 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 NamedMixin1 = self::SuperClass1 with self::Mixin {
-  synthetic constructor •(core::String* value) → self::NamedMixin1*
+  synthetic constructor •(core::String value) → self::NamedMixin1
     : super self::SuperClass1::•(value)
     ;
 }
 class NamedMixin2 = self::SuperClass2 with self::Mixin {
-  synthetic constructor •(core::String* i) → self::NamedMixin2*
+  synthetic constructor •(core::String i) → self::NamedMixin2
     : super self::SuperClass2::•(i)
     ;
 }
@@ -77,8 +47,8 @@
 static method errors() → dynamic {
   new self::NamedMixin1::•(invalid-expression "pkg/front_end/testcases/general/issue40428.dart:28:19: Error: The argument type 'int' can't be assigned to the parameter type 'String'.
   new NamedMixin1(0);
-                  ^" in 0 as{TypeError} core::String*);
+                  ^" in 0 as{TypeError,ForNonNullableByDefault} core::String);
   new self::NamedMixin2::•(invalid-expression "pkg/front_end/testcases/general/issue40428.dart:29:19: Error: The argument type 'int' can't be assigned to the parameter type 'String'.
   new NamedMixin2(0);
-                  ^" in 0 as{TypeError} core::String*);
+                  ^" in 0 as{TypeError,ForNonNullableByDefault} core::String);
 }
diff --git a/pkg/front_end/testcases/general/issue40428.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue40428.dart.weak.modular.expect
index d89d308..d9be0ec 100644
--- a/pkg/front_end/testcases/general/issue40428.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue40428.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,59 +14,29 @@
 import "dart:core" as core;
 
 abstract class SuperClass1 extends core::Object {
-  final field core::String* value;
-  constructor •(core::String* value) → self::SuperClass1*
+  final field core::String value;
+  constructor •(core::String value) → self::SuperClass1
     : self::SuperClass1::value = value, 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 SuperClass2 extends core::Object {
-  final field core::String* value;
-  constructor •(core::String* i) → self::SuperClass2*
+  final field core::String value;
+  constructor •(core::String i) → self::SuperClass2
     : self::SuperClass2::value = i, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : 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 NamedMixin1 = self::SuperClass1 with self::Mixin {
-  synthetic constructor •(core::String* value) → self::NamedMixin1*
+  synthetic constructor •(core::String value) → self::NamedMixin1
     : super self::SuperClass1::•(value)
     ;
 }
 class NamedMixin2 = self::SuperClass2 with self::Mixin {
-  synthetic constructor •(core::String* i) → self::NamedMixin2*
+  synthetic constructor •(core::String i) → self::NamedMixin2
     : super self::SuperClass2::•(i)
     ;
 }
@@ -77,8 +47,8 @@
 static method errors() → dynamic {
   new self::NamedMixin1::•(invalid-expression "pkg/front_end/testcases/general/issue40428.dart:28:19: Error: The argument type 'int' can't be assigned to the parameter type 'String'.
   new NamedMixin1(0);
-                  ^" in 0 as{TypeError} core::String*);
+                  ^" in 0 as{TypeError,ForNonNullableByDefault} core::String);
   new self::NamedMixin2::•(invalid-expression "pkg/front_end/testcases/general/issue40428.dart:29:19: Error: The argument type 'int' can't be assigned to the parameter type 'String'.
   new NamedMixin2(0);
-                  ^" in 0 as{TypeError} core::String*);
+                  ^" in 0 as{TypeError,ForNonNullableByDefault} core::String);
 }
diff --git a/pkg/front_end/testcases/general/issue40428.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue40428.dart.weak.outline.expect
index 3194a2a..500d223 100644
--- a/pkg/front_end/testcases/general/issue40428.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue40428.dart.weak.outline.expect
@@ -1,58 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class SuperClass1 extends core::Object {
-  final field core::String* value;
-  constructor •(core::String* value) → self::SuperClass1*
+  final field core::String value;
+  constructor •(core::String value) → self::SuperClass1
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 SuperClass2 extends core::Object {
-  final field core::String* value;
-  constructor •(core::String* i) → self::SuperClass2*
+  final field core::String value;
+  constructor •(core::String i) → self::SuperClass2
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 NamedMixin1 = self::SuperClass1 with self::Mixin {
-  synthetic constructor •(core::String* value) → self::NamedMixin1*
+  synthetic constructor •(core::String value) → self::NamedMixin1
     : super self::SuperClass1::•(value)
     ;
 }
 class NamedMixin2 = self::SuperClass2 with self::Mixin {
-  synthetic constructor •(core::String* i) → self::NamedMixin2*
+  synthetic constructor •(core::String i) → self::NamedMixin2
     : super self::SuperClass2::•(i)
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue40428.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40428.dart.weak.transformed.expect
index 5bc89f5..4ef294b 100644
--- a/pkg/front_end/testcases/general/issue40428.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40428.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,59 +14,29 @@
 import "dart:core" as core;
 
 abstract class SuperClass1 extends core::Object {
-  final field core::String* value;
-  constructor •(core::String* value) → self::SuperClass1*
+  final field core::String value;
+  constructor •(core::String value) → self::SuperClass1
     : self::SuperClass1::value = value, 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 SuperClass2 extends core::Object {
-  final field core::String* value;
-  constructor •(core::String* i) → self::SuperClass2*
+  final field core::String value;
+  constructor •(core::String i) → self::SuperClass2
     : self::SuperClass2::value = i, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : 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 NamedMixin1 extends self::SuperClass1 implements self::Mixin /*isEliminatedMixin*/  {
-  synthetic constructor •(core::String* value) → self::NamedMixin1*
+  synthetic constructor •(core::String value) → self::NamedMixin1
     : super self::SuperClass1::•(value)
     ;
 }
 class NamedMixin2 extends self::SuperClass2 implements self::Mixin /*isEliminatedMixin*/  {
-  synthetic constructor •(core::String* i) → self::NamedMixin2*
+  synthetic constructor •(core::String i) → self::NamedMixin2
     : super self::SuperClass2::•(i)
     ;
 }
@@ -77,8 +47,8 @@
 static method errors() → dynamic {
   new self::NamedMixin1::•(invalid-expression "pkg/front_end/testcases/general/issue40428.dart:28:19: Error: The argument type 'int' can't be assigned to the parameter type 'String'.
   new NamedMixin1(0);
-                  ^" in 0 as{TypeError} core::String*);
+                  ^" in 0 as{TypeError,ForNonNullableByDefault} core::String);
   new self::NamedMixin2::•(invalid-expression "pkg/front_end/testcases/general/issue40428.dart:29:19: Error: The argument type 'int' can't be assigned to the parameter type 'String'.
   new NamedMixin2(0);
-                  ^" in 0 as{TypeError} core::String*);
+                  ^" in 0 as{TypeError,ForNonNullableByDefault} core::String);
 }
diff --git a/pkg/front_end/testcases/general/issue40662.dart b/pkg/front_end/testcases/general/issue40662.dart
index fba166b..a1889fa 100644
--- a/pkg/front_end/testcases/general/issue40662.dart
+++ b/pkg/front_end/testcases/general/issue40662.dart
@@ -1,11 +1,11 @@
 // 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.
-//
-// Regression test for https://github.com/dart-lang/sdk/issues/40662.
 
 // @dart=2.9
 
+// Regression test for https://github.com/dart-lang/sdk/issues/40662.
+
 bar(int a, List<int> b) {
   expect(-1, a);
   expect(-1, (b[0] - 2));
diff --git a/pkg/front_end/testcases/general/issue40744.dart b/pkg/front_end/testcases/general/issue40744.dart
index 009149f..3d0dbc4 100644
--- a/pkg/front_end/testcases/general/issue40744.dart
+++ b/pkg/front_end/testcases/general/issue40744.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
+
 const generatorConfigDefaultJson = <String, dynamic>{'a': 1};
 
 void helper(Map<String, dynamic> input) {
diff --git a/pkg/front_end/testcases/general/issue40744.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue40744.dart.textual_outline.expect
index fbd3bb3..dd27ae6 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 const generatorConfigDefaultJson = <String, dynamic>{'a': 1};
 void helper(Map<String, dynamic> input) {}
 void main() {}
diff --git a/pkg/front_end/testcases/general/issue40744.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue40744.dart.textual_outline_modelled.expect
index fbd3bb3..dd27ae6 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 const generatorConfigDefaultJson = <String, dynamic>{'a': 1};
 void helper(Map<String, dynamic> input) {}
 void main() {}
diff --git a/pkg/front_end/testcases/general/issue40744.dart.weak.expect b/pkg/front_end/testcases/general/issue40744.dart.weak.expect
index cab8593..ccb4fb1 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.weak.expect
@@ -1,13 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static const field core::Map<core::String*, dynamic>* generatorConfigDefaultJson = #C3;
-static method helper(core::Map<core::String*, dynamic>* input) → void {
+static const field core::Map<core::String, dynamic> generatorConfigDefaultJson = #C3;
+static method helper(core::Map<core::String, dynamic> input) → void {
   core::print(input);
 }
 static method main() → void {
-  final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}{core::String*}, null)){((core::MapEntry<core::String*, dynamic>*) →* core::MapEntry<core::String*, Null>*) →* core::Iterable<core::MapEntry<core::String*, Null>*>*});
+  final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::_<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>});
   self::helper(nullValueMap);
 }
 
diff --git a/pkg/front_end/testcases/general/issue40744.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue40744.dart.weak.modular.expect
index cab8593..ccb4fb1 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.weak.modular.expect
@@ -1,13 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static const field core::Map<core::String*, dynamic>* generatorConfigDefaultJson = #C3;
-static method helper(core::Map<core::String*, dynamic>* input) → void {
+static const field core::Map<core::String, dynamic> generatorConfigDefaultJson = #C3;
+static method helper(core::Map<core::String, dynamic> input) → void {
   core::print(input);
 }
 static method main() → void {
-  final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}{core::String*}, null)){((core::MapEntry<core::String*, dynamic>*) →* core::MapEntry<core::String*, Null>*) →* core::Iterable<core::MapEntry<core::String*, Null>*>*});
+  final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::_<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>});
   self::helper(nullValueMap);
 }
 
diff --git a/pkg/front_end/testcases/general/issue40744.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue40744.dart.weak.outline.expect
index 5acf79e..6391fcb 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.weak.outline.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static const field core::Map<core::String*, dynamic>* generatorConfigDefaultJson = const <core::String*, dynamic>{"a": 1};
-static method helper(core::Map<core::String*, dynamic>* input) → void
+static const field core::Map<core::String, dynamic> generatorConfigDefaultJson = const <core::String, dynamic>{"a": 1};
+static method helper(core::Map<core::String, dynamic> input) → void
   ;
 static method main() → void
   ;
diff --git a/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect
index cab8593..ccb4fb1 100644
--- a/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40744.dart.weak.transformed.expect
@@ -1,13 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static const field core::Map<core::String*, dynamic>* generatorConfigDefaultJson = #C3;
-static method helper(core::Map<core::String*, dynamic>* input) → void {
+static const field core::Map<core::String, dynamic> generatorConfigDefaultJson = #C3;
+static method helper(core::Map<core::String, dynamic> input) → void {
   core::print(input);
 }
 static method main() → void {
-  final core::Map<core::String*, Null>* nullValueMap = core::Map::fromEntries<core::String*, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String*, dynamic>*>*}.{core::Iterable::map}<core::MapEntry<core::String*, Null>*>((core::MapEntry<core::String*, dynamic>* e) → core::MapEntry<core::String*, Null>* => new core::MapEntry::_<core::String*, Null>(e.{core::MapEntry::key}{core::String*}, null)){((core::MapEntry<core::String*, dynamic>*) →* core::MapEntry<core::String*, Null>*) →* core::Iterable<core::MapEntry<core::String*, Null>*>*});
+  final core::Map<core::String, Null> nullValueMap = core::Map::fromEntries<core::String, Null>(#C3.{core::Map::entries}{core::Iterable<core::MapEntry<core::String, dynamic>>}.{core::Iterable::map}<core::MapEntry<core::String, Null>>((core::MapEntry<core::String, dynamic> e) → core::MapEntry<core::String, Null> => new core::MapEntry::_<core::String, Null>(e.{core::MapEntry::key}{core::String}, null)){((core::MapEntry<core::String, dynamic>) → core::MapEntry<core::String, Null>) → core::Iterable<core::MapEntry<core::String, Null>>});
   self::helper(nullValueMap);
 }
 
diff --git a/pkg/front_end/testcases/general/issue40982.dart b/pkg/front_end/testcases/general/issue40982.dart
index 814de11..ed06fc3 100644
--- a/pkg/front_end/testcases/general/issue40982.dart
+++ b/pkg/front_end/testcases/general/issue40982.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 {
   const A();
 }
diff --git a/pkg/front_end/testcases/general/issue40982.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue40982.dart.textual_outline.expect
index 0e31b42a..d0c04bf 100644
--- a/pkg/front_end/testcases/general/issue40982.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue40982.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   const A();
 }
diff --git a/pkg/front_end/testcases/general/issue40982.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue40982.dart.textual_outline_modelled.expect
index 155c775..eeaccee 100644
--- a/pkg/front_end/testcases/general/issue40982.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue40982.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   const A();
 }
diff --git a/pkg/front_end/testcases/general/issue40982.dart.weak.expect b/pkg/front_end/testcases/general/issue40982.dart.weak.expect
index 9eb651c..ddecd50 100644
--- a/pkg/front_end/testcases/general/issue40982.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue40982.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,91 +14,61 @@
 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
 }
 abstract class B extends core::Object /*isMixinDeclaration*/  {
-  static const field core::int* value = #C1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static const field core::int value = #C1;
 }
 abstract class _C1&A&B = self::A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C1&A&B*
+  const synthetic constructor •() → self::_C1&A&B
     : super self::A::•()
     ;
 }
 class C1 extends self::_C1&A&B /*hasConstConstructor*/  {
-  const constructor •() → self::C1*
+  const constructor •() → self::C1
     : super self::_C1&A&B::•()
     ;
 }
 class C2 = self::A with self::B /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::C2*
+  const synthetic constructor •() → self::C2
     : super self::A::•()
     ;
 }
 class C3 extends self::C2 /*hasConstConstructor*/  {
-  const constructor •() → self::C3*
+  const constructor •() → self::C3
     : super self::C2::•()
     ;
 }
 abstract class D extends core::Object /*isMixinDeclaration*/  {
-  field core::int* value = 1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  field core::int value = 1;
 }
 abstract class _E1&A&D = self::A with self::D /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_E1&A&D*
+  synthetic constructor •() → self::_E1&A&D
     : super self::A::•()
     ;
-  mixin-super-stub get value() → core::int*
+  mixin-super-stub get value() → core::int
     return super.{self::D::value};
-  mixin-super-stub set value(core::int* value) → void
+  mixin-super-stub set value(core::int value) → void
     return super.{self::D::value} = value;
 }
 class E1 extends self::_E1&A&D /*hasConstConstructor*/  {
-  const constructor •() → self::E1*
+  const constructor •() → self::E1
     : super self::_E1&A&D::•()
     ;
 }
 class E2 = self::A with self::D {
-  synthetic constructor •() → self::E2*
+  synthetic constructor •() → self::E2
     : super self::A::•()
     ;
-  mixin-super-stub get value() → core::int*
+  mixin-super-stub get value() → core::int
     return super.{self::D::value};
-  mixin-super-stub set value(core::int* value) → void
+  mixin-super-stub set value(core::int value) → void
     return super.{self::D::value} = value;
 }
 class E3 extends self::E2 /*hasConstConstructor*/  {
-  const constructor •() → self::E3*
+  const constructor •() → self::E3
     : super self::E2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue40982.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue40982.dart.weak.modular.expect
index 9eb651c..ddecd50 100644
--- a/pkg/front_end/testcases/general/issue40982.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue40982.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,91 +14,61 @@
 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
 }
 abstract class B extends core::Object /*isMixinDeclaration*/  {
-  static const field core::int* value = #C1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static const field core::int value = #C1;
 }
 abstract class _C1&A&B = self::A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C1&A&B*
+  const synthetic constructor •() → self::_C1&A&B
     : super self::A::•()
     ;
 }
 class C1 extends self::_C1&A&B /*hasConstConstructor*/  {
-  const constructor •() → self::C1*
+  const constructor •() → self::C1
     : super self::_C1&A&B::•()
     ;
 }
 class C2 = self::A with self::B /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::C2*
+  const synthetic constructor •() → self::C2
     : super self::A::•()
     ;
 }
 class C3 extends self::C2 /*hasConstConstructor*/  {
-  const constructor •() → self::C3*
+  const constructor •() → self::C3
     : super self::C2::•()
     ;
 }
 abstract class D extends core::Object /*isMixinDeclaration*/  {
-  field core::int* value = 1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  field core::int value = 1;
 }
 abstract class _E1&A&D = self::A with self::D /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_E1&A&D*
+  synthetic constructor •() → self::_E1&A&D
     : super self::A::•()
     ;
-  mixin-super-stub get value() → core::int*
+  mixin-super-stub get value() → core::int
     return super.{self::D::value};
-  mixin-super-stub set value(core::int* value) → void
+  mixin-super-stub set value(core::int value) → void
     return super.{self::D::value} = value;
 }
 class E1 extends self::_E1&A&D /*hasConstConstructor*/  {
-  const constructor •() → self::E1*
+  const constructor •() → self::E1
     : super self::_E1&A&D::•()
     ;
 }
 class E2 = self::A with self::D {
-  synthetic constructor •() → self::E2*
+  synthetic constructor •() → self::E2
     : super self::A::•()
     ;
-  mixin-super-stub get value() → core::int*
+  mixin-super-stub get value() → core::int
     return super.{self::D::value};
-  mixin-super-stub set value(core::int* value) → void
+  mixin-super-stub set value(core::int value) → void
     return super.{self::D::value} = value;
 }
 class E3 extends self::E2 /*hasConstConstructor*/  {
-  const constructor •() → self::E3*
+  const constructor •() → self::E3
     : super self::E2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue40982.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue40982.dart.weak.outline.expect
index 90a0ef0..bc71b00 100644
--- a/pkg/front_end/testcases/general/issue40982.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue40982.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,91 +14,61 @@
 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
 }
 abstract class B extends core::Object /*isMixinDeclaration*/  {
-  static const field core::int* value = 1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static const field core::int value = 1;
 }
 abstract class _C1&A&B = self::A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C1&A&B*
+  const synthetic constructor •() → self::_C1&A&B
     : super self::A::•()
     ;
 }
 class C1 extends self::_C1&A&B /*hasConstConstructor*/  {
-  const constructor •() → self::C1*
+  const constructor •() → self::C1
     : super self::_C1&A&B::•()
     ;
 }
 class C2 = self::A with self::B /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::C2*
+  const synthetic constructor •() → self::C2
     : super self::A::•()
     ;
 }
 class C3 extends self::C2 /*hasConstConstructor*/  {
-  const constructor •() → self::C3*
+  const constructor •() → self::C3
     : super self::C2::•()
     ;
 }
 abstract class D extends core::Object /*isMixinDeclaration*/  {
-  field core::int* value;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  field core::int value;
 }
 abstract class _E1&A&D = self::A with self::D /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_E1&A&D*
+  synthetic constructor •() → self::_E1&A&D
     : super self::A::•()
     ;
-  mixin-super-stub get value() → core::int*
+  mixin-super-stub get value() → core::int
     return super.{self::D::value};
-  mixin-super-stub set value(core::int* value) → void
+  mixin-super-stub set value(core::int value) → void
     return super.{self::D::value} = value;
 }
 class E1 extends self::_E1&A&D /*hasConstConstructor*/  {
-  const constructor •() → self::E1*
+  const constructor •() → self::E1
     : super self::_E1&A&D::•()
     ;
 }
 class E2 = self::A with self::D {
-  synthetic constructor •() → self::E2*
+  synthetic constructor •() → self::E2
     : super self::A::•()
     ;
-  mixin-super-stub get value() → core::int*
+  mixin-super-stub get value() → core::int
     return super.{self::D::value};
-  mixin-super-stub set value(core::int* value) → void
+  mixin-super-stub set value(core::int value) → void
     return super.{self::D::value} = value;
 }
 class E3 extends self::E2 /*hasConstConstructor*/  {
-  const constructor •() → self::E3*
+  const constructor •() → self::E3
     : super self::E2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue40982.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40982.dart.weak.transformed.expect
index 76c2d617..b3fceab 100644
--- a/pkg/front_end/testcases/general/issue40982.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40982.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -14,87 +14,57 @@
 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
 }
 abstract class B extends core::Object /*isMixinDeclaration*/  {
-  static const field core::int* value = #C1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  static const field core::int value = #C1;
 }
 abstract class _C1&A&B extends self::A implements self::B /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  static const field core::int* value = #C1;
-  const synthetic constructor •() → self::_C1&A&B*
+  static const field core::int value = #C1;
+  const synthetic constructor •() → self::_C1&A&B
     : super self::A::•()
     ;
 }
 class C1 extends self::_C1&A&B /*hasConstConstructor*/  {
-  const constructor •() → self::C1*
+  const constructor •() → self::C1
     : super self::_C1&A&B::•()
     ;
 }
 class C2 extends self::A implements self::B /*isEliminatedMixin,hasConstConstructor*/  {
-  static const field core::int* value = #C1;
-  const synthetic constructor •() → self::C2*
+  static const field core::int value = #C1;
+  const synthetic constructor •() → self::C2
     : super self::A::•()
     ;
 }
 class C3 extends self::C2 /*hasConstConstructor*/  {
-  const constructor •() → self::C3*
+  const constructor •() → self::C3
     : super self::C2::•()
     ;
 }
 abstract class D extends core::Object /*isMixinDeclaration*/  {
-  field core::int* value = 1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  field core::int value = 1;
 }
 abstract class _E1&A&D extends self::A implements self::D /*isAnonymousMixin,isEliminatedMixin*/  {
-  field core::int* value = 1;
-  synthetic constructor •() → self::_E1&A&D*
+  field core::int value = 1;
+  synthetic constructor •() → self::_E1&A&D
     : super self::A::•()
     ;
 }
 class E1 extends self::_E1&A&D /*hasConstConstructor*/  {
-  const constructor •() → self::E1*
+  const constructor •() → self::E1
     : super self::_E1&A&D::•()
     ;
 }
 class E2 extends self::A implements self::D /*isEliminatedMixin*/  {
-  field core::int* value = 1;
-  synthetic constructor •() → self::E2*
+  field core::int value = 1;
+  synthetic constructor •() → self::E2
     : super self::A::•()
     ;
 }
 class E3 extends self::E2 /*hasConstConstructor*/  {
-  const constructor •() → self::E3*
+  const constructor •() → self::E3
     : super self::E2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue41070.dart b/pkg/front_end/testcases/general/issue41070.dart
index 0ce6f26..3129cb6 100644
--- a/pkg/front_end/testcases/general/issue41070.dart
+++ b/pkg/front_end/testcases/general/issue41070.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 abstract class Mixin {}
 
 class Base {
diff --git a/pkg/front_end/testcases/general/issue41070.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue41070.dart.textual_outline.expect
index bf2cc1b..6b9ed3f 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Mixin {}
 
 class Base {
diff --git a/pkg/front_end/testcases/general/issue41070.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue41070.dart.textual_outline_modelled.expect
index 228bca5..6d28195 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Mixin {}
 
 class Application = Base with Mixin;
diff --git a/pkg/front_end/testcases/general/issue41070.dart.weak.expect b/pkg/front_end/testcases/general/issue41070.dart.weak.expect
index d159c73..a93c83e 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.weak.expect
@@ -1,48 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Base extends core::Object /*hasConstConstructor*/  {
-  final field core::int* x;
-  const constructor •(core::int* x) → self::Base*
+  final field core::int x;
+  const constructor •(core::int x) → self::Base
     : self::Base::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 Application = self::Base with self::Mixin /*hasConstConstructor*/  {
-  const synthetic constructor •(core::int* x) → self::Application*
+  const synthetic constructor •(core::int x) → self::Application
     : super self::Base::•(x)
     ;
 }
 static method main() → dynamic {
-  self::expect(42, #C2.{self::Base::x}{core::int*});
+  self::expect(42, #C2.{self::Base::x}{core::int});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/general/issue41070.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue41070.dart.weak.modular.expect
index d159c73..a93c83e 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.weak.modular.expect
@@ -1,48 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Base extends core::Object /*hasConstConstructor*/  {
-  final field core::int* x;
-  const constructor •(core::int* x) → self::Base*
+  final field core::int x;
+  const constructor •(core::int x) → self::Base
     : self::Base::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 Application = self::Base with self::Mixin /*hasConstConstructor*/  {
-  const synthetic constructor •(core::int* x) → self::Application*
+  const synthetic constructor •(core::int x) → self::Application
     : super self::Base::•(x)
     ;
 }
 static method main() → dynamic {
-  self::expect(42, #C2.{self::Base::x}{core::int*});
+  self::expect(42, #C2.{self::Base::x}{core::int});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/general/issue41070.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue41070.dart.weak.outline.expect
index 8212504..ed7bc38 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.weak.outline.expect
@@ -1,39 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Base extends core::Object /*hasConstConstructor*/  {
-  final field core::int* x;
-  const constructor •(core::int* x) → self::Base*
+  final field core::int x;
+  const constructor •(core::int x) → self::Base
     : self::Base::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 Application = self::Base with self::Mixin /*hasConstConstructor*/  {
-  const synthetic constructor •(core::int* x) → self::Application*
+  const synthetic constructor •(core::int x) → self::Application
     : super self::Base::•(x)
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue41070.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue41070.dart.weak.transformed.expect
index 655d5ae..c16b436 100644
--- a/pkg/front_end/testcases/general/issue41070.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue41070.dart.weak.transformed.expect
@@ -1,48 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Base extends core::Object /*hasConstConstructor*/  {
-  final field core::int* x;
-  const constructor •(core::int* x) → self::Base*
+  final field core::int x;
+  const constructor •(core::int x) → self::Base
     : self::Base::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 Application extends self::Base implements self::Mixin /*isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •(core::int* x) → self::Application*
+  const synthetic constructor •(core::int x) → self::Application
     : super self::Base::•(x)
     ;
 }
 static method main() → dynamic {
-  self::expect(42, #C2.{self::Base::x}{core::int*});
+  self::expect(42, #C2.{self::Base::x}{core::int});
 }
 static method expect(dynamic expected, dynamic actual) → dynamic {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
     throw "Expected ${expected}, actual ${actual}";
 }
 
diff --git a/pkg/front_end/testcases/general/issue41210a.dart b/pkg/front_end/testcases/general/issue41210a.dart
index f736a24..78cfc3c 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart
+++ b/pkg/front_end/testcases/general/issue41210a.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
-
 abstract class Interface {
   String method(num i);
 }
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue41210a.dart.textual_outline.expect
index 64edca2..599fc0f 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Interface {
   String method(num i);
 }
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue41210a.dart.textual_outline_modelled.expect
index 9c3d871..d6c9646 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class B implements Interface {
   String method(num i);
 }
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.weak.expect b/pkg/front_end/testcases/general/issue41210a.dart.weak.expect
index f270273..8913730 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.weak.expect
@@ -1,14 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue41210a.dart:23:7: Error: Applying the mixin 'B' to 'Object with A' introduces an erroneous override of 'method'.
+// pkg/front_end/testcases/general/issue41210a.dart:21:7: Error: Applying the mixin 'B' to 'Object with A' introduces an erroneous override of 'method'.
 // class C with A, B {} // error
 //       ^
-// pkg/front_end/testcases/general/issue41210a.dart:20:10: Context: The method 'B.method' has fewer named arguments than those of overridden method 'Object with A.method'.
+// pkg/front_end/testcases/general/issue41210a.dart:18:10: Context: The method 'B.method' has fewer named arguments than those of overridden method 'Object with A.method'.
 //   String method(num i);
 //          ^
-// pkg/front_end/testcases/general/issue41210a.dart:23:7: Context: This is the overridden method ('method').
+// pkg/front_end/testcases/general/issue41210a.dart:21:7: Context: This is the overridden method ('method').
 // class C with A, B {} // error
 //       ^
 //
@@ -16,184 +16,94 @@
 import "dart:core" as core;
 
 abstract class Interface extends core::Object {
-  synthetic constructor •() → self::Interface*
+  synthetic constructor •() → self::Interface
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     : super core::Object::•()
     ;
-  abstract method method(covariant-by-declaration core::int* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(covariant-by-declaration core::int i) → core::String;
 }
 abstract class A extends core::Object implements self::Interface /*isMixinDeclaration*/  {
-  method method(core::num* i, {core::String* s = #C1}) → core::String*
+  method method(core::num i, {core::String s = #C1}) → core::String
     return s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object implements self::Interface {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class _C&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&A*
+  const synthetic constructor •() → self::_C&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&A&B = self::_C&Object&A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&A&B*
+  const synthetic constructor •() → self::_C&Object&A&B
     : super self::_C&Object&A::•()
     ;
-  abstract mixin-stub method method(core::num* i) → core::String*; -> self::B::method
+  abstract mixin-stub method method(core::num i) → core::String; -> self::B::method
 }
 class C extends self::_C&Object&A&B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::_C&Object&A&B::•()
     ;
 }
 abstract class D extends core::Object implements self::Interface, self::Interface2 {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super core::Object::•()
     ;
-  abstract forwarding-stub method method(covariant-by-declaration core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract forwarding-stub method method(covariant-by-declaration core::num i) → core::String;
 }
 abstract class _E&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A*
+  const synthetic constructor •() → self::_E&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _E&Object&A&D = self::_E&Object&A with self::D /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A&D*
+  const synthetic constructor •() → self::_E&Object&A&D
     : super self::_E&Object&A::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::num* i, {core::String* s = #C1}) → core::String*
+  forwarding-stub method method(covariant-by-declaration core::num i, {core::String s = #C1}) → core::String
     return super.{self::_E&Object&A::method}(i, s: s);
 }
 class E extends self::_E&Object&A&D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::_E&Object&A&D::•()
     ;
 }
 abstract class F extends core::Object implements self::Interface {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : 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 _G&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A*
+  const synthetic constructor •() → self::_G&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _G&Object&A&F = self::_G&Object&A with self::F /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A&F*
+  const synthetic constructor •() → self::_G&Object&A&F
     : super self::_G&Object&A::•()
     ;
 }
 class G extends self::_G&Object&A&F {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     : super self::_G&Object&A&F::•()
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A&B::method}(0){(core::num*) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A&B::method}(0){(core::num) → core::String});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue41210a.dart.weak.modular.expect
index f270273..8913730 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.weak.modular.expect
@@ -1,14 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue41210a.dart:23:7: Error: Applying the mixin 'B' to 'Object with A' introduces an erroneous override of 'method'.
+// pkg/front_end/testcases/general/issue41210a.dart:21:7: Error: Applying the mixin 'B' to 'Object with A' introduces an erroneous override of 'method'.
 // class C with A, B {} // error
 //       ^
-// pkg/front_end/testcases/general/issue41210a.dart:20:10: Context: The method 'B.method' has fewer named arguments than those of overridden method 'Object with A.method'.
+// pkg/front_end/testcases/general/issue41210a.dart:18:10: Context: The method 'B.method' has fewer named arguments than those of overridden method 'Object with A.method'.
 //   String method(num i);
 //          ^
-// pkg/front_end/testcases/general/issue41210a.dart:23:7: Context: This is the overridden method ('method').
+// pkg/front_end/testcases/general/issue41210a.dart:21:7: Context: This is the overridden method ('method').
 // class C with A, B {} // error
 //       ^
 //
@@ -16,184 +16,94 @@
 import "dart:core" as core;
 
 abstract class Interface extends core::Object {
-  synthetic constructor •() → self::Interface*
+  synthetic constructor •() → self::Interface
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     : super core::Object::•()
     ;
-  abstract method method(covariant-by-declaration core::int* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(covariant-by-declaration core::int i) → core::String;
 }
 abstract class A extends core::Object implements self::Interface /*isMixinDeclaration*/  {
-  method method(core::num* i, {core::String* s = #C1}) → core::String*
+  method method(core::num i, {core::String s = #C1}) → core::String
     return s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object implements self::Interface {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class _C&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&A*
+  const synthetic constructor •() → self::_C&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&A&B = self::_C&Object&A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&A&B*
+  const synthetic constructor •() → self::_C&Object&A&B
     : super self::_C&Object&A::•()
     ;
-  abstract mixin-stub method method(core::num* i) → core::String*; -> self::B::method
+  abstract mixin-stub method method(core::num i) → core::String; -> self::B::method
 }
 class C extends self::_C&Object&A&B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::_C&Object&A&B::•()
     ;
 }
 abstract class D extends core::Object implements self::Interface, self::Interface2 {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super core::Object::•()
     ;
-  abstract forwarding-stub method method(covariant-by-declaration core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract forwarding-stub method method(covariant-by-declaration core::num i) → core::String;
 }
 abstract class _E&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A*
+  const synthetic constructor •() → self::_E&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _E&Object&A&D = self::_E&Object&A with self::D /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A&D*
+  const synthetic constructor •() → self::_E&Object&A&D
     : super self::_E&Object&A::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::num* i, {core::String* s = #C1}) → core::String*
+  forwarding-stub method method(covariant-by-declaration core::num i, {core::String s = #C1}) → core::String
     return super.{self::_E&Object&A::method}(i, s: s);
 }
 class E extends self::_E&Object&A&D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::_E&Object&A&D::•()
     ;
 }
 abstract class F extends core::Object implements self::Interface {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : 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 _G&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A*
+  const synthetic constructor •() → self::_G&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _G&Object&A&F = self::_G&Object&A with self::F /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A&F*
+  const synthetic constructor •() → self::_G&Object&A&F
     : super self::_G&Object&A::•()
     ;
 }
 class G extends self::_G&Object&A&F {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     : super self::_G&Object&A&F::•()
     ;
 }
 static method main() → dynamic {
-  core::print(new self::C::•().{self::_C&Object&A&B::method}(0){(core::num*) →* core::String*});
+  core::print(new self::C::•().{self::_C&Object&A&B::method}(0){(core::num) → core::String});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/issue41210a.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue41210a.dart.weak.outline.expect
index 3333d00..22ccaee 100644
--- a/pkg/front_end/testcases/general/issue41210a.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue41210a.dart.weak.outline.expect
@@ -1,14 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue41210a.dart:23:7: Error: Applying the mixin 'B' to 'Object with A' introduces an erroneous override of 'method'.
+// pkg/front_end/testcases/general/issue41210a.dart:21:7: Error: Applying the mixin 'B' to 'Object with A' introduces an erroneous override of 'method'.
 // class C with A, B {} // error
 //       ^
-// pkg/front_end/testcases/general/issue41210a.dart:20:10: Context: The method 'B.method' has fewer named arguments than those of overridden method 'Object with A.method'.
+// pkg/front_end/testcases/general/issue41210a.dart:18:10: Context: The method 'B.method' has fewer named arguments than those of overridden method 'Object with A.method'.
 //   String method(num i);
 //          ^
-// pkg/front_end/testcases/general/issue41210a.dart:23:7: Context: This is the overridden method ('method').
+// pkg/front_end/testcases/general/issue41210a.dart:21:7: Context: This is the overridden method ('method').
 // class C with A, B {} // error
 //       ^
 //
@@ -16,172 +16,82 @@
 import "dart:core" as core;
 
 abstract class Interface extends core::Object {
-  synthetic constructor •() → self::Interface*
+  synthetic constructor •() → self::Interface
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     ;
-  abstract method method(covariant-by-declaration core::int* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(covariant-by-declaration core::int i) → core::String;
 }
 abstract class A extends core::Object implements self::Interface /*isMixinDeclaration*/  {
-  method method(core::num* i, {core::String* s = "hello"}) → core::String*
+  method method(core::num i, {core::String s = "hello"}) → core::String
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object implements self::Interface {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class _C&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&A*
+  const synthetic constructor •() → self::_C&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&A&B = self::_C&Object&A with self::B /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&A&B*
+  const synthetic constructor •() → self::_C&Object&A&B
     : super self::_C&Object&A::•()
     ;
-  abstract mixin-stub method method(core::num* i) → core::String*; -> self::B::method
+  abstract mixin-stub method method(core::num i) → core::String; -> self::B::method
 }
 class C extends self::_C&Object&A&B {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
 }
 abstract class D extends core::Object implements self::Interface, self::Interface2 {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  abstract forwarding-stub method method(covariant-by-declaration core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract forwarding-stub method method(covariant-by-declaration core::num i) → core::String;
 }
 abstract class _E&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A*
+  const synthetic constructor •() → self::_E&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _E&Object&A&D = self::_E&Object&A with self::D /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A&D*
+  const synthetic constructor •() → self::_E&Object&A&D
     : super self::_E&Object&A::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::num* i, {core::String* s}) → core::String*
+  forwarding-stub method method(covariant-by-declaration core::num i, {core::String s}) → core::String
     return super.{self::_E&Object&A::method}(i, s: s);
 }
 class E extends self::_E&Object&A&D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
 }
 abstract class F extends core::Object implements self::Interface {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _G&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A*
+  const synthetic constructor •() → self::_G&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _G&Object&A&F = self::_G&Object&A with self::F /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A&F*
+  const synthetic constructor •() → self::_G&Object&A&F
     : super self::_G&Object&A::•()
     ;
 }
 class G extends self::_G&Object&A&F {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/issue41210a_no_error.dart b/pkg/front_end/testcases/general/issue41210a_no_error.dart
index e78b1fe..b838aa9 100644
--- a/pkg/front_end/testcases/general/issue41210a_no_error.dart
+++ b/pkg/front_end/testcases/general/issue41210a_no_error.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
-
 abstract class Interface {
   String method(num i);
 }
diff --git a/pkg/front_end/testcases/general/issue41210a_no_error.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue41210a_no_error.dart.textual_outline.expect
index ed1f176..c01fb18 100644
--- a/pkg/front_end/testcases/general/issue41210a_no_error.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue41210a_no_error.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Interface {
   String method(num i);
 }
diff --git a/pkg/front_end/testcases/general/issue41210a_no_error.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue41210a_no_error.dart.textual_outline_modelled.expect
index 224797a..801b25e 100644
--- a/pkg/front_end/testcases/general/issue41210a_no_error.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue41210a_no_error.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class B implements Interface {
   String method(num i);
 }
diff --git a/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.expect b/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.expect
index daf4b8e..2913f38 100644
--- a/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.expect
@@ -1,153 +1,73 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Interface extends core::Object {
-  synthetic constructor •() → self::Interface*
+  synthetic constructor •() → self::Interface
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     : super core::Object::•()
     ;
-  abstract method method(covariant-by-declaration core::int* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(covariant-by-declaration core::int i) → core::String;
 }
 abstract class A extends core::Object implements self::Interface /*isMixinDeclaration*/  {
-  method method(core::num* i, {core::String* s = #C1}) → core::String*
+  method method(core::num i, {core::String s = #C1}) → core::String
     return s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object implements self::Interface {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class D extends core::Object implements self::Interface, self::Interface2 {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super core::Object::•()
     ;
-  abstract forwarding-stub method method(covariant-by-declaration core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract forwarding-stub method method(covariant-by-declaration core::num i) → core::String;
 }
 abstract class _E&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A*
+  const synthetic constructor •() → self::_E&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _E&Object&A&D = self::_E&Object&A with self::D /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A&D*
+  const synthetic constructor •() → self::_E&Object&A&D
     : super self::_E&Object&A::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::num* i, {core::String* s = #C1}) → core::String*
+  forwarding-stub method method(covariant-by-declaration core::num i, {core::String s = #C1}) → core::String
     return super.{self::_E&Object&A::method}(i, s: s);
 }
 class E extends self::_E&Object&A&D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::_E&Object&A&D::•()
     ;
 }
 abstract class F extends core::Object implements self::Interface {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : 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 _G&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A*
+  const synthetic constructor •() → self::_G&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _G&Object&A&F = self::_G&Object&A with self::F /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A&F*
+  const synthetic constructor •() → self::_G&Object&A&F
     : super self::_G&Object&A::•()
     ;
 }
 class G extends self::_G&Object&A&F {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     : super self::_G&Object&A&F::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.modular.expect
index daf4b8e..2913f38 100644
--- a/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.modular.expect
@@ -1,153 +1,73 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Interface extends core::Object {
-  synthetic constructor •() → self::Interface*
+  synthetic constructor •() → self::Interface
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     : super core::Object::•()
     ;
-  abstract method method(covariant-by-declaration core::int* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(covariant-by-declaration core::int i) → core::String;
 }
 abstract class A extends core::Object implements self::Interface /*isMixinDeclaration*/  {
-  method method(core::num* i, {core::String* s = #C1}) → core::String*
+  method method(core::num i, {core::String s = #C1}) → core::String
     return s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object implements self::Interface {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class D extends core::Object implements self::Interface, self::Interface2 {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super core::Object::•()
     ;
-  abstract forwarding-stub method method(covariant-by-declaration core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract forwarding-stub method method(covariant-by-declaration core::num i) → core::String;
 }
 abstract class _E&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A*
+  const synthetic constructor •() → self::_E&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _E&Object&A&D = self::_E&Object&A with self::D /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A&D*
+  const synthetic constructor •() → self::_E&Object&A&D
     : super self::_E&Object&A::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::num* i, {core::String* s = #C1}) → core::String*
+  forwarding-stub method method(covariant-by-declaration core::num i, {core::String s = #C1}) → core::String
     return super.{self::_E&Object&A::method}(i, s: s);
 }
 class E extends self::_E&Object&A&D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::_E&Object&A&D::•()
     ;
 }
 abstract class F extends core::Object implements self::Interface {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : 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 _G&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A*
+  const synthetic constructor •() → self::_G&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s = #C1}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s = #C1}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _G&Object&A&F = self::_G&Object&A with self::F /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A&F*
+  const synthetic constructor •() → self::_G&Object&A&F
     : super self::_G&Object&A::•()
     ;
 }
 class G extends self::_G&Object&A&F {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     : super self::_G&Object&A&F::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.outline.expect
index 0a5819f..016588f 100644
--- a/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.outline.expect
@@ -1,147 +1,67 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Interface extends core::Object {
-  synthetic constructor •() → self::Interface*
+  synthetic constructor •() → self::Interface
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     ;
-  abstract method method(covariant-by-declaration core::int* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(covariant-by-declaration core::int i) → core::String;
 }
 abstract class A extends core::Object implements self::Interface /*isMixinDeclaration*/  {
-  method method(core::num* i, {core::String* s = "hello"}) → core::String*
+  method method(core::num i, {core::String s = "hello"}) → core::String
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object implements self::Interface {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class D extends core::Object implements self::Interface, self::Interface2 {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  abstract forwarding-stub method method(covariant-by-declaration core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract forwarding-stub method method(covariant-by-declaration core::num i) → core::String;
 }
 abstract class _E&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A*
+  const synthetic constructor •() → self::_E&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _E&Object&A&D = self::_E&Object&A with self::D /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A&D*
+  const synthetic constructor •() → self::_E&Object&A&D
     : super self::_E&Object&A::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::num* i, {core::String* s}) → core::String*
+  forwarding-stub method method(covariant-by-declaration core::num i, {core::String s}) → core::String
     return super.{self::_E&Object&A::method}(i, s: s);
 }
 class E extends self::_E&Object&A&D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
 }
 abstract class F extends core::Object implements self::Interface {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _G&Object&A = core::Object with self::A /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A*
+  const synthetic constructor •() → self::_G&Object&A
     : super core::Object::•()
     ;
-  mixin-super-stub method method(core::num* i, {core::String* s}) → core::String*
+  mixin-super-stub method method(core::num i, {core::String s}) → core::String
     return super.{self::A::method}(i, s: s);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _G&Object&A&F = self::_G&Object&A with self::F /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A&F*
+  const synthetic constructor •() → self::_G&Object&A&F
     : super self::_G&Object&A::•()
     ;
 }
 class G extends self::_G&Object&A&F {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.transformed.expect
index 9d9b4f1..fcfe4b1 100644
--- a/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue41210a_no_error.dart.weak.transformed.expect
@@ -1,153 +1,73 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Interface extends core::Object {
-  synthetic constructor •() → self::Interface*
+  synthetic constructor •() → self::Interface
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     : super core::Object::•()
     ;
-  abstract method method(covariant-by-declaration core::int* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(covariant-by-declaration core::int i) → core::String;
 }
 abstract class A extends core::Object implements self::Interface /*isMixinDeclaration*/  {
-  method method(core::num* i, {core::String* s = #C1}) → core::String*
+  method method(core::num i, {core::String s = #C1}) → core::String
     return s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class B extends core::Object implements self::Interface {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract method method(core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method method(core::num i) → core::String;
 }
 abstract class D extends core::Object implements self::Interface, self::Interface2 {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : super core::Object::•()
     ;
-  abstract forwarding-stub method method(covariant-by-declaration core::num* i) → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract forwarding-stub method method(covariant-by-declaration core::num i) → core::String;
 }
 abstract class _E&Object&A extends core::Object implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A*
+  const synthetic constructor •() → self::_E&Object&A
     : super core::Object::•()
     ;
-  method method(core::num* i, {core::String* s = #C1}) → core::String*
+  method method(core::num i, {core::String s = #C1}) → core::String
     return s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _E&Object&A&D extends self::_E&Object&A implements self::D /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_E&Object&A&D*
+  const synthetic constructor •() → self::_E&Object&A&D
     : super self::_E&Object&A::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::num* i, {core::String* s = #C1}) → core::String*
+  forwarding-stub method method(covariant-by-declaration core::num i, {core::String s = #C1}) → core::String
     return super.{self::_E&Object&A::method}(i, s: s);
 }
 class E extends self::_E&Object&A&D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::_E&Object&A&D::•()
     ;
 }
 abstract class F extends core::Object implements self::Interface {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : 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 _G&Object&A extends core::Object implements self::A /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A*
+  const synthetic constructor •() → self::_G&Object&A
     : super core::Object::•()
     ;
-  method method(core::num* i, {core::String* s = #C1}) → core::String*
+  method method(core::num i, {core::String s = #C1}) → core::String
     return s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _G&Object&A&F extends self::_G&Object&A implements self::F /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_G&Object&A&F*
+  const synthetic constructor •() → self::_G&Object&A&F
     : super self::_G&Object&A::•()
     ;
 }
 class G extends self::_G&Object&A&F {
-  synthetic constructor •() → self::G*
+  synthetic constructor •() → self::G
     : super self::_G&Object&A&F::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/issue42610.dart b/pkg/front_end/testcases/general/issue42610.dart
index 0eb9586..7c7bd32 100644
--- a/pkg/front_end/testcases/general/issue42610.dart
+++ b/pkg/front_end/testcases/general/issue42610.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
+
 void test() {
   #final;
   final x;
diff --git a/pkg/front_end/testcases/general/issue42610.dart.weak.expect b/pkg/front_end/testcases/general/issue42610.dart.weak.expect
index 44db974..735e2ff 100644
--- a/pkg/front_end/testcases/general/issue42610.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue42610.dart.weak.expect
@@ -2,27 +2,27 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue42610.dart:6:4: Error: 'final' can't be used as an identifier because it's a keyword.
+// pkg/front_end/testcases/general/issue42610.dart:8:4: Error: 'final' can't be used as an identifier because it's a keyword.
 // Try renaming this to be an identifier that isn't a keyword.
 //   #final;
 //    ^^^^^
 //
-// pkg/front_end/testcases/general/issue42610.dart:7:9: Error: The final variable 'x' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:9:9: Error: The final variable 'x' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   final x;
 //         ^
 //
-// pkg/front_end/testcases/general/issue42610.dart:8:9: Error: The const variable 'y' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:10:9: Error: The const variable 'y' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   const y;
 //         ^
 //
-// pkg/front_end/testcases/general/issue42610.dart:9:13: Error: The final variable 'z' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:11:13: Error: The final variable 'z' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   final int z;
 //             ^
 //
-// pkg/front_end/testcases/general/issue42610.dart:10:13: Error: The const variable 'w' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:12:13: Error: The const variable 'w' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   const int w;
 //             ^
@@ -32,19 +32,19 @@
 
 static method test() → void {
   #C1;
-  final invalid-type x = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:7:9: Error: The final variable 'x' must be initialized.
+  final invalid-type x = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:9:9: Error: The final variable 'x' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   final x;
         ^";
-  const invalid-type y = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:8:9: Error: The const variable 'y' must be initialized.
+  const invalid-type y = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:10:9: Error: The const variable 'y' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   const y;
         ^";
-  final core::int* z = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:9:13: Error: The final variable 'z' must be initialized.
+  final core::int* z = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:11:13: Error: The final variable 'z' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   final int z;
             ^";
-  const core::int* w = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:10:13: Error: The const variable 'w' must be initialized.
+  const core::int* w = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:12:13: Error: The const variable 'w' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   const int w;
             ^";
diff --git a/pkg/front_end/testcases/general/issue42610.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue42610.dart.weak.modular.expect
index 44db974..735e2ff 100644
--- a/pkg/front_end/testcases/general/issue42610.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue42610.dart.weak.modular.expect
@@ -2,27 +2,27 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue42610.dart:6:4: Error: 'final' can't be used as an identifier because it's a keyword.
+// pkg/front_end/testcases/general/issue42610.dart:8:4: Error: 'final' can't be used as an identifier because it's a keyword.
 // Try renaming this to be an identifier that isn't a keyword.
 //   #final;
 //    ^^^^^
 //
-// pkg/front_end/testcases/general/issue42610.dart:7:9: Error: The final variable 'x' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:9:9: Error: The final variable 'x' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   final x;
 //         ^
 //
-// pkg/front_end/testcases/general/issue42610.dart:8:9: Error: The const variable 'y' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:10:9: Error: The const variable 'y' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   const y;
 //         ^
 //
-// pkg/front_end/testcases/general/issue42610.dart:9:13: Error: The final variable 'z' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:11:13: Error: The final variable 'z' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   final int z;
 //             ^
 //
-// pkg/front_end/testcases/general/issue42610.dart:10:13: Error: The const variable 'w' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:12:13: Error: The const variable 'w' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   const int w;
 //             ^
@@ -32,19 +32,19 @@
 
 static method test() → void {
   #C1;
-  final invalid-type x = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:7:9: Error: The final variable 'x' must be initialized.
+  final invalid-type x = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:9:9: Error: The final variable 'x' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   final x;
         ^";
-  const invalid-type y = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:8:9: Error: The const variable 'y' must be initialized.
+  const invalid-type y = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:10:9: Error: The const variable 'y' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   const y;
         ^";
-  final core::int* z = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:9:13: Error: The final variable 'z' must be initialized.
+  final core::int* z = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:11:13: Error: The final variable 'z' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   final int z;
             ^";
-  const core::int* w = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:10:13: Error: The const variable 'w' must be initialized.
+  const core::int* w = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:12:13: Error: The const variable 'w' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   const int w;
             ^";
diff --git a/pkg/front_end/testcases/general/issue42610.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42610.dart.weak.transformed.expect
index 44db974..735e2ff 100644
--- a/pkg/front_end/testcases/general/issue42610.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue42610.dart.weak.transformed.expect
@@ -2,27 +2,27 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue42610.dart:6:4: Error: 'final' can't be used as an identifier because it's a keyword.
+// pkg/front_end/testcases/general/issue42610.dart:8:4: Error: 'final' can't be used as an identifier because it's a keyword.
 // Try renaming this to be an identifier that isn't a keyword.
 //   #final;
 //    ^^^^^
 //
-// pkg/front_end/testcases/general/issue42610.dart:7:9: Error: The final variable 'x' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:9:9: Error: The final variable 'x' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   final x;
 //         ^
 //
-// pkg/front_end/testcases/general/issue42610.dart:8:9: Error: The const variable 'y' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:10:9: Error: The const variable 'y' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   const y;
 //         ^
 //
-// pkg/front_end/testcases/general/issue42610.dart:9:13: Error: The final variable 'z' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:11:13: Error: The final variable 'z' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   final int z;
 //             ^
 //
-// pkg/front_end/testcases/general/issue42610.dart:10:13: Error: The const variable 'w' must be initialized.
+// pkg/front_end/testcases/general/issue42610.dart:12:13: Error: The const variable 'w' must be initialized.
 // Try adding an initializer ('= expression') to the declaration.
 //   const int w;
 //             ^
@@ -32,19 +32,19 @@
 
 static method test() → void {
   #C1;
-  final invalid-type x = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:7:9: Error: The final variable 'x' must be initialized.
+  final invalid-type x = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:9:9: Error: The final variable 'x' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   final x;
         ^";
-  const invalid-type y = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:8:9: Error: The const variable 'y' must be initialized.
+  const invalid-type y = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:10:9: Error: The const variable 'y' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   const y;
         ^";
-  final core::int* z = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:9:13: Error: The final variable 'z' must be initialized.
+  final core::int* z = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:11:13: Error: The final variable 'z' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   final int z;
             ^";
-  const core::int* w = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:10:13: Error: The const variable 'w' must be initialized.
+  const core::int* w = invalid-expression "pkg/front_end/testcases/general/issue42610.dart:12:13: Error: The const variable 'w' must be initialized.
 Try adding an initializer ('= expression') to the declaration.
   const int w;
             ^";
diff --git a/pkg/front_end/testcases/general/issue42610b.dart b/pkg/front_end/testcases/general/issue42610b.dart
new file mode 100644
index 0000000..d1bfafc
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue42610b.dart
@@ -0,0 +1,13 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+void test() {
+  #final;
+  final x;
+  const y;
+  final int z;
+  const int w;
+}
+
+void main() {}
diff --git a/pkg/front_end/testcases/general/issue42610b.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue42610b.dart.textual_outline.expect
new file mode 100644
index 0000000..41786bb
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue42610b.dart.textual_outline.expect
@@ -0,0 +1,2 @@
+void test() {}
+void main() {}
diff --git a/pkg/front_end/testcases/general/issue42610b.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue42610b.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..0e0980f
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue42610b.dart.textual_outline_modelled.expect
@@ -0,0 +1,2 @@
+void main() {}
+void test() {}
diff --git a/pkg/front_end/testcases/general/issue42610b.dart.weak.expect b/pkg/front_end/testcases/general/issue42610b.dart.weak.expect
new file mode 100644
index 0000000..3d48f0d
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue42610b.dart.weak.expect
@@ -0,0 +1,40 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue42610b.dart:6:4: Error: 'final' can't be used as an identifier because it's a keyword.
+// Try renaming this to be an identifier that isn't a keyword.
+//   #final;
+//    ^^^^^
+//
+// pkg/front_end/testcases/general/issue42610b.dart:8:9: Error: The const variable 'y' must be initialized.
+// Try adding an initializer ('= expression') to the declaration.
+//   const y;
+//         ^
+//
+// pkg/front_end/testcases/general/issue42610b.dart:10:13: Error: The const variable 'w' must be initialized.
+// Try adding an initializer ('= expression') to the declaration.
+//   const int w;
+//             ^
+//
+import self as self;
+import "dart:core" as core;
+
+static method test() → void {
+  #C1;
+  final dynamic x;
+  const invalid-type y = invalid-expression "pkg/front_end/testcases/general/issue42610b.dart:8:9: Error: The const variable 'y' must be initialized.
+Try adding an initializer ('= expression') to the declaration.
+  const y;
+        ^";
+  final core::int z;
+  const core::int w = invalid-expression "pkg/front_end/testcases/general/issue42610b.dart:10:13: Error: The const variable 'w' must be initialized.
+Try adding an initializer ('= expression') to the declaration.
+  const int w;
+            ^";
+}
+static method main() → void {}
+
+constants  {
+  #C1 = #final
+}
diff --git a/pkg/front_end/testcases/general/issue42610b.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue42610b.dart.weak.modular.expect
new file mode 100644
index 0000000..3d48f0d
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue42610b.dart.weak.modular.expect
@@ -0,0 +1,40 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue42610b.dart:6:4: Error: 'final' can't be used as an identifier because it's a keyword.
+// Try renaming this to be an identifier that isn't a keyword.
+//   #final;
+//    ^^^^^
+//
+// pkg/front_end/testcases/general/issue42610b.dart:8:9: Error: The const variable 'y' must be initialized.
+// Try adding an initializer ('= expression') to the declaration.
+//   const y;
+//         ^
+//
+// pkg/front_end/testcases/general/issue42610b.dart:10:13: Error: The const variable 'w' must be initialized.
+// Try adding an initializer ('= expression') to the declaration.
+//   const int w;
+//             ^
+//
+import self as self;
+import "dart:core" as core;
+
+static method test() → void {
+  #C1;
+  final dynamic x;
+  const invalid-type y = invalid-expression "pkg/front_end/testcases/general/issue42610b.dart:8:9: Error: The const variable 'y' must be initialized.
+Try adding an initializer ('= expression') to the declaration.
+  const y;
+        ^";
+  final core::int z;
+  const core::int w = invalid-expression "pkg/front_end/testcases/general/issue42610b.dart:10:13: Error: The const variable 'w' must be initialized.
+Try adding an initializer ('= expression') to the declaration.
+  const int w;
+            ^";
+}
+static method main() → void {}
+
+constants  {
+  #C1 = #final
+}
diff --git a/pkg/front_end/testcases/general/issue42610b.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue42610b.dart.weak.outline.expect
new file mode 100644
index 0000000..b6809aa
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue42610b.dart.weak.outline.expect
@@ -0,0 +1,7 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+
+static method test() → void
+  ;
+static method main() → void
+  ;
diff --git a/pkg/front_end/testcases/general/issue42610b.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42610b.dart.weak.transformed.expect
new file mode 100644
index 0000000..3d48f0d
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue42610b.dart.weak.transformed.expect
@@ -0,0 +1,40 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue42610b.dart:6:4: Error: 'final' can't be used as an identifier because it's a keyword.
+// Try renaming this to be an identifier that isn't a keyword.
+//   #final;
+//    ^^^^^
+//
+// pkg/front_end/testcases/general/issue42610b.dart:8:9: Error: The const variable 'y' must be initialized.
+// Try adding an initializer ('= expression') to the declaration.
+//   const y;
+//         ^
+//
+// pkg/front_end/testcases/general/issue42610b.dart:10:13: Error: The const variable 'w' must be initialized.
+// Try adding an initializer ('= expression') to the declaration.
+//   const int w;
+//             ^
+//
+import self as self;
+import "dart:core" as core;
+
+static method test() → void {
+  #C1;
+  final dynamic x;
+  const invalid-type y = invalid-expression "pkg/front_end/testcases/general/issue42610b.dart:8:9: Error: The const variable 'y' must be initialized.
+Try adding an initializer ('= expression') to the declaration.
+  const y;
+        ^";
+  final core::int z;
+  const core::int w = invalid-expression "pkg/front_end/testcases/general/issue42610b.dart:10:13: Error: The const variable 'w' must be initialized.
+Try adding an initializer ('= expression') to the declaration.
+  const int w;
+            ^";
+}
+static method main() → void {}
+
+constants  {
+  #C1 = #final
+}
diff --git a/pkg/front_end/testcases/general/issue42615.dart b/pkg/front_end/testcases/general/issue42615.dart
index 9aeea55..5ee7bb8 100644
--- a/pkg/front_end/testcases/general/issue42615.dart
+++ b/pkg/front_end/testcases/general/issue42615.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
+
 import 'dart:async';
 
 class Class<T> {
diff --git a/pkg/front_end/testcases/general/issue42694.dart b/pkg/front_end/testcases/general/issue42694.dart
index fa6f914..95e5875 100644
--- a/pkg/front_end/testcases/general/issue42694.dart
+++ b/pkg/front_end/testcases/general/issue42694.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 abstract class A {
   void set setter(int value);
 }
diff --git a/pkg/front_end/testcases/general/issue42694.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue42694.dart.textual_outline.expect
index 44d643c..6d5d6ad 100644
--- a/pkg/front_end/testcases/general/issue42694.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue42694.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class A {
   void set setter(int value);
 }
diff --git a/pkg/front_end/testcases/general/issue42694.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue42694.dart.textual_outline_modelled.expect
index 44d643c..6d5d6ad 100644
--- a/pkg/front_end/testcases/general/issue42694.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue42694.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class A {
   void set setter(int value);
 }
diff --git a/pkg/front_end/testcases/general/issue42694.dart.weak.expect b/pkg/front_end/testcases/general/issue42694.dart.weak.expect
index f8b3fdc..5be2cc6 100644
--- a/pkg/front_end/testcases/general/issue42694.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue42694.dart.weak.expect
@@ -1,39 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract set setter(core::int* value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set setter(core::int value) → void;
 }
 class B extends core::Object implements self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  get setter() → core::int*
+  get setter() → core::int
     return throw "";
-  set setter(core::int* value) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set setter(core::int value) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue42694.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue42694.dart.weak.modular.expect
index f8b3fdc..5be2cc6 100644
--- a/pkg/front_end/testcases/general/issue42694.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue42694.dart.weak.modular.expect
@@ -1,39 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract set setter(core::int* value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set setter(core::int value) → void;
 }
 class B extends core::Object implements self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  get setter() → core::int*
+  get setter() → core::int
     return throw "";
-  set setter(core::int* value) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set setter(core::int value) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue42694.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue42694.dart.weak.outline.expect
index 1b716ec..8ebfe87 100644
--- a/pkg/front_end/testcases/general/issue42694.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue42694.dart.weak.outline.expect
@@ -1,39 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
-  abstract set setter(core::int* value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set setter(core::int value) → void;
 }
 class B extends core::Object implements self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  get setter() → core::int*
+  get setter() → core::int
     ;
-  set setter(core::int* value) → void
+  set setter(core::int value) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue42694.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42694.dart.weak.transformed.expect
index f8b3fdc..5be2cc6 100644
--- a/pkg/front_end/testcases/general/issue42694.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue42694.dart.weak.transformed.expect
@@ -1,39 +1,19 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class A extends core::Object {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
-  abstract set setter(core::int* value) → void;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract set setter(core::int value) → void;
 }
 class B extends core::Object implements self::A {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  get setter() → core::int*
+  get setter() → core::int
     return throw "";
-  set setter(core::int* value) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  set setter(core::int value) → void {}
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue42997.dart b/pkg/front_end/testcases/general/issue42997.dart
index 7da576e..1b1ee96 100644
--- a/pkg/front_end/testcases/general/issue42997.dart
+++ b/pkg/front_end/testcases/general/issue42997.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
+
 // Regression test for issue 42997
 
 main() {}
diff --git a/pkg/front_end/testcases/general/issue42997.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue42997.dart.textual_outline.expect
index fd6313c..22509e9 100644
--- a/pkg/front_end/testcases/general/issue42997.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue42997.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 main() {}
 PropertyState();
 class PropertyState<I, O> {
diff --git a/pkg/front_end/testcases/general/issue42997.dart.weak.expect b/pkg/front_end/testcases/general/issue42997.dart.weak.expect
index b11e219..85c075a 100644
--- a/pkg/front_end/testcases/general/issue42997.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue42997.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -46,8 +46,8 @@
 import self as self;
 import "dart:core" as core;
 
-class PropertyState#1<I extends core::Object* = dynamic, O extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::PropertyState#1<self::PropertyState#1::I*, self::PropertyState#1::O*>*
+class PropertyState#1<I extends core::Object? = dynamic, O extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::PropertyState#1<self::PropertyState#1::I%, self::PropertyState#1::O%>
     : super core::Object::•()
     ;
   method dispose() → void {
@@ -68,16 +68,6 @@
                                         ^^^^^" in this{<unresolved>}.state))
       ;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 {}
 static abstract method PropertyState() → dynamic;
diff --git a/pkg/front_end/testcases/general/issue42997.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue42997.dart.weak.modular.expect
index b11e219..85c075a 100644
--- a/pkg/front_end/testcases/general/issue42997.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue42997.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -46,8 +46,8 @@
 import self as self;
 import "dart:core" as core;
 
-class PropertyState#1<I extends core::Object* = dynamic, O extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::PropertyState#1<self::PropertyState#1::I*, self::PropertyState#1::O*>*
+class PropertyState#1<I extends core::Object? = dynamic, O extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::PropertyState#1<self::PropertyState#1::I%, self::PropertyState#1::O%>
     : super core::Object::•()
     ;
   method dispose() → void {
@@ -68,16 +68,6 @@
                                         ^^^^^" in this{<unresolved>}.state))
       ;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 {}
 static abstract method PropertyState() → dynamic;
diff --git a/pkg/front_end/testcases/general/issue42997.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue42997.dart.weak.outline.expect
index f307379..347c54f 100644
--- a/pkg/front_end/testcases/general/issue42997.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue42997.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,21 +17,11 @@
 import self as self;
 import "dart:core" as core;
 
-class PropertyState#1<I extends core::Object* = dynamic, O extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::PropertyState#1<self::PropertyState#1::I*, self::PropertyState#1::O*>*
+class PropertyState#1<I extends core::Object? = dynamic, O extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::PropertyState#1<self::PropertyState#1::I%, self::PropertyState#1::O%>
     ;
   method dispose() → 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/issue42997.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect
index b11e219..85c075a 100644
--- a/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue42997.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -46,8 +46,8 @@
 import self as self;
 import "dart:core" as core;
 
-class PropertyState#1<I extends core::Object* = dynamic, O extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::PropertyState#1<self::PropertyState#1::I*, self::PropertyState#1::O*>*
+class PropertyState#1<I extends core::Object? = dynamic, O extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::PropertyState#1<self::PropertyState#1::I%, self::PropertyState#1::O%>
     : super core::Object::•()
     ;
   method dispose() → void {
@@ -68,16 +68,6 @@
                                         ^^^^^" in this{<unresolved>}.state))
       ;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 {}
 static abstract method PropertyState() → dynamic;
diff --git a/pkg/front_end/testcases/general/issue43290.dart b/pkg/front_end/testcases/general/issue43290.dart
index d3ad455..c1af4ba 100644
--- a/pkg/front_end/testcases/general/issue43290.dart
+++ b/pkg/front_end/testcases/general/issue43290.dart
@@ -1,11 +1,11 @@
 // 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 Class {
   final int length;
 
-  const Class({this.length});
+  const Class({this.length: 0});
 
   method1a() {
     const Class(length: this.length);
diff --git a/pkg/front_end/testcases/general/issue43290.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue43290.dart.textual_outline.expect
index 7d3329f..14991b0 100644
--- a/pkg/front_end/testcases/general/issue43290.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue43290.dart.textual_outline.expect
@@ -1,7 +1,6 @@
-// @dart = 2.9
 class Class {
   final int length;
-  const Class({this.length});
+  const Class({this.length: 0});
   method1a() {}
   method1b() {}
   method2a() {}
diff --git a/pkg/front_end/testcases/general/issue43290.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue43290.dart.textual_outline_modelled.expect
index 8de10005..f80d7f1 100644
--- a/pkg/front_end/testcases/general/issue43290.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue43290.dart.textual_outline_modelled.expect
@@ -1,6 +1,5 @@
-// @dart = 2.9
 class Class {
-  const Class({this.length});
+  const Class({this.length: 0});
   final int length;
   method1a() {}
   method1b() {}
diff --git a/pkg/front_end/testcases/general/issue43290.dart.weak.expect b/pkg/front_end/testcases/general/issue43290.dart.weak.expect
index 436e5dd..74e725c 100644
--- a/pkg/front_end/testcases/general/issue43290.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue43290.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -48,8 +48,8 @@
 import "dart:core" as core;
 
 class Class extends core::Object /*hasConstConstructor*/  {
-  final field core::int* length;
-  const constructor •({core::int* length = #C1}) → self::Class*
+  final field core::int length;
+  const constructor •({core::int length = #C1}) → self::Class
     : self::Class::length = length, super core::Object::•()
     ;
   method method1a() → dynamic {
@@ -59,24 +59,14 @@
     invalid-expression "Not a constant expression.";
   }
   method method2a() → dynamic {
-    const core::int* a = invalid-expression "Not a constant expression.";
+    const core::int a = invalid-expression "Not a constant expression.";
   }
   method method2b() → dynamic {
-    const core::int* a = invalid-expression "Not a constant expression.";
+    const core::int a = invalid-expression "Not a constant expression.";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 {}
 
 constants  {
-  #C1 = null
+  #C1 = 0
 }
diff --git a/pkg/front_end/testcases/general/issue43290.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue43290.dart.weak.modular.expect
index 436e5dd..74e725c 100644
--- a/pkg/front_end/testcases/general/issue43290.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue43290.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -48,8 +48,8 @@
 import "dart:core" as core;
 
 class Class extends core::Object /*hasConstConstructor*/  {
-  final field core::int* length;
-  const constructor •({core::int* length = #C1}) → self::Class*
+  final field core::int length;
+  const constructor •({core::int length = #C1}) → self::Class
     : self::Class::length = length, super core::Object::•()
     ;
   method method1a() → dynamic {
@@ -59,24 +59,14 @@
     invalid-expression "Not a constant expression.";
   }
   method method2a() → dynamic {
-    const core::int* a = invalid-expression "Not a constant expression.";
+    const core::int a = invalid-expression "Not a constant expression.";
   }
   method method2b() → dynamic {
-    const core::int* a = invalid-expression "Not a constant expression.";
+    const core::int a = invalid-expression "Not a constant expression.";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 {}
 
 constants  {
-  #C1 = null
+  #C1 = 0
 }
diff --git a/pkg/front_end/testcases/general/issue43290.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue43290.dart.weak.outline.expect
index 51f0c9f..5b46fa4 100644
--- a/pkg/front_end/testcases/general/issue43290.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue43290.dart.weak.outline.expect
@@ -1,10 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Class extends core::Object /*hasConstConstructor*/  {
-  final field core::int* length;
-  const constructor •({core::int* length}) → self::Class*
+  final field core::int length;
+  const constructor •({core::int length = 0}) → self::Class
     : self::Class::length = length, super core::Object::•()
     ;
   method method1a() → dynamic
@@ -15,16 +15,6 @@
     ;
   method method2b() → 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/issue43290.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue43290.dart.weak.transformed.expect
index 436e5dd..74e725c 100644
--- a/pkg/front_end/testcases/general/issue43290.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue43290.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -48,8 +48,8 @@
 import "dart:core" as core;
 
 class Class extends core::Object /*hasConstConstructor*/  {
-  final field core::int* length;
-  const constructor •({core::int* length = #C1}) → self::Class*
+  final field core::int length;
+  const constructor •({core::int length = #C1}) → self::Class
     : self::Class::length = length, super core::Object::•()
     ;
   method method1a() → dynamic {
@@ -59,24 +59,14 @@
     invalid-expression "Not a constant expression.";
   }
   method method2a() → dynamic {
-    const core::int* a = invalid-expression "Not a constant expression.";
+    const core::int a = invalid-expression "Not a constant expression.";
   }
   method method2b() → dynamic {
-    const core::int* a = invalid-expression "Not a constant expression.";
+    const core::int a = invalid-expression "Not a constant expression.";
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 {}
 
 constants  {
-  #C1 = null
+  #C1 = 0
 }
diff --git a/pkg/front_end/testcases/general/issue43363.dart b/pkg/front_end/testcases/general/issue43363.dart
index e85b599..86d91ec 100644
--- a/pkg/front_end/testcases/general/issue43363.dart
+++ b/pkg/front_end/testcases/general/issue43363.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 E {
   final int x;
   final int y;
diff --git a/pkg/front_end/testcases/general/issue43363.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue43363.dart.textual_outline.expect
index abcc490..f2bf39e 100644
--- a/pkg/front_end/testcases/general/issue43363.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue43363.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class E {
   final int x;
   final int y;
diff --git a/pkg/front_end/testcases/general/issue43363.dart.weak.expect b/pkg/front_end/testcases/general/issue43363.dart.weak.expect
index b4cfb49..42b4c7d 100644
--- a/pkg/front_end/testcases/general/issue43363.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue43363.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -34,27 +34,17 @@
 import "dart:core" as core;
 
 class E extends core::Object {
-  final field core::int* x;
-  final field core::int* y = null;
-  constructor •() → self::E*
+  final field core::int x;
+  final field core::int y = null;
+  constructor •() → self::E
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:9:16: Error: A redirecting constructor can't have other initializers.
         this.x = 1;
                ^", this self::E::named()
     ;
-  constructor named() → self::E*
+  constructor named() → self::E
     : self::E::x = 5, final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:13:20: Error: Can't use 'y' because it is declared more than once.
               this.y = 6;
                    ^"
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/issue43363.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue43363.dart.weak.modular.expect
index b4cfb49..42b4c7d 100644
--- a/pkg/front_end/testcases/general/issue43363.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue43363.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -34,27 +34,17 @@
 import "dart:core" as core;
 
 class E extends core::Object {
-  final field core::int* x;
-  final field core::int* y = null;
-  constructor •() → self::E*
+  final field core::int x;
+  final field core::int y = null;
+  constructor •() → self::E
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:9:16: Error: A redirecting constructor can't have other initializers.
         this.x = 1;
                ^", this self::E::named()
     ;
-  constructor named() → self::E*
+  constructor named() → self::E
     : self::E::x = 5, final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:13:20: Error: Can't use 'y' because it is declared more than once.
               this.y = 6;
                    ^"
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/issue43363.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue43363.dart.weak.outline.expect
index e44f548..6489545 100644
--- a/pkg/front_end/testcases/general/issue43363.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue43363.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -26,22 +26,12 @@
 import "dart:core" as core;
 
 class E extends core::Object {
-  final field core::int* x;
-  final field core::int* y;
-  constructor •() → self::E*
+  final field core::int x;
+  final field core::int y;
+  constructor •() → self::E
     ;
-  constructor named() → self::E*
+  constructor named() → self::E
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/issue43363.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue43363.dart.weak.transformed.expect
index b4cfb49..42b4c7d 100644
--- a/pkg/front_end/testcases/general/issue43363.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue43363.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -34,27 +34,17 @@
 import "dart:core" as core;
 
 class E extends core::Object {
-  final field core::int* x;
-  final field core::int* y = null;
-  constructor •() → self::E*
+  final field core::int x;
+  final field core::int y = null;
+  constructor •() → self::E
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:9:16: Error: A redirecting constructor can't have other initializers.
         this.x = 1;
                ^", this self::E::named()
     ;
-  constructor named() → self::E*
+  constructor named() → self::E
     : self::E::x = 5, final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:13:20: Error: Can't use 'y' because it is declared more than once.
               this.y = 6;
                    ^"
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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/issue43975.dart b/pkg/front_end/testcases/general/issue43975.dart
index 8511b80..929affa 100644
--- a/pkg/front_end/testcases/general/issue43975.dart
+++ b/pkg/front_end/testcases/general/issue43975.dart
@@ -1,6 +1,6 @@
 // Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 typedef F = void Function<X extends F>() Function();
 void main() {}
diff --git a/pkg/front_end/testcases/general/issue43975.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue43975.dart.textual_outline.expect
index 7bf4086..ccb87d9 100644
--- a/pkg/front_end/testcases/general/issue43975.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue43975.dart.textual_outline.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 typedef F = void Function<X extends F>() Function();
 void main() {}
diff --git a/pkg/front_end/testcases/general/issue43975.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue43975.dart.textual_outline_modelled.expect
index 7bf4086..ccb87d9 100644
--- a/pkg/front_end/testcases/general/issue43975.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue43975.dart.textual_outline_modelled.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 typedef F = void Function<X extends F>() Function();
 void main() {}
diff --git a/pkg/front_end/testcases/general/issue43975.dart.weak.expect b/pkg/front_end/testcases/general/issue43975.dart.weak.expect
index a1da936..8d7db11 100644
--- a/pkg/front_end/testcases/general/issue43975.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue43975.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
diff --git a/pkg/front_end/testcases/general/issue43975.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue43975.dart.weak.modular.expect
index a1da936..8d7db11 100644
--- a/pkg/front_end/testcases/general/issue43975.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue43975.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
diff --git a/pkg/front_end/testcases/general/issue43975.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue43975.dart.weak.outline.expect
index a61aa23..a710114 100644
--- a/pkg/front_end/testcases/general/issue43975.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue43975.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
diff --git a/pkg/front_end/testcases/general/issue43975.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue43975.dart.weak.transformed.expect
index a1da936..8d7db11 100644
--- a/pkg/front_end/testcases/general/issue43975.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue43975.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
diff --git a/pkg/front_end/testcases/general/issue44347.dart b/pkg/front_end/testcases/general/issue44347.dart
index 074b4e5..0389b03 100644
--- a/pkg/front_end/testcases/general/issue44347.dart
+++ b/pkg/front_end/testcases/general/issue44347.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
-
 test() {
   Set<int>.();
 }
diff --git a/pkg/front_end/testcases/general/issue44347.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue44347.dart.textual_outline.expect
index 001308b..ec6b9e0 100644
--- a/pkg/front_end/testcases/general/issue44347.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue44347.dart.textual_outline.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 test() {}
 main() {}
diff --git a/pkg/front_end/testcases/general/issue44347.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue44347.dart.textual_outline_modelled.expect
index 38df08d..f67dbb0 100644
--- a/pkg/front_end/testcases/general/issue44347.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue44347.dart.textual_outline_modelled.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 main() {}
 test() {}
diff --git a/pkg/front_end/testcases/general/issue44347.dart.weak.expect b/pkg/front_end/testcases/general/issue44347.dart.weak.expect
index 0fce86b..bd718d5 100644
--- a/pkg/front_end/testcases/general/issue44347.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue44347.dart.weak.expect
@@ -1,18 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue44347.dart:8:6: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
-// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   Set<int>.();
-//      ^
-//
-// pkg/front_end/testcases/general/issue44347.dart:8:13: Error: Expected an identifier, but got ')'.
+// pkg/front_end/testcases/general/issue44347.dart:6:13: Error: Expected an identifier, but got ')'.
 // Try inserting an identifier before ')'.
 //   Set<int>.();
 //             ^
 //
-// pkg/front_end/testcases/general/issue44347.dart:8:12: Error: Expected an identifier, but got '('.
+// pkg/front_end/testcases/general/issue44347.dart:6:12: Error: Expected an identifier, but got '('.
 // Try inserting an identifier before '('.
 //   Set<int>.();
 //            ^
@@ -20,7 +15,7 @@
 import self as self;
 
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/issue44347.dart:8:12: Error: Expected an identifier, but got '('.
+  invalid-expression "pkg/front_end/testcases/general/issue44347.dart:6:12: Error: Expected an identifier, but got '('.
 Try inserting an identifier before '('.
   Set<int>.();
            ^";
diff --git a/pkg/front_end/testcases/general/issue44347.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue44347.dart.weak.modular.expect
index 0fce86b..bd718d5 100644
--- a/pkg/front_end/testcases/general/issue44347.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue44347.dart.weak.modular.expect
@@ -1,18 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue44347.dart:8:6: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
-// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   Set<int>.();
-//      ^
-//
-// pkg/front_end/testcases/general/issue44347.dart:8:13: Error: Expected an identifier, but got ')'.
+// pkg/front_end/testcases/general/issue44347.dart:6:13: Error: Expected an identifier, but got ')'.
 // Try inserting an identifier before ')'.
 //   Set<int>.();
 //             ^
 //
-// pkg/front_end/testcases/general/issue44347.dart:8:12: Error: Expected an identifier, but got '('.
+// pkg/front_end/testcases/general/issue44347.dart:6:12: Error: Expected an identifier, but got '('.
 // Try inserting an identifier before '('.
 //   Set<int>.();
 //            ^
@@ -20,7 +15,7 @@
 import self as self;
 
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/issue44347.dart:8:12: Error: Expected an identifier, but got '('.
+  invalid-expression "pkg/front_end/testcases/general/issue44347.dart:6:12: Error: Expected an identifier, but got '('.
 Try inserting an identifier before '('.
   Set<int>.();
            ^";
diff --git a/pkg/front_end/testcases/general/issue44347.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue44347.dart.weak.outline.expect
index a29647d..64923de 100644
--- a/pkg/front_end/testcases/general/issue44347.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue44347.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/issue44347.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue44347.dart.weak.transformed.expect
index 0fce86b..bd718d5 100644
--- a/pkg/front_end/testcases/general/issue44347.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue44347.dart.weak.transformed.expect
@@ -1,18 +1,13 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/issue44347.dart:8:6: Error: This requires the 'constructor-tearoffs' language feature to be enabled.
-// Try updating your pubspec.yaml to set the minimum SDK constraint to 2.15 or higher, and running 'pub get'.
-//   Set<int>.();
-//      ^
-//
-// pkg/front_end/testcases/general/issue44347.dart:8:13: Error: Expected an identifier, but got ')'.
+// pkg/front_end/testcases/general/issue44347.dart:6:13: Error: Expected an identifier, but got ')'.
 // Try inserting an identifier before ')'.
 //   Set<int>.();
 //             ^
 //
-// pkg/front_end/testcases/general/issue44347.dart:8:12: Error: Expected an identifier, but got '('.
+// pkg/front_end/testcases/general/issue44347.dart:6:12: Error: Expected an identifier, but got '('.
 // Try inserting an identifier before '('.
 //   Set<int>.();
 //            ^
@@ -20,7 +15,7 @@
 import self as self;
 
 static method test() → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/issue44347.dart:8:12: Error: Expected an identifier, but got '('.
+  invalid-expression "pkg/front_end/testcases/general/issue44347.dart:6:12: Error: Expected an identifier, but got '('.
 Try inserting an identifier before '('.
   Set<int>.();
            ^";
diff --git a/pkg/front_end/testcases/general/issue44476.dart b/pkg/front_end/testcases/general/issue44476.dart
index 809de5b..d8459e2 100644
--- a/pkg/front_end/testcases/general/issue44476.dart
+++ b/pkg/front_end/testcases/general/issue44476.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<X extends int> {}
 
 foo(A<num> x) {
diff --git a/pkg/front_end/testcases/general/issue44476.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue44476.dart.textual_outline.expect
index 1681940..c3257fc 100644
--- a/pkg/front_end/testcases/general/issue44476.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue44476.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<X extends int> {}
 
 foo(A<num> x) {}
diff --git a/pkg/front_end/testcases/general/issue44476.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue44476.dart.textual_outline_modelled.expect
index 1681940..c3257fc 100644
--- a/pkg/front_end/testcases/general/issue44476.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue44476.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A<X extends int> {}
 
 foo(A<num> x) {}
diff --git a/pkg/front_end/testcases/general/issue44476.dart.weak.expect b/pkg/front_end/testcases/general/issue44476.dart.weak.expect
index 645587c..0f8715b 100644
--- a/pkg/front_end/testcases/general/issue44476.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue44476.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -61,28 +61,18 @@
 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 A<X extends core::int> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method foo(self::A<core::num*>* x) → dynamic {
-  function bar(self::A<core::num*>* y) → Null {
-    function barbar(self::A<core::num*>* yy) → Null
+static method foo(self::A<core::num> x) → dynamic {
+  function bar(self::A<core::num> y) → Null {
+    function barbar(self::A<core::num> yy) → Null
       return null;
   }
-  (self::A<core::num*>*) →* Null baz = (self::A<core::num*>* z) → Null {
-    (self::A<core::num*>*) →* Null bazbaz = (self::A<core::num*>* zz) → Null => null;
+  (self::A<core::num>) → Null baz = (self::A<core::num> z) → Null {
+    (self::A<core::num>) → Null bazbaz = (self::A<core::num> zz) → Null => null;
   };
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue44476.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue44476.dart.weak.modular.expect
index 645587c..0f8715b 100644
--- a/pkg/front_end/testcases/general/issue44476.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue44476.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -61,28 +61,18 @@
 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 A<X extends core::int> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method foo(self::A<core::num*>* x) → dynamic {
-  function bar(self::A<core::num*>* y) → Null {
-    function barbar(self::A<core::num*>* yy) → Null
+static method foo(self::A<core::num> x) → dynamic {
+  function bar(self::A<core::num> y) → Null {
+    function barbar(self::A<core::num> yy) → Null
       return null;
   }
-  (self::A<core::num*>*) →* Null baz = (self::A<core::num*>* z) → Null {
-    (self::A<core::num*>*) →* Null bazbaz = (self::A<core::num*>* zz) → Null => null;
+  (self::A<core::num>) → Null baz = (self::A<core::num> z) → Null {
+    (self::A<core::num>) → Null bazbaz = (self::A<core::num> zz) → Null => null;
   };
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue44476.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue44476.dart.weak.outline.expect
index 2131965..ab893e2 100644
--- a/pkg/front_end/testcases/general/issue44476.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue44476.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -13,21 +13,11 @@
 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 A<X extends core::int> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method foo(self::A<core::num*>* x) → dynamic
+static method foo(self::A<core::num> x) → dynamic
   ;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue44476.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue44476.dart.weak.transformed.expect
index 645587c..0f8715b 100644
--- a/pkg/front_end/testcases/general/issue44476.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue44476.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -61,28 +61,18 @@
 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 A<X extends core::int> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method foo(self::A<core::num*>* x) → dynamic {
-  function bar(self::A<core::num*>* y) → Null {
-    function barbar(self::A<core::num*>* yy) → Null
+static method foo(self::A<core::num> x) → dynamic {
+  function bar(self::A<core::num> y) → Null {
+    function barbar(self::A<core::num> yy) → Null
       return null;
   }
-  (self::A<core::num*>*) →* Null baz = (self::A<core::num*>* z) → Null {
-    (self::A<core::num*>*) →* Null bazbaz = (self::A<core::num*>* zz) → Null => null;
+  (self::A<core::num>) → Null baz = (self::A<core::num> z) → Null {
+    (self::A<core::num>) → Null bazbaz = (self::A<core::num> zz) → Null => null;
   };
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue44654.dart b/pkg/front_end/testcases/general/issue44654.dart
index ad48c45..267e879 100644
--- a/pkg/front_end/testcases/general/issue44654.dart
+++ b/pkg/front_end/testcases/general/issue44654.dart
@@ -1,8 +1,8 @@
 // Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
+
 // @dart=2.9
-// @dart = 2.9
 
 void test2() {
   String string = null;
diff --git a/pkg/front_end/testcases/general/issue44654.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue44654.dart.textual_outline.expect
index d7c0d32..a95637c 100644
--- a/pkg/front_end/testcases/general/issue44654.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue44654.dart.textual_outline.expect
@@ -1,5 +1,4 @@
 // @dart = 2.9
-// @dart = 2.9
 void test2() {}
 void main() {}
 void checkFirstLineHasPosition(StackTrace stackTrace) {}
diff --git a/pkg/front_end/testcases/general/issue44654.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue44654.dart.textual_outline_modelled.expect
index 3d04f91..95b5598 100644
--- a/pkg/front_end/testcases/general/issue44654.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue44654.dart.textual_outline_modelled.expect
@@ -1,5 +1,4 @@
 // @dart = 2.9
-// @dart = 2.9
 void checkFirstLineHasPosition(StackTrace stackTrace) {}
 void main() {}
 void test2() {}
diff --git a/pkg/front_end/testcases/general/issue45598_2.dart b/pkg/front_end/testcases/general/issue45598_2.dart
index 61a731e..7d615c3 100644
--- a/pkg/front_end/testcases/general/issue45598_2.dart
+++ b/pkg/front_end/testcases/general/issue45598_2.dart
@@ -2,10 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart=2.9
-
 foo(Map<String, String> m) {
-  void bar<X extends Z, Y, Z>({Map<Y, Z> m}) {}
+  void bar<X extends Z, Y, Z>({required Map<Y, Z> m}) {}
   bar(m: m);
 }
 
diff --git a/pkg/front_end/testcases/general/issue45598_2.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue45598_2.dart.textual_outline.expect
index 983b1d0..853274f 100644
--- a/pkg/front_end/testcases/general/issue45598_2.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue45598_2.dart.textual_outline.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 foo(Map<String, String> m) {}
 main() {}
diff --git a/pkg/front_end/testcases/general/issue45598_2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue45598_2.dart.textual_outline_modelled.expect
index 983b1d0..853274f 100644
--- a/pkg/front_end/testcases/general/issue45598_2.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/issue45598_2.dart.textual_outline_modelled.expect
@@ -1,3 +1,2 @@
-// @dart = 2.9
 foo(Map<String, String> m) {}
 main() {}
diff --git a/pkg/front_end/testcases/general/issue45598_2.dart.weak.expect b/pkg/front_end/testcases/general/issue45598_2.dart.weak.expect
index eff30fa..f0813ae 100644
--- a/pkg/front_end/testcases/general/issue45598_2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue45598_2.dart.weak.expect
@@ -1,10 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method foo(core::Map<core::String*, core::String*>* m) → dynamic {
-  function bar<X extends Z* = dynamic, Y extends core::Object* = dynamic, Z extends core::Object* = dynamic>({core::Map<Y*, Z*>* m = #C1}) → void {}
-  bar<core::String*, core::String*, core::String*>(m: m){({m: core::Map<core::String*, core::String*>*}) →* void};
+static method foo(core::Map<core::String, core::String> m) → dynamic {
+  function bar<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({required core::Map<Y%, Z%> m = #C1}) → void {}
+  bar<core::String, core::String, core::String>(m: m){({required m: core::Map<core::String, core::String>}) → void};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue45598_2.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue45598_2.dart.weak.modular.expect
index eff30fa..f0813ae 100644
--- a/pkg/front_end/testcases/general/issue45598_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue45598_2.dart.weak.modular.expect
@@ -1,10 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method foo(core::Map<core::String*, core::String*>* m) → dynamic {
-  function bar<X extends Z* = dynamic, Y extends core::Object* = dynamic, Z extends core::Object* = dynamic>({core::Map<Y*, Z*>* m = #C1}) → void {}
-  bar<core::String*, core::String*, core::String*>(m: m){({m: core::Map<core::String*, core::String*>*}) →* void};
+static method foo(core::Map<core::String, core::String> m) → dynamic {
+  function bar<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({required core::Map<Y%, Z%> m = #C1}) → void {}
+  bar<core::String, core::String, core::String>(m: m){({required m: core::Map<core::String, core::String>}) → void};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue45598_2.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue45598_2.dart.weak.outline.expect
index 9efffa9a..1e7263b 100644
--- a/pkg/front_end/testcases/general/issue45598_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue45598_2.dart.weak.outline.expect
@@ -1,8 +1,8 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method foo(core::Map<core::String*, core::String*>* m) → dynamic
+static method foo(core::Map<core::String, core::String> m) → dynamic
   ;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue45598_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45598_2.dart.weak.transformed.expect
index eff30fa..f0813ae 100644
--- a/pkg/front_end/testcases/general/issue45598_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue45598_2.dart.weak.transformed.expect
@@ -1,10 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-static method foo(core::Map<core::String*, core::String*>* m) → dynamic {
-  function bar<X extends Z* = dynamic, Y extends core::Object* = dynamic, Z extends core::Object* = dynamic>({core::Map<Y*, Z*>* m = #C1}) → void {}
-  bar<core::String*, core::String*, core::String*>(m: m){({m: core::Map<core::String*, core::String*>*}) →* void};
+static method foo(core::Map<core::String, core::String> m) → dynamic {
+  function bar<X extends Z% = dynamic, Y extends core::Object? = dynamic, Z extends core::Object? = dynamic>({required core::Map<Y%, Z%> m = #C1}) → void {}
+  bar<core::String, core::String, core::String>(m: m){({required m: core::Map<core::String, core::String>}) → void};
 }
 static method main() → dynamic {}
 
diff --git a/pkg/front_end/testcases/general/issue45660_2.dart b/pkg/front_end/testcases/general/issue45660_2.dart
new file mode 100644
index 0000000..434fdc4
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45660_2.dart
@@ -0,0 +1,12 @@
+// Copyright (c) 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+T Function<T extends num>(T) extendsNumReturnArg = <S extends num>(S s) => s;
+
+functionInvocations() {
+  extendsNumReturnArg/*<Null>*/(null);
+  extendsNumReturnArg/*<String>*/("");
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/issue45660_2.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue45660_2.dart.textual_outline.expect
new file mode 100644
index 0000000..363627b
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45660_2.dart.textual_outline.expect
@@ -0,0 +1,3 @@
+T Function<T extends num>(T) extendsNumReturnArg = <S extends num>(S s) => s;
+functionInvocations() {}
+main() {}
diff --git a/pkg/front_end/testcases/general/issue45660_2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue45660_2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..363627b
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45660_2.dart.textual_outline_modelled.expect
@@ -0,0 +1,3 @@
+T Function<T extends num>(T) extendsNumReturnArg = <S extends num>(S s) => s;
+functionInvocations() {}
+main() {}
diff --git a/pkg/front_end/testcases/general/issue45660_2.dart.weak.expect b/pkg/front_end/testcases/general/issue45660_2.dart.weak.expect
new file mode 100644
index 0000000..b4ba3a7
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45660_2.dart.weak.expect
@@ -0,0 +1,23 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue45660_2.dart:8:22: Error: Inferred type argument 'Null' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   extendsNumReturnArg/*<Null>*/(null);
+//                      ^
+//
+// pkg/front_end/testcases/general/issue45660_2.dart:9:22: Error: Inferred type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   extendsNumReturnArg/*<String>*/("");
+//                      ^
+//
+import self as self;
+import "dart:core" as core;
+
+static field <T extends core::num = dynamic>(T) → T extendsNumReturnArg = <S extends core::num>(S s) → S => s;
+static method functionInvocations() → dynamic {
+  self::extendsNumReturnArg<Null>(null){(Null) → Null};
+  self::extendsNumReturnArg<core::String>(""){(core::String) → core::String};
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue45660_2.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue45660_2.dart.weak.modular.expect
new file mode 100644
index 0000000..b4ba3a7
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45660_2.dart.weak.modular.expect
@@ -0,0 +1,23 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue45660_2.dart:8:22: Error: Inferred type argument 'Null' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   extendsNumReturnArg/*<Null>*/(null);
+//                      ^
+//
+// pkg/front_end/testcases/general/issue45660_2.dart:9:22: Error: Inferred type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   extendsNumReturnArg/*<String>*/("");
+//                      ^
+//
+import self as self;
+import "dart:core" as core;
+
+static field <T extends core::num = dynamic>(T) → T extendsNumReturnArg = <S extends core::num>(S s) → S => s;
+static method functionInvocations() → dynamic {
+  self::extendsNumReturnArg<Null>(null){(Null) → Null};
+  self::extendsNumReturnArg<core::String>(""){(core::String) → core::String};
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue45660_2.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue45660_2.dart.weak.outline.expect
new file mode 100644
index 0000000..33986f2
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45660_2.dart.weak.outline.expect
@@ -0,0 +1,9 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static field <T extends core::num = dynamic>(T) → T extendsNumReturnArg;
+static method functionInvocations() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/issue45660_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue45660_2.dart.weak.transformed.expect
new file mode 100644
index 0000000..b4ba3a7
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue45660_2.dart.weak.transformed.expect
@@ -0,0 +1,23 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue45660_2.dart:8:22: Error: Inferred type argument 'Null' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   extendsNumReturnArg/*<Null>*/(null);
+//                      ^
+//
+// pkg/front_end/testcases/general/issue45660_2.dart:9:22: Error: Inferred type argument 'String' doesn't conform to the bound 'num' of the type variable 'T' on 'call'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   extendsNumReturnArg/*<String>*/("");
+//                      ^
+//
+import self as self;
+import "dart:core" as core;
+
+static field <T extends core::num = dynamic>(T) → T extendsNumReturnArg = <S extends core::num>(S s) → S => s;
+static method functionInvocations() → dynamic {
+  self::extendsNumReturnArg<Null>(null){(Null) → Null};
+  self::extendsNumReturnArg<core::String>(""){(core::String) → core::String};
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue47495.dart b/pkg/front_end/testcases/general/issue47495.dart
index 53c19c1..fcef9ee 100644
--- a/pkg/front_end/testcases/general/issue47495.dart
+++ b/pkg/front_end/testcases/general/issue47495.dart
@@ -2,9 +2,10 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
+// @dart=2.13
 
 class S {}
+
 class M {}
 
 typedef SAlias = S;
diff --git a/pkg/front_end/testcases/general/issue47495.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue47495.dart.textual_outline.expect
index c7f3471..d5c68b3 100644
--- a/pkg/front_end/testcases/general/issue47495.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/issue47495.dart.textual_outline.expect
@@ -1,6 +1,8 @@
-// @dart = 2.9
+// @dart = 2.13
 class S {}
+
 class M {}
+
 typedef SAlias = S;
 typedef MAlias = M;
 class C = SAlias with MAlias;
diff --git a/pkg/front_end/testcases/general/issue47495.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue47495.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f8cb0e4
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue47495.dart.textual_outline_modelled.expect
@@ -0,0 +1,10 @@
+// @dart = 2.13
+class C = SAlias with MAlias;
+
+class M {}
+
+class S {}
+
+main() {}
+typedef MAlias = M;
+typedef SAlias = S;
diff --git a/pkg/front_end/testcases/general/issue47495.dart.weak.expect b/pkg/front_end/testcases/general/issue47495.dart.weak.expect
index aeebd16..bb6f57a 100644
--- a/pkg/front_end/testcases/general/issue47495.dart.weak.expect
+++ b/pkg/front_end/testcases/general/issue47495.dart.weak.expect
@@ -1,70 +1,22 @@
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/general/issue47495.dart:10:16: Error: Can't create typedef from non-function type.
-// typedef SAlias = S;
-//                ^
-//
-// pkg/front_end/testcases/general/issue47495.dart:11:16: Error: Can't create typedef from non-function type.
-// typedef MAlias = M;
-//                ^
-//
-// pkg/front_end/testcases/general/issue47495.dart:13:7: Error: The type 'MAlias' can't be mixed in.
-// class C = SAlias with MAlias;
-//       ^
-// pkg/front_end/testcases/general/issue47495.dart:11:9: Context: The issue arises via this type alias.
-// typedef MAlias = M;
-//         ^
-//
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef SAlias = invalid-type;
-typedef MAlias = invalid-type;
+typedef SAlias = self::S;
+typedef MAlias = self::M;
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     : 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 M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class C extends core::Object {
-  synthetic constructor •() → self::C*
-    : super core::Object::•()
+class C = self::S with self::M {
+  synthetic constructor •() → self::C
+    : super self::S::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue47495.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue47495.dart.weak.modular.expect
index aeebd16..bb6f57a 100644
--- a/pkg/front_end/testcases/general/issue47495.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/issue47495.dart.weak.modular.expect
@@ -1,70 +1,22 @@
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/general/issue47495.dart:10:16: Error: Can't create typedef from non-function type.
-// typedef SAlias = S;
-//                ^
-//
-// pkg/front_end/testcases/general/issue47495.dart:11:16: Error: Can't create typedef from non-function type.
-// typedef MAlias = M;
-//                ^
-//
-// pkg/front_end/testcases/general/issue47495.dart:13:7: Error: The type 'MAlias' can't be mixed in.
-// class C = SAlias with MAlias;
-//       ^
-// pkg/front_end/testcases/general/issue47495.dart:11:9: Context: The issue arises via this type alias.
-// typedef MAlias = M;
-//         ^
-//
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef SAlias = invalid-type;
-typedef MAlias = invalid-type;
+typedef SAlias = self::S;
+typedef MAlias = self::M;
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     : 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 M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class C extends core::Object {
-  synthetic constructor •() → self::C*
-    : super core::Object::•()
+class C = self::S with self::M {
+  synthetic constructor •() → self::C
+    : super self::S::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue47495.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue47495.dart.weak.outline.expect
index 697ca5b..d437b4a 100644
--- a/pkg/front_end/testcases/general/issue47495.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/issue47495.dart.weak.outline.expect
@@ -1,68 +1,21 @@
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/general/issue47495.dart:10:16: Error: Can't create typedef from non-function type.
-// typedef SAlias = S;
-//                ^
-//
-// pkg/front_end/testcases/general/issue47495.dart:11:16: Error: Can't create typedef from non-function type.
-// typedef MAlias = M;
-//                ^
-//
-// pkg/front_end/testcases/general/issue47495.dart:13:7: Error: The type 'MAlias' can't be mixed in.
-// class C = SAlias with MAlias;
-//       ^
-// pkg/front_end/testcases/general/issue47495.dart:11:9: Context: The issue arises via this type alias.
-// typedef MAlias = M;
-//         ^
-//
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef SAlias = invalid-type;
-typedef MAlias = invalid-type;
+typedef SAlias = self::S;
+typedef MAlias = self::M;
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class C extends core::Object {
-  synthetic constructor •() → self::C*
+class C = self::S with self::M {
+  synthetic constructor •() → self::C
+    : super self::S::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/issue47495.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue47495.dart.weak.transformed.expect
index aeebd16..a9933ce 100644
--- a/pkg/front_end/testcases/general/issue47495.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue47495.dart.weak.transformed.expect
@@ -1,70 +1,22 @@
-library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/general/issue47495.dart:10:16: Error: Can't create typedef from non-function type.
-// typedef SAlias = S;
-//                ^
-//
-// pkg/front_end/testcases/general/issue47495.dart:11:16: Error: Can't create typedef from non-function type.
-// typedef MAlias = M;
-//                ^
-//
-// pkg/front_end/testcases/general/issue47495.dart:13:7: Error: The type 'MAlias' can't be mixed in.
-// class C = SAlias with MAlias;
-//       ^
-// pkg/front_end/testcases/general/issue47495.dart:11:9: Context: The issue arises via this type alias.
-// typedef MAlias = M;
-//         ^
-//
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef SAlias = invalid-type;
-typedef MAlias = invalid-type;
+typedef SAlias = self::S;
+typedef MAlias = self::M;
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     : 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 M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class C extends core::Object {
-  synthetic constructor •() → self::C*
-    : super core::Object::•()
+class C extends self::S implements self::M /*isEliminatedMixin*/  {
+  synthetic constructor •() → self::C
+    : super self::S::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/literals.dart b/pkg/front_end/testcases/general/literals.dart
index 0d637cc..561b82c 100644
--- a/pkg/front_end/testcases/general/literals.dart
+++ b/pkg/front_end/testcases/general/literals.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 testString() {
   print("a");
 }
diff --git a/pkg/front_end/testcases/general/literals.dart.textual_outline.expect b/pkg/front_end/testcases/general/literals.dart.textual_outline.expect
index 23ee3bf..8732e5c8 100644
--- a/pkg/front_end/testcases/general/literals.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/literals.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 testString() {}
 testInt() {}
 testBool() {}
diff --git a/pkg/front_end/testcases/general/literals.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/literals.dart.textual_outline_modelled.expect
index 1125de1..e45ac05 100644
--- a/pkg/front_end/testcases/general/literals.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/literals.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 main() {}
 testBool() {}
 testDouble() {}
diff --git a/pkg/front_end/testcases/general/literals.dart.weak.expect b/pkg/front_end/testcases/general/literals.dart.weak.expect
index 8ef3e48..2bbe155 100644
--- a/pkg/front_end/testcases/general/literals.dart.weak.expect
+++ b/pkg/front_end/testcases/general/literals.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
@@ -20,11 +20,11 @@
 }
 static method testList() → dynamic {
   core::print(<dynamic>[]);
-  core::print(<core::String*>["a", "b"]);
+  core::print(<core::String>["a", "b"]);
 }
 static method testMap() → dynamic {
   core::print(<dynamic, dynamic>{});
-  core::print(<core::String*, core::String*>{"a": "b"});
+  core::print(<core::String, core::String>{"a": "b"});
 }
 static method testSymbol() → dynamic {
   core::print(#C1);
diff --git a/pkg/front_end/testcases/general/literals.dart.weak.modular.expect b/pkg/front_end/testcases/general/literals.dart.weak.modular.expect
index 8ef3e48..2bbe155 100644
--- a/pkg/front_end/testcases/general/literals.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/literals.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
@@ -20,11 +20,11 @@
 }
 static method testList() → dynamic {
   core::print(<dynamic>[]);
-  core::print(<core::String*>["a", "b"]);
+  core::print(<core::String>["a", "b"]);
 }
 static method testMap() → dynamic {
   core::print(<dynamic, dynamic>{});
-  core::print(<core::String*, core::String*>{"a": "b"});
+  core::print(<core::String, core::String>{"a": "b"});
 }
 static method testSymbol() → dynamic {
   core::print(#C1);
diff --git a/pkg/front_end/testcases/general/literals.dart.weak.outline.expect b/pkg/front_end/testcases/general/literals.dart.weak.outline.expect
index ffc79f2..7c2a464 100644
--- a/pkg/front_end/testcases/general/literals.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/literals.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 static method testString() → dynamic
diff --git a/pkg/front_end/testcases/general/literals.dart.weak.transformed.expect b/pkg/front_end/testcases/general/literals.dart.weak.transformed.expect
index ae7c90f..9a94341 100644
--- a/pkg/front_end/testcases/general/literals.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/literals.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
@@ -20,11 +20,11 @@
 }
 static method testList() → dynamic {
   core::print(core::_GrowableList::•<dynamic>(0));
-  core::print(core::_GrowableList::_literal2<core::String*>("a", "b"));
+  core::print(core::_GrowableList::_literal2<core::String>("a", "b"));
 }
 static method testMap() → dynamic {
   core::print(<dynamic, dynamic>{});
-  core::print(<core::String*, core::String*>{"a": "b"});
+  core::print(<core::String, core::String>{"a": "b"});
 }
 static method testSymbol() → dynamic {
   core::print(#C1);
diff --git a/pkg/front_end/testcases/general/local_generic_function.dart b/pkg/front_end/testcases/general/local_generic_function.dart
index 05ec927..a251f14 100644
--- a/pkg/front_end/testcases/general/local_generic_function.dart
+++ b/pkg/front_end/testcases/general/local_generic_function.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
+
 main() {
   T f<T>(List<T> l) => l[0];
   var x = f([0]);
diff --git a/pkg/front_end/testcases/general/local_generic_function.dart.textual_outline.expect b/pkg/front_end/testcases/general/local_generic_function.dart.textual_outline.expect
index 7c126a2..bae895a 100644
--- a/pkg/front_end/testcases/general/local_generic_function.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/local_generic_function.dart.textual_outline.expect
@@ -1,2 +1 @@
-// @dart = 2.9
 main() {}
diff --git a/pkg/front_end/testcases/general/local_generic_function.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/local_generic_function.dart.textual_outline_modelled.expect
index 7c126a2..bae895a 100644
--- a/pkg/front_end/testcases/general/local_generic_function.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/local_generic_function.dart.textual_outline_modelled.expect
@@ -1,2 +1 @@
-// @dart = 2.9
 main() {}
diff --git a/pkg/front_end/testcases/general/local_generic_function.dart.weak.expect b/pkg/front_end/testcases/general/local_generic_function.dart.weak.expect
index b22d5a7..bfb45dd 100644
--- a/pkg/front_end/testcases/general/local_generic_function.dart.weak.expect
+++ b/pkg/front_end/testcases/general/local_generic_function.dart.weak.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 static method main() → dynamic {
-  function f<T extends core::Object* = dynamic>(core::List<T*>* l) → T*
-    return l.{core::List::[]}(0){(core::int*) →* T*};
-  core::int* x = f<core::int*>(<core::int*>[0]){(core::List<core::int*>*) →* core::int*};
+  function f<T extends core::Object? = dynamic>(core::List<T%> l) → T%
+    return l.{core::List::[]}(0){(core::int) → T%};
+  core::int x = f<core::int>(<core::int>[0]){(core::List<core::int>) → core::int};
 }
diff --git a/pkg/front_end/testcases/general/local_generic_function.dart.weak.modular.expect b/pkg/front_end/testcases/general/local_generic_function.dart.weak.modular.expect
index b22d5a7..bfb45dd 100644
--- a/pkg/front_end/testcases/general/local_generic_function.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/local_generic_function.dart.weak.modular.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 static method main() → dynamic {
-  function f<T extends core::Object* = dynamic>(core::List<T*>* l) → T*
-    return l.{core::List::[]}(0){(core::int*) →* T*};
-  core::int* x = f<core::int*>(<core::int*>[0]){(core::List<core::int*>*) →* core::int*};
+  function f<T extends core::Object? = dynamic>(core::List<T%> l) → T%
+    return l.{core::List::[]}(0){(core::int) → T%};
+  core::int x = f<core::int>(<core::int>[0]){(core::List<core::int>) → core::int};
 }
diff --git a/pkg/front_end/testcases/general/local_generic_function.dart.weak.outline.expect b/pkg/front_end/testcases/general/local_generic_function.dart.weak.outline.expect
index 6a28c0d..e2cba6b 100644
--- a/pkg/front_end/testcases/general/local_generic_function.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/local_generic_function.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/local_generic_function.dart.weak.transformed.expect b/pkg/front_end/testcases/general/local_generic_function.dart.weak.transformed.expect
index 6c7e013..4ad80c1 100644
--- a/pkg/front_end/testcases/general/local_generic_function.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/local_generic_function.dart.weak.transformed.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 static method main() → dynamic {
-  function f<T extends core::Object* = dynamic>(core::List<T*>* l) → T*
-    return l.{core::List::[]}(0){(core::int*) →* T*};
-  core::int* x = f<core::int*>(core::_GrowableList::_literal1<core::int*>(0)){(core::List<core::int*>*) →* core::int*};
+  function f<T extends core::Object? = dynamic>(core::List<T%> l) → T%
+    return l.{core::List::[]}(0){(core::int) → T%};
+  core::int x = f<core::int>(core::_GrowableList::_literal1<core::int>(0)){(core::List<core::int>) → core::int};
 }
diff --git a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart
index 23b431a..6a3864c 100644
--- a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart
+++ b/pkg/front_end/testcases/general/long_chain_of_typedefs.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 for potentially slow compilation of long typedef dependency chains.
 
 typedef Foo01<X, Y, Z> = void Function(Null);
diff --git a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.textual_outline.expect b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.textual_outline.expect
index 716cfd0..22729bf 100644
--- a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 typedef Foo01<X, Y, Z> = void Function(Null);
 typedef Foo02<X, Y, Z> = void Function(Foo01<X, Y, Z>);
 typedef Foo03<X, Y, Z> = void Function(Foo02<X, Y, Z>);
diff --git a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.textual_outline_modelled.expect
index ab48f3f..20e1848 100644
--- a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 main() {}
 typedef Foo01<X, Y, Z> = void Function(Null);
 typedef Foo02<X, Y, Z> = void Function(Foo01<X, Y, Z>);
diff --git a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.expect b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.expect
index 10636b1..4bcf146 100644
--- a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.expect
+++ b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.expect
@@ -1,25 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef Foo01<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (Null) →* void;
-typedef Foo02<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((Null) →* void) →* void;
-typedef Foo03<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((Null) →* void) →* void) →* void;
-typedef Foo04<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((Null) →* void) →* void) →* void) →* void;
-typedef Foo05<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((Null) →* void) →* void) →* void) →* void) →* void;
-typedef Foo06<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((Null) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo07<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo08<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo09<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo10<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo11<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo12<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo13<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo14<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo15<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo16<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo17<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo18<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo19<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo20<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
+typedef Foo01<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (Null) → void;
+typedef Foo02<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((Null) → void) → void;
+typedef Foo03<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((Null) → void) → void) → void;
+typedef Foo04<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((Null) → void) → void) → void) → void;
+typedef Foo05<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((Null) → void) → void) → void) → void) → void;
+typedef Foo06<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((Null) → void) → void) → void) → void) → void) → void;
+typedef Foo07<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((Null) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo08<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo09<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo10<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo11<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo12<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo13<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo14<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo15<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo16<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo17<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo18<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo19<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo20<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.modular.expect b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.modular.expect
index 10636b1..4bcf146 100644
--- a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.modular.expect
@@ -1,25 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef Foo01<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (Null) →* void;
-typedef Foo02<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((Null) →* void) →* void;
-typedef Foo03<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((Null) →* void) →* void) →* void;
-typedef Foo04<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((Null) →* void) →* void) →* void) →* void;
-typedef Foo05<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((Null) →* void) →* void) →* void) →* void) →* void;
-typedef Foo06<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((Null) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo07<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo08<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo09<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo10<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo11<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo12<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo13<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo14<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo15<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo16<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo17<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo18<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo19<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo20<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
+typedef Foo01<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (Null) → void;
+typedef Foo02<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((Null) → void) → void;
+typedef Foo03<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((Null) → void) → void) → void;
+typedef Foo04<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((Null) → void) → void) → void) → void;
+typedef Foo05<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((Null) → void) → void) → void) → void) → void;
+typedef Foo06<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((Null) → void) → void) → void) → void) → void) → void;
+typedef Foo07<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((Null) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo08<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo09<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo10<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo11<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo12<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo13<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo14<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo15<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo16<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo17<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo18<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo19<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo20<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.outline.expect b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.outline.expect
index 15cb773..5985e90 100644
--- a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.outline.expect
@@ -1,26 +1,26 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef Foo01<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (Null) →* void;
-typedef Foo02<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((Null) →* void) →* void;
-typedef Foo03<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((Null) →* void) →* void) →* void;
-typedef Foo04<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((Null) →* void) →* void) →* void) →* void;
-typedef Foo05<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((Null) →* void) →* void) →* void) →* void) →* void;
-typedef Foo06<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((Null) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo07<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo08<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo09<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo10<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo11<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo12<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo13<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo14<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo15<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo16<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo17<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo18<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo19<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo20<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
+typedef Foo01<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (Null) → void;
+typedef Foo02<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((Null) → void) → void;
+typedef Foo03<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((Null) → void) → void) → void;
+typedef Foo04<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((Null) → void) → void) → void) → void;
+typedef Foo05<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((Null) → void) → void) → void) → void) → void;
+typedef Foo06<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((Null) → void) → void) → void) → void) → void) → void;
+typedef Foo07<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((Null) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo08<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo09<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo10<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo11<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo12<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo13<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo14<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo15<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo16<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo17<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo18<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo19<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo20<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.transformed.expect b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.transformed.expect
index 10636b1..4bcf146 100644
--- a/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/long_chain_of_typedefs.dart.weak.transformed.expect
@@ -1,25 +1,25 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef Foo01<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (Null) →* void;
-typedef Foo02<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((Null) →* void) →* void;
-typedef Foo03<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((Null) →* void) →* void) →* void;
-typedef Foo04<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((Null) →* void) →* void) →* void) →* void;
-typedef Foo05<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((Null) →* void) →* void) →* void) →* void) →* void;
-typedef Foo06<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((Null) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo07<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo08<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo09<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo10<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo11<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo12<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo13<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo14<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo15<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo16<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo17<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo18<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo19<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = (((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
-typedef Foo20<unrelated X extends core::Object* = dynamic, unrelated Y extends core::Object* = dynamic, unrelated Z extends core::Object* = dynamic> = ((((((((((((((((((((Null) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void) →* void;
+typedef Foo01<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (Null) → void;
+typedef Foo02<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((Null) → void) → void;
+typedef Foo03<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((Null) → void) → void) → void;
+typedef Foo04<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((Null) → void) → void) → void) → void;
+typedef Foo05<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((Null) → void) → void) → void) → void) → void;
+typedef Foo06<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((Null) → void) → void) → void) → void) → void) → void;
+typedef Foo07<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((Null) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo08<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo09<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo10<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo11<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo12<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo13<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo14<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo15<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo16<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo17<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo18<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo19<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = (((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
+typedef Foo20<unrelated X extends core::Object? = dynamic, unrelated Y extends core::Object? = dynamic, unrelated Z extends core::Object? = dynamic> = ((((((((((((((((((((Null) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void) → void;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/magic_const.dart b/pkg/front_end/testcases/general/magic_const.dart
index a409685..276245e 100644
--- a/pkg/front_end/testcases/general/magic_const.dart
+++ b/pkg/front_end/testcases/general/magic_const.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 we produce a compile-time error when magic constness would
 /// otherwise apply.
 // TODO(ahe): Update this test when we implement magic constness correctly.
diff --git a/pkg/front_end/testcases/general/magic_const.dart.textual_outline.expect b/pkg/front_end/testcases/general/magic_const.dart.textual_outline.expect
index 039d732..63982d2 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Constant {
   const Constant();
 }
diff --git a/pkg/front_end/testcases/general/magic_const.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/magic_const.dart.textual_outline_modelled.expect
index cb84be0..98f38df 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Constant {
   const Constant();
 }
diff --git a/pkg/front_end/testcases/general/magic_const.dart.weak.expect b/pkg/front_end/testcases/general/magic_const.dart.weak.expect
index 60dcd8b..4746b81 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.weak.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -30,34 +30,14 @@
 import "dart:core" as core;
 
 class Constant extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::Constant*
+  const constructor •() → self::Constant
     : 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 NotConstant extends core::Object {
-  synthetic constructor •() → self::NotConstant*
+  synthetic constructor •() → self::NotConstant
     : 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 foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal is not a constant expression."}) → dynamic {}
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general/magic_const.dart.weak.modular.expect b/pkg/front_end/testcases/general/magic_const.dart.weak.modular.expect
index 60dcd8b..4746b81 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -30,34 +30,14 @@
 import "dart:core" as core;
 
 class Constant extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::Constant*
+  const constructor •() → self::Constant
     : 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 NotConstant extends core::Object {
-  synthetic constructor •() → self::NotConstant*
+  synthetic constructor •() → self::NotConstant
     : 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 foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal is not a constant expression."}) → dynamic {}
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general/magic_const.dart.weak.outline.expect b/pkg/front_end/testcases/general/magic_const.dart.weak.outline.expect
index 9cad368..758656e 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.weak.outline.expect
@@ -1,35 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Constant extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::Constant*
+  const constructor •() → self::Constant
     : 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 NotConstant extends core::Object {
-  synthetic constructor •() → self::NotConstant*
+  synthetic constructor •() → self::NotConstant
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 foo({dynamic a, dynamic b, dynamic c}) → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect b/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect
index e6298bf..bb758cd 100644
--- a/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/magic_const.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -30,34 +30,14 @@
 import "dart:core" as core;
 
 class Constant extends core::Object /*hasConstConstructor*/  {
-  const constructor •() → self::Constant*
+  const constructor •() → self::Constant
     : 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 NotConstant extends core::Object {
-  synthetic constructor •() → self::NotConstant*
+  synthetic constructor •() → self::NotConstant
     : 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 foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal is not a constant expression."}) → dynamic {}
 static method test() → dynamic {
diff --git a/pkg/front_end/testcases/general/main_declaration.dart b/pkg/front_end/testcases/general/main_declaration.dart
index 8ec5e43..2a6b05a 100644
--- a/pkg/front_end/testcases/general/main_declaration.dart
+++ b/pkg/front_end/testcases/general/main_declaration.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
+
 import 'main_declaration_lib.dart';
 
 main() {}
diff --git a/pkg/front_end/testcases/general/main_declaration_lib.dart b/pkg/front_end/testcases/general/main_declaration_lib.dart
index cb3971a..5edc834 100644
--- a/pkg/front_end/testcases/general/main_declaration_lib.dart
+++ b/pkg/front_end/testcases/general/main_declaration_lib.dart
@@ -1,6 +1,8 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
+
 // @dart=2.9
+
 // This would be an invalid main declaration in a null safe library.
 main(String args) {}
diff --git a/pkg/front_end/testcases/general/many_errors.dart b/pkg/front_end/testcases/general/many_errors.dart
index 27ac04a..8e24483 100644
--- a/pkg/front_end/testcases/general/many_errors.dart
+++ b/pkg/front_end/testcases/general/many_errors.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 {
   final x = null;
 
diff --git a/pkg/front_end/testcases/general/many_errors.dart.weak.expect b/pkg/front_end/testcases/general/many_errors.dart.weak.expect
index 48ce15f..3bb36fb 100644
--- a/pkg/front_end/testcases/general/many_errors.dart.weak.expect
+++ b/pkg/front_end/testcases/general/many_errors.dart.weak.expect
@@ -2,49 +2,49 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/many_errors.dart:8:3: Error: A const constructor can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:10:3: Error: A const constructor can't have a body.
 // Try removing either the 'const' keyword or the body.
 //   const A.named1() sync* {}
 //   ^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:13:1: Error: An external or native method can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:15:1: Error: An external or native method can't have a body.
 // external foo(String x) {
 // ^^^^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:26: Error: New expression is not a constant expression.
+// pkg/front_end/testcases/general/many_errors.dart:12:26: Error: New expression is not a constant expression.
 //   const A.named2() : x = new Object();
 //                          ^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:24: Error: 'x' is a final instance variable that was initialized at the declaration.
+// pkg/front_end/testcases/general/many_errors.dart:12:24: Error: 'x' is a final instance variable that was initialized at the declaration.
 //   const A.named2() : x = new Object();
 //                        ^
-// pkg/front_end/testcases/general/many_errors.dart:6:9: Context: 'x' was initialized here.
+// pkg/front_end/testcases/general/many_errors.dart:8:9: Context: 'x' was initialized here.
 //   final x = null;
 //         ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// pkg/front_end/testcases/general/many_errors.dart:12:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 // Try using a constructor or factory that is 'const'.
 //   const A.named2() : x = new Object();
 //                        ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+// pkg/front_end/testcases/general/many_errors.dart:10:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
 //   const A.named1() sync* {}
 //                          ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:13:24: Error: An external or native method can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:15:24: Error: An external or native method can't have a body.
 // external foo(String x) {
 //                        ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:28:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
+// pkg/front_end/testcases/general/many_errors.dart:30:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
 //   const AbstractClass.id();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// pkg/front_end/testcases/general/many_errors.dart:30:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 // Try using a constructor or factory that is 'const'.
 //   const AbstractClass.id();
 //         ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+// pkg/front_end/testcases/general/many_errors.dart:31:28: Error: The getter 'b' isn't defined for the class 'B'.
 //  - 'B' is from 'pkg/front_end/testcases/general/many_errors.dart'.
 // Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
 //   (new C()?.b ??= new B()).b;
@@ -56,11 +56,11 @@
 class A extends core::Object /*hasConstConstructor*/  {
   final field dynamic x = null;
   constructor named1() → self::A*
-    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/many_errors.dart:10:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
   const A.named1() sync* {}
                          ^" {}
   const constructor named2() → self::A*
-    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:12:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
@@ -123,7 +123,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 external static method foo(core::String* x) → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:13:24: Error: An external or native method can't have a body.
+  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:15:24: Error: An external or native method can't have a body.
 external foo(String x) {
                        ^";
   {
@@ -131,11 +131,11 @@
   }
 }
 static method m() → dynamic {
-  throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+  throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:30:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const AbstractClass.id();
         ^";
-  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:31:28: Error: The getter 'b' isn't defined for the class 'B'.
  - 'B' is from 'pkg/front_end/testcases/general/many_errors.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
   (new C()?.b ??= new B()).b;
diff --git a/pkg/front_end/testcases/general/many_errors.dart.weak.modular.expect b/pkg/front_end/testcases/general/many_errors.dart.weak.modular.expect
index 48ce15f..3bb36fb 100644
--- a/pkg/front_end/testcases/general/many_errors.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/many_errors.dart.weak.modular.expect
@@ -2,49 +2,49 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/many_errors.dart:8:3: Error: A const constructor can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:10:3: Error: A const constructor can't have a body.
 // Try removing either the 'const' keyword or the body.
 //   const A.named1() sync* {}
 //   ^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:13:1: Error: An external or native method can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:15:1: Error: An external or native method can't have a body.
 // external foo(String x) {
 // ^^^^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:26: Error: New expression is not a constant expression.
+// pkg/front_end/testcases/general/many_errors.dart:12:26: Error: New expression is not a constant expression.
 //   const A.named2() : x = new Object();
 //                          ^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:24: Error: 'x' is a final instance variable that was initialized at the declaration.
+// pkg/front_end/testcases/general/many_errors.dart:12:24: Error: 'x' is a final instance variable that was initialized at the declaration.
 //   const A.named2() : x = new Object();
 //                        ^
-// pkg/front_end/testcases/general/many_errors.dart:6:9: Context: 'x' was initialized here.
+// pkg/front_end/testcases/general/many_errors.dart:8:9: Context: 'x' was initialized here.
 //   final x = null;
 //         ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// pkg/front_end/testcases/general/many_errors.dart:12:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 // Try using a constructor or factory that is 'const'.
 //   const A.named2() : x = new Object();
 //                        ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+// pkg/front_end/testcases/general/many_errors.dart:10:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
 //   const A.named1() sync* {}
 //                          ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:13:24: Error: An external or native method can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:15:24: Error: An external or native method can't have a body.
 // external foo(String x) {
 //                        ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:28:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
+// pkg/front_end/testcases/general/many_errors.dart:30:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
 //   const AbstractClass.id();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// pkg/front_end/testcases/general/many_errors.dart:30:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 // Try using a constructor or factory that is 'const'.
 //   const AbstractClass.id();
 //         ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+// pkg/front_end/testcases/general/many_errors.dart:31:28: Error: The getter 'b' isn't defined for the class 'B'.
 //  - 'B' is from 'pkg/front_end/testcases/general/many_errors.dart'.
 // Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
 //   (new C()?.b ??= new B()).b;
@@ -56,11 +56,11 @@
 class A extends core::Object /*hasConstConstructor*/  {
   final field dynamic x = null;
   constructor named1() → self::A*
-    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/many_errors.dart:10:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
   const A.named1() sync* {}
                          ^" {}
   const constructor named2() → self::A*
-    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:12:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
@@ -123,7 +123,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 external static method foo(core::String* x) → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:13:24: Error: An external or native method can't have a body.
+  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:15:24: Error: An external or native method can't have a body.
 external foo(String x) {
                        ^";
   {
@@ -131,11 +131,11 @@
   }
 }
 static method m() → dynamic {
-  throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+  throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:30:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const AbstractClass.id();
         ^";
-  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:31:28: Error: The getter 'b' isn't defined for the class 'B'.
  - 'B' is from 'pkg/front_end/testcases/general/many_errors.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
   (new C()?.b ??= new B()).b;
diff --git a/pkg/front_end/testcases/general/many_errors.dart.weak.outline.expect b/pkg/front_end/testcases/general/many_errors.dart.weak.outline.expect
index 623c813..627708a1 100644
--- a/pkg/front_end/testcases/general/many_errors.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/many_errors.dart.weak.outline.expect
@@ -2,27 +2,27 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/many_errors.dart:8:3: Error: A const constructor can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:10:3: Error: A const constructor can't have a body.
 // Try removing either the 'const' keyword or the body.
 //   const A.named1() sync* {}
 //   ^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:13:1: Error: An external or native method can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:15:1: Error: An external or native method can't have a body.
 // external foo(String x) {
 // ^^^^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:26: Error: New expression is not a constant expression.
+// pkg/front_end/testcases/general/many_errors.dart:12:26: Error: New expression is not a constant expression.
 //   const A.named2() : x = new Object();
 //                          ^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:24: Error: 'x' is a final instance variable that was initialized at the declaration.
+// pkg/front_end/testcases/general/many_errors.dart:12:24: Error: 'x' is a final instance variable that was initialized at the declaration.
 //   const A.named2() : x = new Object();
 //                        ^
-// pkg/front_end/testcases/general/many_errors.dart:6:9: Context: 'x' was initialized here.
+// pkg/front_end/testcases/general/many_errors.dart:8:9: Context: 'x' was initialized here.
 //   final x = null;
 //         ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// pkg/front_end/testcases/general/many_errors.dart:12:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 // Try using a constructor or factory that is 'const'.
 //   const A.named2() : x = new Object();
 //                        ^
@@ -35,7 +35,7 @@
   constructor named1() → self::A*
     ;
   const constructor named2() → self::A*
-    : final dynamic #t1 = throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+    : final dynamic #t1 = throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:12:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
diff --git a/pkg/front_end/testcases/general/many_errors.dart.weak.transformed.expect b/pkg/front_end/testcases/general/many_errors.dart.weak.transformed.expect
index 48ce15f..3bb36fb 100644
--- a/pkg/front_end/testcases/general/many_errors.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/many_errors.dart.weak.transformed.expect
@@ -2,49 +2,49 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/many_errors.dart:8:3: Error: A const constructor can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:10:3: Error: A const constructor can't have a body.
 // Try removing either the 'const' keyword or the body.
 //   const A.named1() sync* {}
 //   ^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:13:1: Error: An external or native method can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:15:1: Error: An external or native method can't have a body.
 // external foo(String x) {
 // ^^^^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:26: Error: New expression is not a constant expression.
+// pkg/front_end/testcases/general/many_errors.dart:12:26: Error: New expression is not a constant expression.
 //   const A.named2() : x = new Object();
 //                          ^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:24: Error: 'x' is a final instance variable that was initialized at the declaration.
+// pkg/front_end/testcases/general/many_errors.dart:12:24: Error: 'x' is a final instance variable that was initialized at the declaration.
 //   const A.named2() : x = new Object();
 //                        ^
-// pkg/front_end/testcases/general/many_errors.dart:6:9: Context: 'x' was initialized here.
+// pkg/front_end/testcases/general/many_errors.dart:8:9: Context: 'x' was initialized here.
 //   final x = null;
 //         ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// pkg/front_end/testcases/general/many_errors.dart:12:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 // Try using a constructor or factory that is 'const'.
 //   const A.named2() : x = new Object();
 //                        ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+// pkg/front_end/testcases/general/many_errors.dart:10:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
 //   const A.named1() sync* {}
 //                          ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:13:24: Error: An external or native method can't have a body.
+// pkg/front_end/testcases/general/many_errors.dart:15:24: Error: An external or native method can't have a body.
 // external foo(String x) {
 //                        ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:28:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
+// pkg/front_end/testcases/general/many_errors.dart:30:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
 //   const AbstractClass.id();
 //         ^^^^^^^^^^^^^
 //
-// pkg/front_end/testcases/general/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// pkg/front_end/testcases/general/many_errors.dart:30:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 // Try using a constructor or factory that is 'const'.
 //   const AbstractClass.id();
 //         ^
 //
-// pkg/front_end/testcases/general/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+// pkg/front_end/testcases/general/many_errors.dart:31:28: Error: The getter 'b' isn't defined for the class 'B'.
 //  - 'B' is from 'pkg/front_end/testcases/general/many_errors.dart'.
 // Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
 //   (new C()?.b ??= new B()).b;
@@ -56,11 +56,11 @@
 class A extends core::Object /*hasConstConstructor*/  {
   final field dynamic x = null;
   constructor named1() → self::A*
-    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/many_errors.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/many_errors.dart:10:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
   const A.named1() sync* {}
                          ^" {}
   const constructor named2() → self::A*
-    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:12:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const A.named2() : x = new Object();
                        ^", super core::Object::•()
@@ -123,7 +123,7 @@
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 external static method foo(core::String* x) → dynamic {
-  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:13:24: Error: An external or native method can't have a body.
+  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:15:24: Error: An external or native method can't have a body.
 external foo(String x) {
                        ^";
   {
@@ -131,11 +131,11 @@
   }
 }
 static method m() → dynamic {
-  throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+  throw invalid-expression "pkg/front_end/testcases/general/many_errors.dart:30:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
 Try using a constructor or factory that is 'const'.
   const AbstractClass.id();
         ^";
-  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:29:28: Error: The getter 'b' isn't defined for the class 'B'.
+  invalid-expression "pkg/front_end/testcases/general/many_errors.dart:31:28: Error: The getter 'b' isn't defined for the class 'B'.
  - 'B' is from 'pkg/front_end/testcases/general/many_errors.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
   (new C()?.b ??= new B()).b;
diff --git a/pkg/front_end/testcases/general/many_errors2.dart b/pkg/front_end/testcases/general/many_errors2.dart
new file mode 100644
index 0000000..3408e7a
--- /dev/null
+++ b/pkg/front_end/testcases/general/many_errors2.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class A {
+  final x = null;
+
+  const A.named1() sync* {}
+
+  const A.named2() : x = new Object();
+}
+
+external foo(String x) {
+  return x.length;
+}
+
+class B {}
+
+class C {
+  late B b;
+}
+
+abstract class AbstractClass {
+  const AbstractClass.id();
+}
+
+m() {
+  const AbstractClass.id();
+  (new C().b ??= new B()).b;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/many_errors2.dart.textual_outline.expect b/pkg/front_end/testcases/general/many_errors2.dart.textual_outline.expect
new file mode 100644
index 0000000..555c12a
--- /dev/null
+++ b/pkg/front_end/testcases/general/many_errors2.dart.textual_outline.expect
@@ -0,0 +1,16 @@
+class A {
+  final x = null;
+  const A.named1() sync* {}
+  const A.named2() : x = new Object();
+}
+external foo(String x) {}
+class B {}
+class C {
+  late
+  B b;
+}
+abstract class AbstractClass {
+  const AbstractClass.id();
+}
+m() {}
+main() {}
diff --git a/pkg/front_end/testcases/general/many_errors2.dart.weak.expect b/pkg/front_end/testcases/general/many_errors2.dart.weak.expect
new file mode 100644
index 0000000..b462ffa
--- /dev/null
+++ b/pkg/front_end/testcases/general/many_errors2.dart.weak.expect
@@ -0,0 +1,109 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/many_errors2.dart:8:3: Error: A const constructor can't have a body.
+// Try removing either the 'const' keyword or the body.
+//   const A.named1() sync* {}
+//   ^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:13:1: Error: An external or native method can't have a body.
+// external foo(String x) {
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:26: Error: New expression is not a constant expression.
+//   const A.named2() : x = new Object();
+//                          ^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: 'x' is a final instance variable that was initialized at the declaration.
+//   const A.named2() : x = new Object();
+//                        ^
+// pkg/front_end/testcases/general/many_errors2.dart:6:9: Context: 'x' was initialized here.
+//   final x = null;
+//         ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const A.named2() : x = new Object();
+//                        ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+//   const A.named1() sync* {}
+//                          ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:13:24: Error: An external or native method can't have a body.
+// external foo(String x) {
+//                        ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:28:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
+//   const AbstractClass.id();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const AbstractClass.id();
+//         ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:29:12: Warning: Operand of null-aware operation '??=' has type 'B' which excludes null.
+//  - 'B' is from 'pkg/front_end/testcases/general/many_errors2.dart'.
+//   (new C().b ??= new B()).b;
+//            ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:29:27: Error: The getter 'b' isn't defined for the class 'B'.
+//  - 'B' is from 'pkg/front_end/testcases/general/many_errors2.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+//   (new C().b ??= new B()).b;
+//                           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object /*hasConstConstructor*/  {
+  final field dynamic x = null;
+  constructor named1() → self::A
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+  const A.named1() sync* {}
+                         ^" {}
+  const constructor named2() → self::A
+    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const A.named2() : x = new Object();
+                       ^", super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+}
+class C extends core::Object {
+  late field self::B b;
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
+  const constructor id() → self::AbstractClass
+    : super core::Object::•()
+    ;
+}
+external static method foo(core::String x) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:13:24: Error: An external or native method can't have a body.
+external foo(String x) {
+                       ^";
+  {
+    return x.{core::String::length}{core::int};
+  }
+}
+static method m() → dynamic {
+  throw invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const AbstractClass.id();
+        ^";
+  invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:29:27: Error: The getter 'b' isn't defined for the class 'B'.
+ - 'B' is from 'pkg/front_end/testcases/general/many_errors2.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+  (new C().b ??= new B()).b;
+                          ^" in (let final self::C #t3 = new self::C::•() in let final self::B #t4 = #t3.{self::C::b}{self::B} in #t4 == null ?{self::B} #t3.{self::C::b} = new self::B::•() : #t4){<unresolved>}.b;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/many_errors2.dart.weak.modular.expect b/pkg/front_end/testcases/general/many_errors2.dart.weak.modular.expect
new file mode 100644
index 0000000..b462ffa
--- /dev/null
+++ b/pkg/front_end/testcases/general/many_errors2.dart.weak.modular.expect
@@ -0,0 +1,109 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/many_errors2.dart:8:3: Error: A const constructor can't have a body.
+// Try removing either the 'const' keyword or the body.
+//   const A.named1() sync* {}
+//   ^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:13:1: Error: An external or native method can't have a body.
+// external foo(String x) {
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:26: Error: New expression is not a constant expression.
+//   const A.named2() : x = new Object();
+//                          ^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: 'x' is a final instance variable that was initialized at the declaration.
+//   const A.named2() : x = new Object();
+//                        ^
+// pkg/front_end/testcases/general/many_errors2.dart:6:9: Context: 'x' was initialized here.
+//   final x = null;
+//         ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const A.named2() : x = new Object();
+//                        ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+//   const A.named1() sync* {}
+//                          ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:13:24: Error: An external or native method can't have a body.
+// external foo(String x) {
+//                        ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:28:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
+//   const AbstractClass.id();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const AbstractClass.id();
+//         ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:29:12: Warning: Operand of null-aware operation '??=' has type 'B' which excludes null.
+//  - 'B' is from 'pkg/front_end/testcases/general/many_errors2.dart'.
+//   (new C().b ??= new B()).b;
+//            ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:29:27: Error: The getter 'b' isn't defined for the class 'B'.
+//  - 'B' is from 'pkg/front_end/testcases/general/many_errors2.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+//   (new C().b ??= new B()).b;
+//                           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object /*hasConstConstructor*/  {
+  final field dynamic x = null;
+  constructor named1() → self::A
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+  const A.named1() sync* {}
+                         ^" {}
+  const constructor named2() → self::A
+    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const A.named2() : x = new Object();
+                       ^", super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+}
+class C extends core::Object {
+  late field self::B b;
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
+  const constructor id() → self::AbstractClass
+    : super core::Object::•()
+    ;
+}
+external static method foo(core::String x) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:13:24: Error: An external or native method can't have a body.
+external foo(String x) {
+                       ^";
+  {
+    return x.{core::String::length}{core::int};
+  }
+}
+static method m() → dynamic {
+  throw invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const AbstractClass.id();
+        ^";
+  invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:29:27: Error: The getter 'b' isn't defined for the class 'B'.
+ - 'B' is from 'pkg/front_end/testcases/general/many_errors2.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+  (new C().b ??= new B()).b;
+                          ^" in (let final self::C #t3 = new self::C::•() in let final self::B #t4 = #t3.{self::C::b}{self::B} in #t4 == null ?{self::B} #t3.{self::C::b} = new self::B::•() : #t4){<unresolved>}.b;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/many_errors2.dart.weak.outline.expect b/pkg/front_end/testcases/general/many_errors2.dart.weak.outline.expect
new file mode 100644
index 0000000..65c668f
--- /dev/null
+++ b/pkg/front_end/testcases/general/many_errors2.dart.weak.outline.expect
@@ -0,0 +1,62 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/many_errors2.dart:8:3: Error: A const constructor can't have a body.
+// Try removing either the 'const' keyword or the body.
+//   const A.named1() sync* {}
+//   ^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:13:1: Error: An external or native method can't have a body.
+// external foo(String x) {
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:26: Error: New expression is not a constant expression.
+//   const A.named2() : x = new Object();
+//                          ^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: 'x' is a final instance variable that was initialized at the declaration.
+//   const A.named2() : x = new Object();
+//                        ^
+// pkg/front_end/testcases/general/many_errors2.dart:6:9: Context: 'x' was initialized here.
+//   final x = null;
+//         ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const A.named2() : x = new Object();
+//                        ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object /*hasConstConstructor*/  {
+  final field dynamic x = null;
+  constructor named1() → self::A
+    ;
+  const constructor named2() → self::A
+    : final dynamic #t1 = throw invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const A.named2() : x = new Object();
+                       ^", super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    ;
+}
+class C extends core::Object {
+  late field self::B b;
+  synthetic constructor •() → self::C
+    ;
+}
+abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
+  const constructor id() → self::AbstractClass
+    : super core::Object::•()
+    ;
+}
+external static method foo(core::String x) → dynamic;
+static method m() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/many_errors2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/many_errors2.dart.weak.transformed.expect
new file mode 100644
index 0000000..b462ffa
--- /dev/null
+++ b/pkg/front_end/testcases/general/many_errors2.dart.weak.transformed.expect
@@ -0,0 +1,109 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/many_errors2.dart:8:3: Error: A const constructor can't have a body.
+// Try removing either the 'const' keyword or the body.
+//   const A.named1() sync* {}
+//   ^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:13:1: Error: An external or native method can't have a body.
+// external foo(String x) {
+// ^^^^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:26: Error: New expression is not a constant expression.
+//   const A.named2() : x = new Object();
+//                          ^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: 'x' is a final instance variable that was initialized at the declaration.
+//   const A.named2() : x = new Object();
+//                        ^
+// pkg/front_end/testcases/general/many_errors2.dart:6:9: Context: 'x' was initialized here.
+//   final x = null;
+//         ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const A.named2() : x = new Object();
+//                        ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+//   const A.named1() sync* {}
+//                          ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:13:24: Error: An external or native method can't have a body.
+// external foo(String x) {
+//                        ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:28:9: Error: The class 'AbstractClass' is abstract and can't be instantiated.
+//   const AbstractClass.id();
+//         ^^^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+// Try using a constructor or factory that is 'const'.
+//   const AbstractClass.id();
+//         ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:29:12: Warning: Operand of null-aware operation '??=' has type 'B' which excludes null.
+//  - 'B' is from 'pkg/front_end/testcases/general/many_errors2.dart'.
+//   (new C().b ??= new B()).b;
+//            ^
+//
+// pkg/front_end/testcases/general/many_errors2.dart:29:27: Error: The getter 'b' isn't defined for the class 'B'.
+//  - 'B' is from 'pkg/front_end/testcases/general/many_errors2.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+//   (new C().b ??= new B()).b;
+//                           ^
+//
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object /*hasConstConstructor*/  {
+  final field dynamic x = null;
+  constructor named1() → self::A
+    : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:8:26: Error: Constructor bodies can't use 'async', 'async*', or 'sync*'.
+  const A.named1() sync* {}
+                         ^" {}
+  const constructor named2() → self::A
+    : final dynamic #t2 = throw invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:10:24: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const A.named2() : x = new Object();
+                       ^", super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+}
+class C extends core::Object {
+  late field self::B b;
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+abstract class AbstractClass extends core::Object /*hasConstConstructor*/  {
+  const constructor id() → self::AbstractClass
+    : super core::Object::•()
+    ;
+}
+external static method foo(core::String x) → dynamic {
+  invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:13:24: Error: An external or native method can't have a body.
+external foo(String x) {
+                       ^";
+  {
+    return x.{core::String::length}{core::int};
+  }
+}
+static method m() → dynamic {
+  throw invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:28:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
+Try using a constructor or factory that is 'const'.
+  const AbstractClass.id();
+        ^";
+  invalid-expression "pkg/front_end/testcases/general/many_errors2.dart:29:27: Error: The getter 'b' isn't defined for the class 'B'.
+ - 'B' is from 'pkg/front_end/testcases/general/many_errors2.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'b'.
+  (new C().b ??= new B()).b;
+                          ^" in (let final self::C #t3 = new self::C::•() in let final self::B #t4 = #t3.{self::C::b}{self::B} in #t4 == null ?{self::B} #t3.{self::C::b} = new self::B::•() : #t4){<unresolved>}.b;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart b/pkg/front_end/testcases/general/metadata_enum.dart
index d8f5441..e31a3ce 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart
+++ b/pkg/front_end/testcases/general/metadata_enum.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
+
 const a = null;
 
 @a
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.textual_outline.expect b/pkg/front_end/testcases/general/metadata_enum.dart.textual_outline.expect
index fcf0e3c..4cd3089 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 const a = null;
 
 @a
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/metadata_enum.dart.textual_outline_modelled.expect
index fcf0e3c..4cd3089 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 const a = null;
 
 @a
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.weak.expect b/pkg/front_end/testcases/general/metadata_enum.dart.weak.expect
index cb38609..1732e11 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.weak.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.weak.expect
@@ -1,29 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 @#C1
 class E extends core::_Enum /*isEnum*/  {
-  static const field core::List<self::E*>* values = #C11;
-  static const field self::E* E1 = #C4;
-  static const field self::E* E2 = #C7;
-  static const field self::E* E3 = #C10;
-  const constructor •(core::int* index, core::String* name) → self::E*
+  static const field core::List<self::E> values = #C11;
+  static const field self::E E1 = #C4;
+  static const field self::E E2 = #C7;
+  static const field self::E E3 = #C10;
+  const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
-  method toString() → core::String*
+  method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
-  abstract member-signature get index() → core::int*; -> core::_Enum::index
-  abstract member-signature get _name() → core::String*; -> core::_Enum::_name
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.weak.modular.expect b/pkg/front_end/testcases/general/metadata_enum.dart.weak.modular.expect
index cb38609..1732e11 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.weak.modular.expect
@@ -1,29 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 @#C1
 class E extends core::_Enum /*isEnum*/  {
-  static const field core::List<self::E*>* values = #C11;
-  static const field self::E* E1 = #C4;
-  static const field self::E* E2 = #C7;
-  static const field self::E* E3 = #C10;
-  const constructor •(core::int* index, core::String* name) → self::E*
+  static const field core::List<self::E> values = #C11;
+  static const field self::E E1 = #C4;
+  static const field self::E E2 = #C7;
+  static const field self::E E3 = #C10;
+  const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
-  method toString() → core::String*
+  method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
-  abstract member-signature get index() → core::int*; -> core::_Enum::index
-  abstract member-signature get _name() → core::String*; -> core::_Enum::_name
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.weak.outline.expect b/pkg/front_end/testcases/general/metadata_enum.dart.weak.outline.expect
index 09a1c26..8cd295c 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.weak.outline.expect
@@ -1,29 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 @self::a
 class E extends core::_Enum /*isEnum*/  {
-  static const field core::List<self::E*>* values = const <self::E*>[self::E::E1, self::E::E2, self::E::E3];
-  static const field self::E* E1 = const self::E::•(0, "E1");
-  static const field self::E* E2 = const self::E::•(1, "E2");
-  static const field self::E* E3 = const self::E::•(2, "E3");
-  const constructor •(core::int* index, core::String* name) → self::E*
+  static const field core::List<self::E> values = const <self::E>[self::E::E1, self::E::E2, self::E::E3];
+  static const field self::E E1 = const self::E::•(0, "E1");
+  static const field self::E E2 = const self::E::•(1, "E2");
+  static const field self::E E3 = const self::E::•(2, "E3");
+  const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
-  method toString() → core::String*
+  method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
-  abstract member-signature get index() → core::int*; -> core::_Enum::index
-  abstract member-signature get _name() → core::String*; -> core::_Enum::_name
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static const field dynamic a = null;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/metadata_enum.dart.weak.transformed.expect b/pkg/front_end/testcases/general/metadata_enum.dart.weak.transformed.expect
index cb38609..1732e11 100644
--- a/pkg/front_end/testcases/general/metadata_enum.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/metadata_enum.dart.weak.transformed.expect
@@ -1,29 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 @#C1
 class E extends core::_Enum /*isEnum*/  {
-  static const field core::List<self::E*>* values = #C11;
-  static const field self::E* E1 = #C4;
-  static const field self::E* E2 = #C7;
-  static const field self::E* E3 = #C10;
-  const constructor •(core::int* index, core::String* name) → self::E*
+  static const field core::List<self::E> values = #C11;
+  static const field self::E E1 = #C4;
+  static const field self::E E2 = #C7;
+  static const field self::E E3 = #C10;
+  const constructor •(core::int index, core::String name) → self::E
     : super core::_Enum::•(index, name)
     ;
-  method toString() → core::String*
+  method toString() → core::String
     return "E.${this.{core::_Enum::_name}{core::String}}";
-  abstract member-signature get index() → core::int*; -> core::_Enum::index
-  abstract member-signature get _name() → core::String*; -> core::_Enum::_name
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart
index bd1fa26..1861f85 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.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
+
 const a = null;
 
 @a
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.textual_outline.expect b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.textual_outline.expect
index aed1297..525a405 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 const a = null;
 @a
 class C = D with E;
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.textual_outline_modelled.expect
index 10a58d2..8c1c5b9 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 @a
 class C = D with E;
 
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.expect b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.expect
index 02845a0..8acc1e5 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.expect
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.expect
@@ -1,42 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 @#C1
 class C = self::D with self::E {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::D::•()
     ;
 }
 class D extends core::Object {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : 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 E extends core::Object {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : 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 const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.modular.expect b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.modular.expect
index 02845a0..8acc1e5 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.modular.expect
@@ -1,42 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 @#C1
 class C = self::D with self::E {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::D::•()
     ;
 }
 class D extends core::Object {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : 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 E extends core::Object {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : 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 const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.outline.expect b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.outline.expect
index 537845c..1a6c17a 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.outline.expect
@@ -1,40 +1,20 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 @self::a
 class C = self::D with self::E {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::D::•()
     ;
 }
 class D extends core::Object {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 extends core::Object {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static const field dynamic a = null;
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.transformed.expect b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.transformed.expect
index 51c5bf3..8686f7a 100644
--- a/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/metadata_named_mixin_application.dart.weak.transformed.expect
@@ -1,42 +1,22 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 @#C1
 class C extends self::D implements self::E /*isEliminatedMixin*/  {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::D::•()
     ;
 }
 class D extends core::Object {
-  synthetic constructor •() → self::D*
+  synthetic constructor •() → self::D
     : 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 E extends core::Object {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : 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 const field dynamic a = #C1;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart b/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart
index 60aebf5..4cd3ccd 100644
--- a/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart
+++ b/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart
@@ -2,7 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart=2.6
+// @dart=2.9
 
 class A<X extends num> {
   void f<Y extends X>(Y y) {}
diff --git a/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart.textual_outline.expect b/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart.textual_outline.expect
index 29b47f8..2f01f98 100644
--- a/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart.textual_outline.expect
@@ -1,4 +1,4 @@
-// @dart = 2.6
+// @dart = 2.9
 class A<X extends num> {
   void f<Y extends X>(Y y) {}
 }
diff --git a/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart.textual_outline_modelled.expect
index 29b47f8..2f01f98 100644
--- a/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/method_tearoff_covariant_generic_type_check_opt_out.dart.textual_outline_modelled.expect
@@ -1,4 +1,4 @@
-// @dart = 2.6
+// @dart = 2.9
 class A<X extends num> {
   void f<Y extends X>(Y y) {}
 }
diff --git a/pkg/front_end/testcases/general/micro.dart b/pkg/front_end/testcases/general/micro.dart
index 483abd29..cfcb2fc 100644
--- a/pkg/front_end/testcases/general/micro.dart
+++ b/pkg/front_end/testcases/general/micro.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
+
 staticMethod() {
   return "sdfg";
 }
diff --git a/pkg/front_end/testcases/general/micro.dart.textual_outline.expect b/pkg/front_end/testcases/general/micro.dart.textual_outline.expect
index 229392f..1c27a80 100644
--- a/pkg/front_end/testcases/general/micro.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/micro.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 staticMethod() {}
 
 class Foo {
diff --git a/pkg/front_end/testcases/general/micro.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/micro.dart.textual_outline_modelled.expect
index 87285db..0ec1840 100644
--- a/pkg/front_end/testcases/general/micro.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/micro.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Bar {
   ExternalValue externalInstanceMethod();
 }
diff --git a/pkg/front_end/testcases/general/micro.dart.weak.expect b/pkg/front_end/testcases/general/micro.dart.weak.expect
index 8bd8f18..bcea300 100644
--- a/pkg/front_end/testcases/general/micro.dart.weak.expect
+++ b/pkg/front_end/testcases/general/micro.dart.weak.expect
@@ -1,130 +1,60 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
   method instanceMethod() → dynamic {
     return 123;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 ExternalValue extends core::Object {
-  synthetic constructor •() → self::ExternalValue*
+  synthetic constructor •() → self::ExternalValue
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Bar extends core::Object {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  abstract method externalInstanceMethod() → self::ExternalValue*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 externalInstanceMethod() → self::ExternalValue;
 }
 class Box extends core::Object {
   field dynamic field = null;
-  synthetic constructor •() → self::Box*
+  synthetic constructor •() → self::Box
     : 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 FinalBox extends core::Object {
   final field dynamic finalField;
-  constructor •(dynamic finalField) → self::FinalBox*
+  constructor •(dynamic finalField) → self::FinalBox
     : self::FinalBox::finalField = finalField, 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 SubFinalBox extends self::FinalBox {
-  constructor •(dynamic value) → self::SubFinalBox*
+  constructor •(dynamic value) → self::SubFinalBox
     : super self::FinalBox::•(value)
     ;
 }
 class DynamicReceiver1 extends core::Object {
-  synthetic constructor •() → self::DynamicReceiver1*
+  synthetic constructor •() → self::DynamicReceiver1
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic 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
 }
 class DynamicReceiver2 extends core::Object {
-  synthetic constructor •() → self::DynamicReceiver2*
+  synthetic constructor •() → self::DynamicReceiver2
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic 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 staticMethod() → dynamic {
   return "sdfg";
 }
-external static method externalStatic() → core::bool*;
-external static method createBar() → self::Bar*;
+external static method externalStatic() → core::bool;
+external static method createBar() → self::Bar;
 static method stringArgument(dynamic x) → dynamic {}
 static method intArgument(dynamic x) → dynamic {}
 static method makeDynamicCall(dynamic receiver) → void {
@@ -132,20 +62,20 @@
 }
 static method main() → dynamic {
   dynamic x = self::staticMethod();
-  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}(){() →* dynamic};
-  core::bool* z = self::externalStatic();
-  self::ExternalValue* w = self::createBar().{self::Bar::externalInstanceMethod}(){() →* self::ExternalValue*};
+  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}(){() → dynamic};
+  core::bool z = self::externalStatic();
+  self::ExternalValue w = self::createBar().{self::Bar::externalInstanceMethod}(){() → self::ExternalValue};
   self::stringArgument("sdfg");
   self::intArgument(42);
-  self::Box* box = new self::Box::•();
+  self::Box box = new self::Box::•();
   box.{self::Box::field} = "sdfg";
   dynamic a = box.{self::Box::field}{dynamic};
-  self::FinalBox* finalBox = new self::FinalBox::•("dfg");
+  self::FinalBox finalBox = new self::FinalBox::•("dfg");
   dynamic b = finalBox.{self::FinalBox::finalField}{dynamic};
-  self::SubFinalBox* subBox = new self::SubFinalBox::•("dfg");
+  self::SubFinalBox subBox = new self::SubFinalBox::•("dfg");
   dynamic c = subBox.{self::FinalBox::finalField}{dynamic};
   self::makeDynamicCall(new self::DynamicReceiver1::•());
   self::makeDynamicCall(new self::DynamicReceiver2::•());
-  core::List<core::String*>* list = <core::String*>["string"];
-  core::String* d = list.{core::List::[]}(0){(core::int*) →* core::String*};
+  core::List<core::String> list = <core::String>["string"];
+  core::String d = list.{core::List::[]}(0){(core::int) → core::String};
 }
diff --git a/pkg/front_end/testcases/general/micro.dart.weak.modular.expect b/pkg/front_end/testcases/general/micro.dart.weak.modular.expect
index 8bd8f18..bcea300 100644
--- a/pkg/front_end/testcases/general/micro.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/micro.dart.weak.modular.expect
@@ -1,130 +1,60 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
   method instanceMethod() → dynamic {
     return 123;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 ExternalValue extends core::Object {
-  synthetic constructor •() → self::ExternalValue*
+  synthetic constructor •() → self::ExternalValue
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Bar extends core::Object {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  abstract method externalInstanceMethod() → self::ExternalValue*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 externalInstanceMethod() → self::ExternalValue;
 }
 class Box extends core::Object {
   field dynamic field = null;
-  synthetic constructor •() → self::Box*
+  synthetic constructor •() → self::Box
     : 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 FinalBox extends core::Object {
   final field dynamic finalField;
-  constructor •(dynamic finalField) → self::FinalBox*
+  constructor •(dynamic finalField) → self::FinalBox
     : self::FinalBox::finalField = finalField, 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 SubFinalBox extends self::FinalBox {
-  constructor •(dynamic value) → self::SubFinalBox*
+  constructor •(dynamic value) → self::SubFinalBox
     : super self::FinalBox::•(value)
     ;
 }
 class DynamicReceiver1 extends core::Object {
-  synthetic constructor •() → self::DynamicReceiver1*
+  synthetic constructor •() → self::DynamicReceiver1
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic 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
 }
 class DynamicReceiver2 extends core::Object {
-  synthetic constructor •() → self::DynamicReceiver2*
+  synthetic constructor •() → self::DynamicReceiver2
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic 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 staticMethod() → dynamic {
   return "sdfg";
 }
-external static method externalStatic() → core::bool*;
-external static method createBar() → self::Bar*;
+external static method externalStatic() → core::bool;
+external static method createBar() → self::Bar;
 static method stringArgument(dynamic x) → dynamic {}
 static method intArgument(dynamic x) → dynamic {}
 static method makeDynamicCall(dynamic receiver) → void {
@@ -132,20 +62,20 @@
 }
 static method main() → dynamic {
   dynamic x = self::staticMethod();
-  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}(){() →* dynamic};
-  core::bool* z = self::externalStatic();
-  self::ExternalValue* w = self::createBar().{self::Bar::externalInstanceMethod}(){() →* self::ExternalValue*};
+  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}(){() → dynamic};
+  core::bool z = self::externalStatic();
+  self::ExternalValue w = self::createBar().{self::Bar::externalInstanceMethod}(){() → self::ExternalValue};
   self::stringArgument("sdfg");
   self::intArgument(42);
-  self::Box* box = new self::Box::•();
+  self::Box box = new self::Box::•();
   box.{self::Box::field} = "sdfg";
   dynamic a = box.{self::Box::field}{dynamic};
-  self::FinalBox* finalBox = new self::FinalBox::•("dfg");
+  self::FinalBox finalBox = new self::FinalBox::•("dfg");
   dynamic b = finalBox.{self::FinalBox::finalField}{dynamic};
-  self::SubFinalBox* subBox = new self::SubFinalBox::•("dfg");
+  self::SubFinalBox subBox = new self::SubFinalBox::•("dfg");
   dynamic c = subBox.{self::FinalBox::finalField}{dynamic};
   self::makeDynamicCall(new self::DynamicReceiver1::•());
   self::makeDynamicCall(new self::DynamicReceiver2::•());
-  core::List<core::String*>* list = <core::String*>["string"];
-  core::String* d = list.{core::List::[]}(0){(core::int*) →* core::String*};
+  core::List<core::String> list = <core::String>["string"];
+  core::String d = list.{core::List::[]}(0){(core::int) → core::String};
 }
diff --git a/pkg/front_end/testcases/general/micro.dart.weak.outline.expect b/pkg/front_end/testcases/general/micro.dart.weak.outline.expect
index 2d4939b..1741ac7 100644
--- a/pkg/front_end/testcases/general/micro.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/micro.dart.weak.outline.expect
@@ -1,122 +1,52 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     ;
   method instanceMethod() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class ExternalValue extends core::Object {
-  synthetic constructor •() → self::ExternalValue*
+  synthetic constructor •() → self::ExternalValue
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Bar extends core::Object {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     ;
-  abstract method externalInstanceMethod() → self::ExternalValue*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 externalInstanceMethod() → self::ExternalValue;
 }
 class Box extends core::Object {
   field dynamic field;
-  synthetic constructor •() → self::Box*
+  synthetic constructor •() → self::Box
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 FinalBox extends core::Object {
   final field dynamic finalField;
-  constructor •(dynamic finalField) → self::FinalBox*
+  constructor •(dynamic finalField) → self::FinalBox
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 SubFinalBox extends self::FinalBox {
-  constructor •(dynamic value) → self::SubFinalBox*
+  constructor •(dynamic value) → self::SubFinalBox
     ;
 }
 class DynamicReceiver1 extends core::Object {
-  synthetic constructor •() → self::DynamicReceiver1*
+  synthetic constructor •() → self::DynamicReceiver1
     ;
   method dynamicallyCalled(dynamic 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
 }
 class DynamicReceiver2 extends core::Object {
-  synthetic constructor •() → self::DynamicReceiver2*
+  synthetic constructor •() → self::DynamicReceiver2
     ;
   method dynamicallyCalled(dynamic 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 staticMethod() → dynamic
   ;
-external static method externalStatic() → core::bool*;
-external static method createBar() → self::Bar*;
+external static method externalStatic() → core::bool;
+external static method createBar() → self::Bar;
 static method stringArgument(dynamic x) → dynamic
   ;
 static method intArgument(dynamic x) → dynamic
diff --git a/pkg/front_end/testcases/general/micro.dart.weak.transformed.expect b/pkg/front_end/testcases/general/micro.dart.weak.transformed.expect
index 23f0c21..c2aee71 100644
--- a/pkg/front_end/testcases/general/micro.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/micro.dart.weak.transformed.expect
@@ -1,130 +1,60 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
   method instanceMethod() → dynamic {
     return 123;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 ExternalValue extends core::Object {
-  synthetic constructor •() → self::ExternalValue*
+  synthetic constructor •() → self::ExternalValue
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Bar extends core::Object {
-  synthetic constructor •() → self::Bar*
+  synthetic constructor •() → self::Bar
     : super core::Object::•()
     ;
-  abstract method externalInstanceMethod() → self::ExternalValue*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 externalInstanceMethod() → self::ExternalValue;
 }
 class Box extends core::Object {
   field dynamic field = null;
-  synthetic constructor •() → self::Box*
+  synthetic constructor •() → self::Box
     : 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 FinalBox extends core::Object {
   final field dynamic finalField;
-  constructor •(dynamic finalField) → self::FinalBox*
+  constructor •(dynamic finalField) → self::FinalBox
     : self::FinalBox::finalField = finalField, 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 SubFinalBox extends self::FinalBox {
-  constructor •(dynamic value) → self::SubFinalBox*
+  constructor •(dynamic value) → self::SubFinalBox
     : super self::FinalBox::•(value)
     ;
 }
 class DynamicReceiver1 extends core::Object {
-  synthetic constructor •() → self::DynamicReceiver1*
+  synthetic constructor •() → self::DynamicReceiver1
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic 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
 }
 class DynamicReceiver2 extends core::Object {
-  synthetic constructor •() → self::DynamicReceiver2*
+  synthetic constructor •() → self::DynamicReceiver2
     : super core::Object::•()
     ;
   method dynamicallyCalled(dynamic 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 staticMethod() → dynamic {
   return "sdfg";
 }
-external static method externalStatic() → core::bool*;
-external static method createBar() → self::Bar*;
+external static method externalStatic() → core::bool;
+external static method createBar() → self::Bar;
 static method stringArgument(dynamic x) → dynamic {}
 static method intArgument(dynamic x) → dynamic {}
 static method makeDynamicCall(dynamic receiver) → void {
@@ -132,20 +62,20 @@
 }
 static method main() → dynamic {
   dynamic x = self::staticMethod();
-  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}(){() →* dynamic};
-  core::bool* z = self::externalStatic();
-  self::ExternalValue* w = self::createBar().{self::Bar::externalInstanceMethod}(){() →* self::ExternalValue*};
+  dynamic y = new self::Foo::•().{self::Foo::instanceMethod}(){() → dynamic};
+  core::bool z = self::externalStatic();
+  self::ExternalValue w = self::createBar().{self::Bar::externalInstanceMethod}(){() → self::ExternalValue};
   self::stringArgument("sdfg");
   self::intArgument(42);
-  self::Box* box = new self::Box::•();
+  self::Box box = new self::Box::•();
   box.{self::Box::field} = "sdfg";
   dynamic a = box.{self::Box::field}{dynamic};
-  self::FinalBox* finalBox = new self::FinalBox::•("dfg");
+  self::FinalBox finalBox = new self::FinalBox::•("dfg");
   dynamic b = finalBox.{self::FinalBox::finalField}{dynamic};
-  self::SubFinalBox* subBox = new self::SubFinalBox::•("dfg");
+  self::SubFinalBox subBox = new self::SubFinalBox::•("dfg");
   dynamic c = subBox.{self::FinalBox::finalField}{dynamic};
   self::makeDynamicCall(new self::DynamicReceiver1::•());
   self::makeDynamicCall(new self::DynamicReceiver2::•());
-  core::List<core::String*>* list = core::_GrowableList::_literal1<core::String*>("string");
-  core::String* d = list.{core::List::[]}(0){(core::int*) →* core::String*};
+  core::List<core::String> list = core::_GrowableList::_literal1<core::String>("string");
+  core::String d = list.{core::List::[]}(0){(core::int) → core::String};
 }
diff --git a/pkg/front_end/testcases/general/minimum_int.dart b/pkg/front_end/testcases/general/minimum_int.dart
index fdba274..4b5a61c 100644
--- a/pkg/front_end/testcases/general/minimum_int.dart
+++ b/pkg/front_end/testcases/general/minimum_int.dart
@@ -1,2 +1 @@
-// @dart=2.9
 main() => print(-9223372036854775808);
diff --git a/pkg/front_end/testcases/general/minimum_int.dart.textual_outline.expect b/pkg/front_end/testcases/general/minimum_int.dart.textual_outline.expect
index 30ce5d2..4b5a61c 100644
--- a/pkg/front_end/testcases/general/minimum_int.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/minimum_int.dart.textual_outline.expect
@@ -1,2 +1 @@
-// @dart = 2.9
 main() => print(-9223372036854775808);
diff --git a/pkg/front_end/testcases/general/minimum_int.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/minimum_int.dart.textual_outline_modelled.expect
index 30ce5d2..4b5a61c 100644
--- a/pkg/front_end/testcases/general/minimum_int.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/minimum_int.dart.textual_outline_modelled.expect
@@ -1,2 +1 @@
-// @dart = 2.9
 main() => print(-9223372036854775808);
diff --git a/pkg/front_end/testcases/general/minimum_int.dart.weak.expect b/pkg/front_end/testcases/general/minimum_int.dart.weak.expect
index 65f7c38..e9ffb8f 100644
--- a/pkg/front_end/testcases/general/minimum_int.dart.weak.expect
+++ b/pkg/front_end/testcases/general/minimum_int.dart.weak.expect
@@ -1,6 +1,6 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 static method main() → dynamic
-  return core::print(-9223372036854775808.{core::int::unary-}(){() →* core::int*});
+  return core::print(-9223372036854775808.{core::int::unary-}(){() → core::int});
diff --git a/pkg/front_end/testcases/general/minimum_int.dart.weak.modular.expect b/pkg/front_end/testcases/general/minimum_int.dart.weak.modular.expect
index 65f7c38..e9ffb8f 100644
--- a/pkg/front_end/testcases/general/minimum_int.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/minimum_int.dart.weak.modular.expect
@@ -1,6 +1,6 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 static method main() → dynamic
-  return core::print(-9223372036854775808.{core::int::unary-}(){() →* core::int*});
+  return core::print(-9223372036854775808.{core::int::unary-}(){() → core::int});
diff --git a/pkg/front_end/testcases/general/minimum_int.dart.weak.outline.expect b/pkg/front_end/testcases/general/minimum_int.dart.weak.outline.expect
index 6a28c0d..e2cba6b 100644
--- a/pkg/front_end/testcases/general/minimum_int.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/minimum_int.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/minimum_int.dart.weak.transformed.expect b/pkg/front_end/testcases/general/minimum_int.dart.weak.transformed.expect
index 349fd7e..3fc6ee1 100644
--- a/pkg/front_end/testcases/general/minimum_int.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/minimum_int.dart.weak.transformed.expect
@@ -1,11 +1,11 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 static method main() → dynamic
-  return core::print(-9223372036854775808.{core::int::unary-}(){() →* core::int*});
+  return core::print(-9223372036854775808.{core::int::unary-}(){() → core::int});
 
 
 Extra constant evaluation status:
-Evaluated: InstanceInvocation @ org-dartlang-testcase:///minimum_int.dart:2:17 -> IntConstant(-9223372036854775808)
+Evaluated: InstanceInvocation @ org-dartlang-testcase:///minimum_int.dart:1:17 -> IntConstant(-9223372036854775808)
 Extra constant evaluation: evaluated: 2, effectively constant: 1
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart b/pkg/front_end/testcases/general/missing_constructor.dart
index 16bb61f..190d24c 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart
+++ b/pkg/front_end/testcases/general/missing_constructor.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 Super {
   Super._();
 }
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart.textual_outline.expect b/pkg/front_end/testcases/general/missing_constructor.dart.textual_outline.expect
index a70ca4f5..021aaf9 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/missing_constructor.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Super {
   Super._();
 }
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/missing_constructor.dart.textual_outline_modelled.expect
index ebcb150..44085f9 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/missing_constructor.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Bad {
   Bad.bar() : this.baz();
   Bad.foo() : this();
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart.weak.expect b/pkg/front_end/testcases/general/missing_constructor.dart.weak.expect
index 12e92e5..73616ce 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart.weak.expect
+++ b/pkg/front_end/testcases/general/missing_constructor.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -30,81 +30,51 @@
 import "dart:core" as core;
 
 class Super extends core::Object {
-  constructor _() → self::Super*
+  constructor _() → self::Super
     : 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 Sub extends self::Super {
-  constructor •() → self::Sub*
+  constructor •() → self::Sub
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:10:11: Error: Superclass has no constructor named 'Super'.
   Sub() : super();
           ^^^^^"
     ;
-  constructor foo() → self::Sub*
+  constructor foo() → self::Sub
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:11:15: Error: Superclass has no constructor named 'Super.foo'.
   Sub.foo() : super.foo();
               ^^^^^"
     ;
 }
 class Bad extends core::Object {
-  constructor foo() → self::Bad*
+  constructor foo() → self::Bad
     : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:15:15: Error: Couldn't find constructor 'Bad'.
   Bad.foo() : this();
               ^^^^"
     ;
-  constructor bar() → self::Bad*
+  constructor bar() → self::Bad
     : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:16:15: Error: Couldn't find constructor 'Bad.baz'.
   Bad.bar() : this.baz();
               ^^^^"
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M /*isAnonymousMixin*/  {
-  synthetic constructor _() → self::_MixinApplication&Super&M*
+  synthetic constructor _() → self::_MixinApplication&Super&M
     : super self::Super::_()
     ;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
-  constructor •() → self::MixinApplication*
+  constructor •() → self::MixinApplication
     : final dynamic #t5 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:22:24: Error: Superclass has no constructor named 'Super'.
   MixinApplication() : super();
                        ^^^^^"
     ;
-  constructor foo() → self::MixinApplication*
+  constructor foo() → self::MixinApplication
     : final dynamic #t6 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:23:28: Error: Superclass has no constructor named 'Super.foo'.
   MixinApplication.foo() : super.foo();
                            ^^^^^"
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart.weak.modular.expect b/pkg/front_end/testcases/general/missing_constructor.dart.weak.modular.expect
index 12e92e5..73616ce 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/missing_constructor.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -30,81 +30,51 @@
 import "dart:core" as core;
 
 class Super extends core::Object {
-  constructor _() → self::Super*
+  constructor _() → self::Super
     : 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 Sub extends self::Super {
-  constructor •() → self::Sub*
+  constructor •() → self::Sub
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:10:11: Error: Superclass has no constructor named 'Super'.
   Sub() : super();
           ^^^^^"
     ;
-  constructor foo() → self::Sub*
+  constructor foo() → self::Sub
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:11:15: Error: Superclass has no constructor named 'Super.foo'.
   Sub.foo() : super.foo();
               ^^^^^"
     ;
 }
 class Bad extends core::Object {
-  constructor foo() → self::Bad*
+  constructor foo() → self::Bad
     : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:15:15: Error: Couldn't find constructor 'Bad'.
   Bad.foo() : this();
               ^^^^"
     ;
-  constructor bar() → self::Bad*
+  constructor bar() → self::Bad
     : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:16:15: Error: Couldn't find constructor 'Bad.baz'.
   Bad.bar() : this.baz();
               ^^^^"
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M /*isAnonymousMixin*/  {
-  synthetic constructor _() → self::_MixinApplication&Super&M*
+  synthetic constructor _() → self::_MixinApplication&Super&M
     : super self::Super::_()
     ;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
-  constructor •() → self::MixinApplication*
+  constructor •() → self::MixinApplication
     : final dynamic #t5 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:22:24: Error: Superclass has no constructor named 'Super'.
   MixinApplication() : super();
                        ^^^^^"
     ;
-  constructor foo() → self::MixinApplication*
+  constructor foo() → self::MixinApplication
     : final dynamic #t6 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:23:28: Error: Superclass has no constructor named 'Super.foo'.
   MixinApplication.foo() : super.foo();
                            ^^^^^"
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart.weak.outline.expect b/pkg/front_end/testcases/general/missing_constructor.dart.weak.outline.expect
index ec0437b..17112b2 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/missing_constructor.dart.weak.outline.expect
@@ -1,66 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Super extends core::Object {
-  constructor _() → self::Super*
+  constructor _() → self::Super
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Sub extends self::Super {
-  constructor •() → self::Sub*
+  constructor •() → self::Sub
     ;
-  constructor foo() → self::Sub*
+  constructor foo() → self::Sub
     ;
 }
 class Bad extends core::Object {
-  constructor foo() → self::Bad*
+  constructor foo() → self::Bad
     ;
-  constructor bar() → self::Bad*
+  constructor bar() → self::Bad
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M /*isAnonymousMixin*/  {
-  synthetic constructor _() → self::_MixinApplication&Super&M*
+  synthetic constructor _() → self::_MixinApplication&Super&M
     : super self::Super::_()
     ;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
-  constructor •() → self::MixinApplication*
+  constructor •() → self::MixinApplication
     ;
-  constructor foo() → self::MixinApplication*
+  constructor foo() → self::MixinApplication
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/missing_constructor.dart.weak.transformed.expect b/pkg/front_end/testcases/general/missing_constructor.dart.weak.transformed.expect
index 5aab9ad..9c91118 100644
--- a/pkg/front_end/testcases/general/missing_constructor.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/missing_constructor.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -30,81 +30,51 @@
 import "dart:core" as core;
 
 class Super extends core::Object {
-  constructor _() → self::Super*
+  constructor _() → self::Super
     : 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 Sub extends self::Super {
-  constructor •() → self::Sub*
+  constructor •() → self::Sub
     : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:10:11: Error: Superclass has no constructor named 'Super'.
   Sub() : super();
           ^^^^^"
     ;
-  constructor foo() → self::Sub*
+  constructor foo() → self::Sub
     : final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:11:15: Error: Superclass has no constructor named 'Super.foo'.
   Sub.foo() : super.foo();
               ^^^^^"
     ;
 }
 class Bad extends core::Object {
-  constructor foo() → self::Bad*
+  constructor foo() → self::Bad
     : final dynamic #t3 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:15:15: Error: Couldn't find constructor 'Bad'.
   Bad.foo() : this();
               ^^^^"
     ;
-  constructor bar() → self::Bad*
+  constructor bar() → self::Bad
     : final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:16:15: Error: Couldn't find constructor 'Bad.baz'.
   Bad.bar() : this.baz();
               ^^^^"
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _MixinApplication&Super&M extends self::Super implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor _() → self::_MixinApplication&Super&M*
+  synthetic constructor _() → self::_MixinApplication&Super&M
     : super self::Super::_()
     ;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
-  constructor •() → self::MixinApplication*
+  constructor •() → self::MixinApplication
     : final dynamic #t5 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:22:24: Error: Superclass has no constructor named 'Super'.
   MixinApplication() : super();
                        ^^^^^"
     ;
-  constructor foo() → self::MixinApplication*
+  constructor foo() → self::MixinApplication
     : final dynamic #t6 = invalid-expression "pkg/front_end/testcases/general/missing_constructor.dart:23:28: Error: Superclass has no constructor named 'Super.foo'.
   MixinApplication.foo() : super.foo();
                            ^^^^^"
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart b/pkg/front_end/testcases/general/missing_toplevel.dart
index bf3f72c..cde0887 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart
@@ -1,13 +1,13 @@
 // 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 EmptyClass {}
 
 var emptyClass = new EmptyClass();
 
 class ClassWithProperty {
-  EmptyClass property;
+  EmptyClass property = new EmptyClass();
 }
 
 var classWithProperty = new ClassWithProperty();
@@ -19,7 +19,7 @@
 var classWithIndexSet = new ClassWithIndexSet();
 
 class ClassWithIndexGet {
-  int operator [](int index) => 42;
+  int? operator [](int index) => 42;
 }
 
 var classWithIndexGet = new ClassWithIndexGet();
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.textual_outline.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.textual_outline.expect
index bb6e0a8..c12e1ea 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.textual_outline.expect
@@ -1,10 +1,9 @@
-// @dart = 2.9
 class EmptyClass {}
 
 var emptyClass = new EmptyClass();
 
 class ClassWithProperty {
-  EmptyClass property;
+  EmptyClass property = new EmptyClass();
 }
 
 var classWithProperty = new ClassWithProperty();
@@ -16,7 +15,7 @@
 var classWithIndexSet = new ClassWithIndexSet();
 
 class ClassWithIndexGet {
-  int operator [](int index) => 42;
+  int? operator [](int index) => 42;
 }
 
 var classWithIndexGet = new ClassWithIndexGet();
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.textual_outline_modelled.expect
index 3541a60..4a2f886 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.textual_outline_modelled.expect
@@ -1,6 +1,5 @@
-// @dart = 2.9
 class ClassWithIndexGet {
-  int operator [](int index) => 42;
+  int? operator [](int index) => 42;
 }
 
 class ClassWithIndexSet {
@@ -8,7 +7,7 @@
 }
 
 class ClassWithProperty {
-  EmptyClass property;
+  EmptyClass property = new EmptyClass();
 }
 
 class EmptyClass {}
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.expect
index e4cac82..740b003 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -36,94 +36,54 @@
 import "dart:core" as core;
 
 class EmptyClass extends core::Object {
-  synthetic constructor •() → self::EmptyClass*
+  synthetic constructor •() → self::EmptyClass
     : 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 ClassWithProperty extends core::Object {
-  field self::EmptyClass* property = null;
-  synthetic constructor •() → self::ClassWithProperty*
+  field self::EmptyClass property = new self::EmptyClass::•();
+  synthetic constructor •() → self::ClassWithProperty
     : 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 ClassWithIndexSet extends core::Object {
-  synthetic constructor •() → self::ClassWithIndexSet*
+  synthetic constructor •() → self::ClassWithIndexSet
     : super core::Object::•()
     ;
-  operator []=(core::int* index, core::int* value) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  operator []=(core::int index, core::int value) → void {}
 }
 class ClassWithIndexGet extends core::Object {
-  synthetic constructor •() → self::ClassWithIndexGet*
+  synthetic constructor •() → self::ClassWithIndexGet
     : super core::Object::•()
     ;
-  operator [](core::int* index) → core::int*
+  operator [](core::int index) → core::int?
     return 42;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 self::EmptyClass* emptyClass = new self::EmptyClass::•();
-static field self::ClassWithProperty* classWithProperty = new self::ClassWithProperty::•();
-static field self::ClassWithIndexSet* classWithIndexSet = new self::ClassWithIndexSet::•();
-static field self::ClassWithIndexGet* classWithIndexGet = new self::ClassWithIndexGet::•();
-static field dynamic missingBinary = let final self::ClassWithProperty* #t1 = self::classWithProperty in #t1.{self::ClassWithProperty::property} = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:27:48: Error: The operator '+' isn't defined for the class 'EmptyClass'.
+static field self::EmptyClass emptyClass = new self::EmptyClass::•();
+static field self::ClassWithProperty classWithProperty = new self::ClassWithProperty::•();
+static field self::ClassWithIndexSet classWithIndexSet = new self::ClassWithIndexSet::•();
+static field self::ClassWithIndexGet classWithIndexGet = new self::ClassWithIndexGet::•();
+static field dynamic missingBinary = let final self::ClassWithProperty #t1 = self::classWithProperty in #t1.{self::ClassWithProperty::property} = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:27:48: Error: The operator '+' isn't defined for the class 'EmptyClass'.
  - 'EmptyClass' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '+' operator.
 var missingBinary = classWithProperty.property += 2;
-                                               ^" in #t1.{self::ClassWithProperty::property}{self::EmptyClass*}{<unresolved>}.+(2) as{TypeError,ForDynamic} self::EmptyClass*;
-static field dynamic missingIndexGet = let final self::ClassWithIndexSet* #t2 = self::classWithIndexSet in let final core::int* #t3 = 0 in let final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
+                                               ^" in #t1.{self::ClassWithProperty::property}{self::EmptyClass}{<unresolved>}.+(2) as{TypeError,ForDynamic,ForNonNullableByDefault} self::EmptyClass;
+static field dynamic missingIndexGet = let final self::ClassWithIndexSet #t2 = self::classWithIndexSet in let final core::int #t3 = 0 in let final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
  - 'ClassWithIndexSet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]' operator.
 var missingIndexGet = classWithIndexSet[0] ??= 2;
-                                       ^" in #t2{<unresolved>}.[](#t3) in #t4 == null ?{dynamic} let final core::int* #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5){(core::int*, core::int*) →* void} in #t5 : #t4;
-static field core::int* missingIndexSet = let final self::ClassWithIndexGet* #t7 = self::classWithIndexGet in let final core::int* #t8 = 0 in let final core::int* #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8){(core::int*) →* core::int*} in #t9 == null ?{core::int*} let final core::int* #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
+                                       ^" in #t2{<unresolved>}.[](#t3) in #t4 == null ?{dynamic} let final core::int #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5){(core::int, core::int) → void} in #t5 : #t4;
+static field core::int missingIndexSet = let final self::ClassWithIndexGet #t7 = self::classWithIndexGet in let final core::int #t8 = 0 in let final core::int? #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8){(core::int) → core::int?} in #t9 == null ?{core::int} let final core::int #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
  - 'ClassWithIndexGet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]=' operator.
 var missingIndexSet = classWithIndexGet[0] ??= 2;
-                                       ^" in #t7{<unresolved>}.[]=(#t8, #t10) in #t10 : #t9;
+                                       ^" in #t7{<unresolved>}.[]=(#t8, #t10) in #t10 : #t9{core::int};
 static field dynamic missingPropertyGet = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:30:37: Error: The getter 'property' isn't defined for the class 'EmptyClass'.
  - 'EmptyClass' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
 var missingPropertyGet = emptyClass.property;
                                     ^^^^^^^^" in self::emptyClass{<unresolved>}.property;
-static field core::int* missingPropertySet = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:31:37: Error: The setter 'property' isn't defined for the class 'EmptyClass'.
+static field core::int missingPropertySet = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:31:37: Error: The setter 'property' isn't defined for the class 'EmptyClass'.
  - 'EmptyClass' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
 var missingPropertySet = emptyClass.property = 42;
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.modular.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.modular.expect
index e4cac82..740b003 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -36,94 +36,54 @@
 import "dart:core" as core;
 
 class EmptyClass extends core::Object {
-  synthetic constructor •() → self::EmptyClass*
+  synthetic constructor •() → self::EmptyClass
     : 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 ClassWithProperty extends core::Object {
-  field self::EmptyClass* property = null;
-  synthetic constructor •() → self::ClassWithProperty*
+  field self::EmptyClass property = new self::EmptyClass::•();
+  synthetic constructor •() → self::ClassWithProperty
     : 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 ClassWithIndexSet extends core::Object {
-  synthetic constructor •() → self::ClassWithIndexSet*
+  synthetic constructor •() → self::ClassWithIndexSet
     : super core::Object::•()
     ;
-  operator []=(core::int* index, core::int* value) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  operator []=(core::int index, core::int value) → void {}
 }
 class ClassWithIndexGet extends core::Object {
-  synthetic constructor •() → self::ClassWithIndexGet*
+  synthetic constructor •() → self::ClassWithIndexGet
     : super core::Object::•()
     ;
-  operator [](core::int* index) → core::int*
+  operator [](core::int index) → core::int?
     return 42;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 self::EmptyClass* emptyClass = new self::EmptyClass::•();
-static field self::ClassWithProperty* classWithProperty = new self::ClassWithProperty::•();
-static field self::ClassWithIndexSet* classWithIndexSet = new self::ClassWithIndexSet::•();
-static field self::ClassWithIndexGet* classWithIndexGet = new self::ClassWithIndexGet::•();
-static field dynamic missingBinary = let final self::ClassWithProperty* #t1 = self::classWithProperty in #t1.{self::ClassWithProperty::property} = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:27:48: Error: The operator '+' isn't defined for the class 'EmptyClass'.
+static field self::EmptyClass emptyClass = new self::EmptyClass::•();
+static field self::ClassWithProperty classWithProperty = new self::ClassWithProperty::•();
+static field self::ClassWithIndexSet classWithIndexSet = new self::ClassWithIndexSet::•();
+static field self::ClassWithIndexGet classWithIndexGet = new self::ClassWithIndexGet::•();
+static field dynamic missingBinary = let final self::ClassWithProperty #t1 = self::classWithProperty in #t1.{self::ClassWithProperty::property} = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:27:48: Error: The operator '+' isn't defined for the class 'EmptyClass'.
  - 'EmptyClass' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '+' operator.
 var missingBinary = classWithProperty.property += 2;
-                                               ^" in #t1.{self::ClassWithProperty::property}{self::EmptyClass*}{<unresolved>}.+(2) as{TypeError,ForDynamic} self::EmptyClass*;
-static field dynamic missingIndexGet = let final self::ClassWithIndexSet* #t2 = self::classWithIndexSet in let final core::int* #t3 = 0 in let final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
+                                               ^" in #t1.{self::ClassWithProperty::property}{self::EmptyClass}{<unresolved>}.+(2) as{TypeError,ForDynamic,ForNonNullableByDefault} self::EmptyClass;
+static field dynamic missingIndexGet = let final self::ClassWithIndexSet #t2 = self::classWithIndexSet in let final core::int #t3 = 0 in let final dynamic #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
  - 'ClassWithIndexSet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]' operator.
 var missingIndexGet = classWithIndexSet[0] ??= 2;
-                                       ^" in #t2{<unresolved>}.[](#t3) in #t4 == null ?{dynamic} let final core::int* #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5){(core::int*, core::int*) →* void} in #t5 : #t4;
-static field core::int* missingIndexSet = let final self::ClassWithIndexGet* #t7 = self::classWithIndexGet in let final core::int* #t8 = 0 in let final core::int* #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8){(core::int*) →* core::int*} in #t9 == null ?{core::int*} let final core::int* #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
+                                       ^" in #t2{<unresolved>}.[](#t3) in #t4 == null ?{dynamic} let final core::int #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5){(core::int, core::int) → void} in #t5 : #t4;
+static field core::int missingIndexSet = let final self::ClassWithIndexGet #t7 = self::classWithIndexGet in let final core::int #t8 = 0 in let final core::int? #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8){(core::int) → core::int?} in #t9 == null ?{core::int} let final core::int #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
  - 'ClassWithIndexGet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]=' operator.
 var missingIndexSet = classWithIndexGet[0] ??= 2;
-                                       ^" in #t7{<unresolved>}.[]=(#t8, #t10) in #t10 : #t9;
+                                       ^" in #t7{<unresolved>}.[]=(#t8, #t10) in #t10 : #t9{core::int};
 static field dynamic missingPropertyGet = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:30:37: Error: The getter 'property' isn't defined for the class 'EmptyClass'.
  - 'EmptyClass' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
 var missingPropertyGet = emptyClass.property;
                                     ^^^^^^^^" in self::emptyClass{<unresolved>}.property;
-static field core::int* missingPropertySet = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:31:37: Error: The setter 'property' isn't defined for the class 'EmptyClass'.
+static field core::int missingPropertySet = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:31:37: Error: The setter 'property' isn't defined for the class 'EmptyClass'.
  - 'EmptyClass' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
 var missingPropertySet = emptyClass.property = 42;
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.outline.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.outline.expect
index b92887e..da89361 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.outline.expect
@@ -1,76 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class EmptyClass extends core::Object {
-  synthetic constructor •() → self::EmptyClass*
+  synthetic constructor •() → self::EmptyClass
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 ClassWithProperty extends core::Object {
-  field self::EmptyClass* property;
-  synthetic constructor •() → self::ClassWithProperty*
+  field self::EmptyClass property;
+  synthetic constructor •() → self::ClassWithProperty
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 ClassWithIndexSet extends core::Object {
-  synthetic constructor •() → self::ClassWithIndexSet*
+  synthetic constructor •() → self::ClassWithIndexSet
     ;
-  operator []=(core::int* index, core::int* value) → void
+  operator []=(core::int index, core::int value) → void
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class ClassWithIndexGet extends core::Object {
-  synthetic constructor •() → self::ClassWithIndexGet*
+  synthetic constructor •() → self::ClassWithIndexGet
     ;
-  operator [](core::int* index) → core::int*
+  operator [](core::int index) → 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
 }
-static field self::EmptyClass* emptyClass;
-static field self::ClassWithProperty* classWithProperty;
-static field self::ClassWithIndexSet* classWithIndexSet;
-static field self::ClassWithIndexGet* classWithIndexGet;
+static field self::EmptyClass emptyClass;
+static field self::ClassWithProperty classWithProperty;
+static field self::ClassWithIndexSet classWithIndexSet;
+static field self::ClassWithIndexGet classWithIndexGet;
 static field dynamic missingBinary;
 static field dynamic missingIndexGet;
-static field core::int* missingIndexSet;
+static field core::int missingIndexSet;
 static field dynamic missingPropertyGet;
-static field core::int* missingPropertySet;
+static field core::int missingPropertySet;
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
index 92a8aa8..c5135f9 100644
--- a/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/missing_toplevel.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -36,94 +36,54 @@
 import "dart:core" as core;
 
 class EmptyClass extends core::Object {
-  synthetic constructor •() → self::EmptyClass*
+  synthetic constructor •() → self::EmptyClass
     : 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 ClassWithProperty extends core::Object {
-  field self::EmptyClass* property = null;
-  synthetic constructor •() → self::ClassWithProperty*
+  field self::EmptyClass property = new self::EmptyClass::•();
+  synthetic constructor •() → self::ClassWithProperty
     : 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 ClassWithIndexSet extends core::Object {
-  synthetic constructor •() → self::ClassWithIndexSet*
+  synthetic constructor •() → self::ClassWithIndexSet
     : super core::Object::•()
     ;
-  operator []=(core::int* index, core::int* value) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  operator []=(core::int index, core::int value) → void {}
 }
 class ClassWithIndexGet extends core::Object {
-  synthetic constructor •() → self::ClassWithIndexGet*
+  synthetic constructor •() → self::ClassWithIndexGet
     : super core::Object::•()
     ;
-  operator [](core::int* index) → core::int*
+  operator [](core::int index) → core::int?
     return 42;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 self::EmptyClass* emptyClass = new self::EmptyClass::•();
-static field self::ClassWithProperty* classWithProperty = new self::ClassWithProperty::•();
-static field self::ClassWithIndexSet* classWithIndexSet = new self::ClassWithIndexSet::•();
-static field self::ClassWithIndexGet* classWithIndexGet = new self::ClassWithIndexGet::•();
-static field dynamic missingBinary = let final self::ClassWithProperty* #t1 = self::classWithProperty in #t1.{self::ClassWithProperty::property} = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:27:48: Error: The operator '+' isn't defined for the class 'EmptyClass'.
+static field self::EmptyClass emptyClass = new self::EmptyClass::•();
+static field self::ClassWithProperty classWithProperty = new self::ClassWithProperty::•();
+static field self::ClassWithIndexSet classWithIndexSet = new self::ClassWithIndexSet::•();
+static field self::ClassWithIndexGet classWithIndexGet = new self::ClassWithIndexGet::•();
+static field dynamic missingBinary = let final self::ClassWithProperty #t1 = self::classWithProperty in #t1.{self::ClassWithProperty::property} = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:27:48: Error: The operator '+' isn't defined for the class 'EmptyClass'.
  - 'EmptyClass' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '+' operator.
 var missingBinary = classWithProperty.property += 2;
-                                               ^" in #t1.{self::ClassWithProperty::property}{self::EmptyClass*}{<unresolved>}.+(2);
-static field dynamic missingIndexGet = let final self::ClassWithIndexSet* #t2 = self::classWithIndexSet in let final core::int* #t3 = 0 in let final invalid-type #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
+                                               ^" in #t1.{self::ClassWithProperty::property}{self::EmptyClass}{<unresolved>}.+(2);
+static field dynamic missingIndexGet = let final self::ClassWithIndexSet #t2 = self::classWithIndexSet in let final core::int #t3 = 0 in let final invalid-type #t4 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:28:40: Error: The operator '[]' isn't defined for the class 'ClassWithIndexSet'.
  - 'ClassWithIndexSet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]' operator.
 var missingIndexGet = classWithIndexSet[0] ??= 2;
-                                       ^" in #t2{<unresolved>}.[](#t3) in #t4 == null ?{dynamic} let final core::int* #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5){(core::int*, core::int*) →* void} in #t5 : #t4;
-static field core::int* missingIndexSet = let final self::ClassWithIndexGet* #t7 = self::classWithIndexGet in let final core::int* #t8 = 0 in let final core::int* #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8){(core::int*) →* core::int*} in #t9 == null ?{core::int*} let final core::int* #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
+                                       ^" in #t2{<unresolved>}.[](#t3) in #t4 == null ?{dynamic} let final core::int #t5 = 2 in let final void #t6 = #t2.{self::ClassWithIndexSet::[]=}(#t3, #t5){(core::int, core::int) → void} in #t5 : #t4;
+static field core::int missingIndexSet = let final self::ClassWithIndexGet #t7 = self::classWithIndexGet in let final core::int #t8 = 0 in let final core::int? #t9 = #t7.{self::ClassWithIndexGet::[]}(#t8){(core::int) → core::int?} in #t9 == null ?{core::int} let final core::int #t10 = 2 in let final void #t11 = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:29:40: Error: The operator '[]=' isn't defined for the class 'ClassWithIndexGet'.
  - 'ClassWithIndexGet' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the operator to an existing operator, or defining a '[]=' operator.
 var missingIndexSet = classWithIndexGet[0] ??= 2;
-                                       ^" in #t7{<unresolved>}.[]=(#t8, #t10) in #t10 : #t9;
+                                       ^" in #t7{<unresolved>}.[]=(#t8, #t10) in #t10 : #t9{core::int};
 static field dynamic missingPropertyGet = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:30:37: Error: The getter 'property' isn't defined for the class 'EmptyClass'.
  - 'EmptyClass' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'property'.
 var missingPropertyGet = emptyClass.property;
                                     ^^^^^^^^" in self::emptyClass{<unresolved>}.property;
-static field core::int* missingPropertySet = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:31:37: Error: The setter 'property' isn't defined for the class 'EmptyClass'.
+static field core::int missingPropertySet = invalid-expression "pkg/front_end/testcases/general/missing_toplevel.dart:31:37: Error: The setter 'property' isn't defined for the class 'EmptyClass'.
  - 'EmptyClass' is from 'pkg/front_end/testcases/general/missing_toplevel.dart'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'property'.
 var missingPropertySet = emptyClass.property = 42;
@@ -137,4 +97,4 @@
 Evaluated: VariableGet @ org-dartlang-testcase:///missing_toplevel.dart:28:48 -> IntConstant(2)
 Evaluated: VariableGet @ org-dartlang-testcase:///missing_toplevel.dart:29:41 -> IntConstant(0)
 Evaluated: VariableGet @ org-dartlang-testcase:///missing_toplevel.dart:29:48 -> IntConstant(2)
-Extra constant evaluation: evaluated: 37, effectively constant: 5
+Extra constant evaluation: evaluated: 38, effectively constant: 5
diff --git a/pkg/front_end/testcases/general/mixin.dart b/pkg/front_end/testcases/general/mixin.dart
index 4d44070..833d32a 100644
--- a/pkg/front_end/testcases/general/mixin.dart
+++ b/pkg/front_end/testcases/general/mixin.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class B extends Object with M1, M2 {
   B(value);
 }
diff --git a/pkg/front_end/testcases/general/mixin.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin.dart.textual_outline.expect
index 6403bda..74bf0c0 100644
--- a/pkg/front_end/testcases/general/mixin.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class B extends Object with M1, M2 {
   B(value);
 }
diff --git a/pkg/front_end/testcases/general/mixin.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin.dart.textual_outline_modelled.expect
index 2202aec..4fd20a5 100644
--- a/pkg/front_end/testcases/general/mixin.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class G1<T> {
   m() => print(T);
 }
diff --git a/pkg/front_end/testcases/general/mixin.dart.weak.expect b/pkg/front_end/testcases/general/mixin.dart.weak.expect
index 9ec9ad2d..1c3e0d3 100644
--- a/pkg/front_end/testcases/general/mixin.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.weak.expect
@@ -1,142 +1,82 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class _B&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&M1*
+  const synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M1::m}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&M1&M2*
+  const synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M2::m}();
 }
 class B extends self::_B&Object&M1&M2 {
-  constructor •(dynamic value) → self::B*
+  constructor •(dynamic value) → self::B
     : super self::_B&Object&M1&M2::•()
     ;
 }
 abstract class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M2");
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1*
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M1::m}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1&M2*
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M2::m}();
 }
 class C extends self::_C&Object&M1&M2 {
-  constructor •(dynamic value) → self::C*
+  constructor •(dynamic value) → self::C
     : super self::_C&Object&M1&M2::•()
     ;
 }
-abstract class G1<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::G1<self::G1::T*>*
+abstract class G1<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::G1<self::G1::T%>
     : super core::Object::•()
     ;
   method m() → dynamic
-    return core::print(self::G1::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 core::print(self::G1::T%);
 }
-abstract class _D&Object&G1<S extends core::Object* = dynamic> = core::Object with self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
+abstract class _D&Object&G1<S extends core::Object? = dynamic> = core::Object with self::G1<self::_D&Object&G1::S%> /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S%>
     : super core::Object::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::G1::m}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class D<S extends core::Object* = dynamic> extends self::_D&Object&G1<self::D::S*> {
-  synthetic constructor •() → self::D<self::D::S*>*
+class D<S extends core::Object? = dynamic> extends self::_D&Object&G1<self::D::S%> {
+  synthetic constructor •() → self::D<self::D::S%>
     : super self::_D&Object&G1::•()
     ;
 }
 static method main() → dynamic {
-  new self::B::•(null).{self::_B&Object&M1&M2::m}(){() →* dynamic};
-  new self::C::•(null).{self::_C&Object&M1&M2::m}(){() →* dynamic};
-  new self::D::•<dynamic>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::int*>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::List<core::int*>*>().{self::_D&Object&G1::m}(){() →* dynamic};
+  new self::B::•(null).{self::_B&Object&M1&M2::m}(){() → dynamic};
+  new self::C::•(null).{self::_C&Object&M1&M2::m}(){() → dynamic};
+  new self::D::•<dynamic>().{self::_D&Object&G1::m}(){() → dynamic};
+  new self::D::•<core::int>().{self::_D&Object&G1::m}(){() → dynamic};
+  new self::D::•<core::List<core::int>>().{self::_D&Object&G1::m}(){() → dynamic};
 }
diff --git a/pkg/front_end/testcases/general/mixin.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin.dart.weak.modular.expect
index 9ec9ad2d..1c3e0d3 100644
--- a/pkg/front_end/testcases/general/mixin.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.weak.modular.expect
@@ -1,142 +1,82 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class _B&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&M1*
+  const synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M1::m}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&M1&M2*
+  const synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M2::m}();
 }
 class B extends self::_B&Object&M1&M2 {
-  constructor •(dynamic value) → self::B*
+  constructor •(dynamic value) → self::B
     : super self::_B&Object&M1&M2::•()
     ;
 }
 abstract class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M2");
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1*
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M1::m}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1&M2*
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M2::m}();
 }
 class C extends self::_C&Object&M1&M2 {
-  constructor •(dynamic value) → self::C*
+  constructor •(dynamic value) → self::C
     : super self::_C&Object&M1&M2::•()
     ;
 }
-abstract class G1<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::G1<self::G1::T*>*
+abstract class G1<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::G1<self::G1::T%>
     : super core::Object::•()
     ;
   method m() → dynamic
-    return core::print(self::G1::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 core::print(self::G1::T%);
 }
-abstract class _D&Object&G1<S extends core::Object* = dynamic> = core::Object with self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
+abstract class _D&Object&G1<S extends core::Object? = dynamic> = core::Object with self::G1<self::_D&Object&G1::S%> /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S%>
     : super core::Object::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::G1::m}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class D<S extends core::Object* = dynamic> extends self::_D&Object&G1<self::D::S*> {
-  synthetic constructor •() → self::D<self::D::S*>*
+class D<S extends core::Object? = dynamic> extends self::_D&Object&G1<self::D::S%> {
+  synthetic constructor •() → self::D<self::D::S%>
     : super self::_D&Object&G1::•()
     ;
 }
 static method main() → dynamic {
-  new self::B::•(null).{self::_B&Object&M1&M2::m}(){() →* dynamic};
-  new self::C::•(null).{self::_C&Object&M1&M2::m}(){() →* dynamic};
-  new self::D::•<dynamic>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::int*>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::List<core::int*>*>().{self::_D&Object&G1::m}(){() →* dynamic};
+  new self::B::•(null).{self::_B&Object&M1&M2::m}(){() → dynamic};
+  new self::C::•(null).{self::_C&Object&M1&M2::m}(){() → dynamic};
+  new self::D::•<dynamic>().{self::_D&Object&G1::m}(){() → dynamic};
+  new self::D::•<core::int>().{self::_D&Object&G1::m}(){() → dynamic};
+  new self::D::•<core::List<core::int>>().{self::_D&Object&G1::m}(){() → dynamic};
 }
diff --git a/pkg/front_end/testcases/general/mixin.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin.dart.weak.outline.expect
index e09c2b0..4259774 100644
--- a/pkg/front_end/testcases/general/mixin.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.weak.outline.expect
@@ -1,130 +1,70 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class _B&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&M1*
+  const synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M1::m}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&M1&M2*
+  const synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M2::m}();
 }
 class B extends self::_B&Object&M1&M2 {
-  constructor •(dynamic value) → self::B*
+  constructor •(dynamic value) → self::B
     ;
 }
 abstract class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     ;
   method m() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     ;
   method m() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1*
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M1::m}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1&M2*
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::M2::m}();
 }
 class C extends self::_C&Object&M1&M2 {
-  constructor •(dynamic value) → self::C*
+  constructor •(dynamic value) → self::C
     ;
 }
-abstract class G1<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::G1<self::G1::T*>*
+abstract class G1<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::G1<self::G1::T%>
     ;
   method m() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-abstract class _D&Object&G1<S extends core::Object* = dynamic> = core::Object with self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
+abstract class _D&Object&G1<S extends core::Object? = dynamic> = core::Object with self::G1<self::_D&Object&G1::S%> /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S%>
     : super core::Object::•()
     ;
   mixin-super-stub method m() → dynamic
     return super.{self::G1::m}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class D<S extends core::Object* = dynamic> extends self::_D&Object&G1<self::D::S*> {
-  synthetic constructor •() → self::D<self::D::S*>*
+class D<S extends core::Object? = dynamic> extends self::_D&Object&G1<self::D::S%> {
+  synthetic constructor •() → self::D<self::D::S%>
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/mixin.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin.dart.weak.transformed.expect
index fe35f14..8541d2b 100644
--- a/pkg/front_end/testcases/general/mixin.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin.dart.weak.transformed.expect
@@ -1,142 +1,82 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class _B&Object&M1 extends core::Object implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&M1*
+  const synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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&Object&M1&M2 extends self::_B&Object&M1 implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_B&Object&M1&M2*
+  const synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
   method m() → dynamic
     return core::print("M2");
 }
 class B extends self::_B&Object&M1&M2 {
-  constructor •(dynamic value) → self::B*
+  constructor •(dynamic value) → self::B
     : super self::_B&Object&M1&M2::•()
     ;
 }
 abstract class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M2");
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _C&Object&M1 extends core::Object implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1*
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _C&Object&M1&M2 extends self::_C&Object&M1 implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1&M2*
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
   method m() → dynamic
     return core::print("M2");
 }
 class C extends self::_C&Object&M1&M2 {
-  constructor •(dynamic value) → self::C*
+  constructor •(dynamic value) → self::C
     : super self::_C&Object&M1&M2::•()
     ;
 }
-abstract class G1<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → self::G1<self::G1::T*>*
+abstract class G1<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::G1<self::G1::T%>
     : super core::Object::•()
     ;
   method m() → dynamic
-    return core::print(self::G1::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 core::print(self::G1::T%);
 }
-abstract class _D&Object&G1<S extends core::Object* = dynamic> extends core::Object implements self::G1<self::_D&Object&G1::S*> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S*>*
+abstract class _D&Object&G1<S extends core::Object? = dynamic> extends core::Object implements self::G1<self::_D&Object&G1::S%> /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S%>
     : super core::Object::•()
     ;
   method m() → dynamic
-    return core::print(self::_D&Object&G1::S*);
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+    return core::print(self::_D&Object&G1::S%);
 }
-class D<S extends core::Object* = dynamic> extends self::_D&Object&G1<self::D::S*> {
-  synthetic constructor •() → self::D<self::D::S*>*
+class D<S extends core::Object? = dynamic> extends self::_D&Object&G1<self::D::S%> {
+  synthetic constructor •() → self::D<self::D::S%>
     : super self::_D&Object&G1::•()
     ;
 }
 static method main() → dynamic {
-  new self::B::•(null).{self::_B&Object&M1&M2::m}(){() →* dynamic};
-  new self::C::•(null).{self::_C&Object&M1&M2::m}(){() →* dynamic};
-  new self::D::•<dynamic>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::int*>().{self::_D&Object&G1::m}(){() →* dynamic};
-  new self::D::•<core::List<core::int*>*>().{self::_D&Object&G1::m}(){() →* dynamic};
+  new self::B::•(null).{self::_B&Object&M1&M2::m}(){() → dynamic};
+  new self::C::•(null).{self::_C&Object&M1&M2::m}(){() → dynamic};
+  new self::D::•<dynamic>().{self::_D&Object&G1::m}(){() → dynamic};
+  new self::D::•<core::int>().{self::_D&Object&G1::m}(){() → dynamic};
+  new self::D::•<core::List<core::int>>().{self::_D&Object&G1::m}(){() → dynamic};
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart
index 838b2ea..ae79ed2 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.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 Mixin {}
 
 class Super {
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.textual_outline.expect
index 1304dc7..ee10660 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Mixin {}
 
 class Super {
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.textual_outline_modelled.expect
index 9e5b6b3..44e6390 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Class = Super with Mixin;
 
 class Mixin {}
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.expect b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.expect
index c6579d8..0457c7e 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,38 +10,18 @@
 import "dart:core" as core;
 
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : 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 Super extends core::Object {
-  field core::int* field = 42;
-  constructor •(core::int* field) → self::Super*
+  field core::int field = 42;
+  constructor •(core::int field) → self::Super
     : self::Super::field = field, 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 Class = self::Super with self::Mixin {
-  synthetic constructor •(core::int* field) → self::Class*
+  synthetic constructor •(core::int field) → self::Class
     : super self::Super::•(field)
     ;
 }
@@ -51,5 +31,5 @@
 static method error() → dynamic {
   new self::Class::•(invalid-expression "pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart:20:13: Error: The argument type 'String' can't be assigned to the parameter type 'int'.
   new Class('');
-            ^" in "" as{TypeError} core::int*);
+            ^" in "" as{TypeError,ForNonNullableByDefault} core::int);
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.modular.expect
index c6579d8..0457c7e 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,38 +10,18 @@
 import "dart:core" as core;
 
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : 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 Super extends core::Object {
-  field core::int* field = 42;
-  constructor •(core::int* field) → self::Super*
+  field core::int field = 42;
+  constructor •(core::int field) → self::Super
     : self::Super::field = field, 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 Class = self::Super with self::Mixin {
-  synthetic constructor •(core::int* field) → self::Class*
+  synthetic constructor •(core::int field) → self::Class
     : super self::Super::•(field)
     ;
 }
@@ -51,5 +31,5 @@
 static method error() → dynamic {
   new self::Class::•(invalid-expression "pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart:20:13: Error: The argument type 'String' can't be assigned to the parameter type 'int'.
   new Class('');
-            ^" in "" as{TypeError} core::int*);
+            ^" in "" as{TypeError,ForNonNullableByDefault} core::int);
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.outline.expect
index 1a998b0..190974c 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.outline.expect
@@ -1,38 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 Super extends core::Object {
-  field core::int* field;
-  constructor •(core::int* field) → self::Super*
+  field core::int field;
+  constructor •(core::int field) → self::Super
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 = self::Super with self::Mixin {
-  synthetic constructor •(core::int* field) → self::Class*
+  synthetic constructor •(core::int field) → self::Class
     : super self::Super::•(field)
     ;
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.transformed.expect
index f060c5f..a5d18f6 100644
--- a/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -10,38 +10,18 @@
 import "dart:core" as core;
 
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : 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 Super extends core::Object {
-  field core::int* field = 42;
-  constructor •(core::int* field) → self::Super*
+  field core::int field = 42;
+  constructor •(core::int field) → self::Super
     : self::Super::field = field, 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 Class extends self::Super implements self::Mixin /*isEliminatedMixin*/  {
-  synthetic constructor •(core::int* field) → self::Class*
+  synthetic constructor •(core::int field) → self::Class
     : super self::Super::•(field)
     ;
 }
@@ -51,5 +31,5 @@
 static method error() → dynamic {
   new self::Class::•(invalid-expression "pkg/front_end/testcases/general/mixin_application_inferred_parameter_type.dart:20:13: Error: The argument type 'String' can't be assigned to the parameter type 'int'.
   new Class('');
-            ^" in "" as{TypeError} core::int*);
+            ^" in "" as{TypeError,ForNonNullableByDefault} core::int);
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_lub.dart b/pkg/front_end/testcases/general/mixin_application_lub.dart
index 52ff709..e3c7ef8 100644
--- a/pkg/front_end/testcases/general/mixin_application_lub.dart
+++ b/pkg/front_end/testcases/general/mixin_application_lub.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 Diagnosticable {}
 
 // Originally the existence of this (unused) class (which has an anonymous mixin
diff --git a/pkg/front_end/testcases/general/mixin_application_lub_2.dart b/pkg/front_end/testcases/general/mixin_application_lub_2.dart
new file mode 100644
index 0000000..a8fb6a5
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_application_lub_2.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for 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 Diagnosticable {}
+
+// Originally the existence of this (unused) class (which has an anonymous mixin
+// that matches that of `State<T>`) caused an error in the VM's mixin
+// deduplication code. This was due to the inferred type for `var x = a ?? b`
+// was the anonymous mixin application that got removed during deduplication.
+//
+// See https://github.com/flutter/flutter/issues/55345
+class SomeClass with Diagnosticable {}
+
+class State<T> with Diagnosticable {}
+
+class StateA extends State {}
+
+class StateB extends State<int> {}
+
+StateA? a = StateA();
+StateB b = StateB();
+
+foo<T>(T x) {
+  print(T);
+}
+
+main() {
+  var x = a ?? b;
+  foo(x);
+}
diff --git a/pkg/front_end/testcases/general/mixin_application_lub_2.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.textual_outline.expect
new file mode 100644
index 0000000..098847f
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.textual_outline.expect
@@ -0,0 +1,14 @@
+class Diagnosticable {}
+
+class SomeClass with Diagnosticable {}
+
+class State<T> with Diagnosticable {}
+
+class StateA extends State {}
+
+class StateB extends State<int> {}
+
+StateA? a = StateA();
+StateB b = StateB();
+foo<T>(T x) {}
+main() {}
diff --git a/pkg/front_end/testcases/general/mixin_application_lub_2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..af624a8
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.textual_outline_modelled.expect
@@ -0,0 +1,15 @@
+StateA? a = StateA();
+StateB b = StateB();
+
+class Diagnosticable {}
+
+class SomeClass with Diagnosticable {}
+
+class State<T> with Diagnosticable {}
+
+class StateA extends State {}
+
+class StateB extends State<int> {}
+
+foo<T>(T x) {}
+main() {}
diff --git a/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.expect b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.expect
new file mode 100644
index 0000000..2ded7f4
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Diagnosticable extends core::Object {
+  synthetic constructor •() → self::Diagnosticable
+    : super core::Object::•()
+    ;
+}
+abstract class _SomeClass&Object&Diagnosticable = core::Object with self::Diagnosticable /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_SomeClass&Object&Diagnosticable
+    : super core::Object::•()
+    ;
+}
+class SomeClass extends self::_SomeClass&Object&Diagnosticable {
+  synthetic constructor •() → self::SomeClass
+    : super self::_SomeClass&Object&Diagnosticable::•()
+    ;
+}
+abstract class _State&Object&Diagnosticable = core::Object with self::Diagnosticable /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_State&Object&Diagnosticable
+    : super core::Object::•()
+    ;
+}
+class State<T extends core::Object? = dynamic> extends self::_State&Object&Diagnosticable {
+  synthetic constructor •() → self::State<self::State::T%>
+    : super self::_State&Object&Diagnosticable::•()
+    ;
+}
+class StateA extends self::State<dynamic> {
+  synthetic constructor •() → self::StateA
+    : super self::State::•()
+    ;
+}
+class StateB extends self::State<core::int> {
+  synthetic constructor •() → self::StateB
+    : super self::State::•()
+    ;
+}
+static field self::StateA? a = new self::StateA::•();
+static field self::StateB b = new self::StateB::•();
+static method foo<T extends core::Object? = dynamic>(self::foo::T% x) → dynamic {
+  core::print(self::foo::T%);
+}
+static method main() → dynamic {
+  self::Diagnosticable x = let final self::StateA? #t1 = self::a in #t1 == null ?{self::Diagnosticable} self::b : #t1{self::StateA};
+  self::foo<self::Diagnosticable>(x);
+}
diff --git a/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.modular.expect
new file mode 100644
index 0000000..2ded7f4
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.modular.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Diagnosticable extends core::Object {
+  synthetic constructor •() → self::Diagnosticable
+    : super core::Object::•()
+    ;
+}
+abstract class _SomeClass&Object&Diagnosticable = core::Object with self::Diagnosticable /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_SomeClass&Object&Diagnosticable
+    : super core::Object::•()
+    ;
+}
+class SomeClass extends self::_SomeClass&Object&Diagnosticable {
+  synthetic constructor •() → self::SomeClass
+    : super self::_SomeClass&Object&Diagnosticable::•()
+    ;
+}
+abstract class _State&Object&Diagnosticable = core::Object with self::Diagnosticable /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_State&Object&Diagnosticable
+    : super core::Object::•()
+    ;
+}
+class State<T extends core::Object? = dynamic> extends self::_State&Object&Diagnosticable {
+  synthetic constructor •() → self::State<self::State::T%>
+    : super self::_State&Object&Diagnosticable::•()
+    ;
+}
+class StateA extends self::State<dynamic> {
+  synthetic constructor •() → self::StateA
+    : super self::State::•()
+    ;
+}
+class StateB extends self::State<core::int> {
+  synthetic constructor •() → self::StateB
+    : super self::State::•()
+    ;
+}
+static field self::StateA? a = new self::StateA::•();
+static field self::StateB b = new self::StateB::•();
+static method foo<T extends core::Object? = dynamic>(self::foo::T% x) → dynamic {
+  core::print(self::foo::T%);
+}
+static method main() → dynamic {
+  self::Diagnosticable x = let final self::StateA? #t1 = self::a in #t1 == null ?{self::Diagnosticable} self::b : #t1{self::StateA};
+  self::foo<self::Diagnosticable>(x);
+}
diff --git a/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.outline.expect
new file mode 100644
index 0000000..86ec65e
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.outline.expect
@@ -0,0 +1,40 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Diagnosticable extends core::Object {
+  synthetic constructor •() → self::Diagnosticable
+    ;
+}
+abstract class _SomeClass&Object&Diagnosticable = core::Object with self::Diagnosticable /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_SomeClass&Object&Diagnosticable
+    : super core::Object::•()
+    ;
+}
+class SomeClass extends self::_SomeClass&Object&Diagnosticable {
+  synthetic constructor •() → self::SomeClass
+    ;
+}
+abstract class _State&Object&Diagnosticable = core::Object with self::Diagnosticable /*isAnonymousMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_State&Object&Diagnosticable
+    : super core::Object::•()
+    ;
+}
+class State<T extends core::Object? = dynamic> extends self::_State&Object&Diagnosticable {
+  synthetic constructor •() → self::State<self::State::T%>
+    ;
+}
+class StateA extends self::State<dynamic> {
+  synthetic constructor •() → self::StateA
+    ;
+}
+class StateB extends self::State<core::int> {
+  synthetic constructor •() → self::StateB
+    ;
+}
+static field self::StateA? a;
+static field self::StateB b;
+static method foo<T extends core::Object? = dynamic>(self::foo::T% x) → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.transformed.expect
new file mode 100644
index 0000000..30ac36f
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_application_lub_2.dart.weak.transformed.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Diagnosticable extends core::Object {
+  synthetic constructor •() → self::Diagnosticable
+    : super core::Object::•()
+    ;
+}
+abstract class _SomeClass&Object&Diagnosticable extends core::Object implements self::Diagnosticable /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_SomeClass&Object&Diagnosticable
+    : super core::Object::•()
+    ;
+}
+class SomeClass extends self::_SomeClass&Object&Diagnosticable {
+  synthetic constructor •() → self::SomeClass
+    : super self::_SomeClass&Object&Diagnosticable::•()
+    ;
+}
+abstract class _State&Object&Diagnosticable extends core::Object implements self::Diagnosticable /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_State&Object&Diagnosticable
+    : super core::Object::•()
+    ;
+}
+class State<T extends core::Object? = dynamic> extends self::_State&Object&Diagnosticable {
+  synthetic constructor •() → self::State<self::State::T%>
+    : super self::_State&Object&Diagnosticable::•()
+    ;
+}
+class StateA extends self::State<dynamic> {
+  synthetic constructor •() → self::StateA
+    : super self::State::•()
+    ;
+}
+class StateB extends self::State<core::int> {
+  synthetic constructor •() → self::StateB
+    : super self::State::•()
+    ;
+}
+static field self::StateA? a = new self::StateA::•();
+static field self::StateB b = new self::StateB::•();
+static method foo<T extends core::Object? = dynamic>(self::foo::T% x) → dynamic {
+  core::print(self::foo::T%);
+}
+static method main() → dynamic {
+  self::Diagnosticable x = let final self::StateA? #t1 = self::a in #t1 == null ?{self::Diagnosticable} self::b : #t1{self::StateA};
+  self::foo<self::Diagnosticable>(x);
+}
diff --git a/pkg/front_end/testcases/general/mixin_application_override.dart b/pkg/front_end/testcases/general/mixin_application_override.dart
index adfdcab..30b4f19 100644
--- a/pkg/front_end/testcases/general/mixin_application_override.dart
+++ b/pkg/front_end/testcases/general/mixin_application_override.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 error messages for invalid override in a mixin application.
 
 class S {
diff --git a/pkg/front_end/testcases/general/mixin_application_override.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_application_override.dart.textual_outline.expect
index 0e11e73..ee4aef8 100644
--- a/pkg/front_end/testcases/general/mixin_application_override.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_application_override.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class S {
   foo([x]) {}
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_override.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_application_override.dart.textual_outline_modelled.expect
index 7875500..6187ae6 100644
--- a/pkg/front_end/testcases/general/mixin_application_override.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_application_override.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A0 = S with M;
 class A0X = S with M, MX;
 class A1 = S with M1, M;
diff --git a/pkg/front_end/testcases/general/mixin_application_override.dart.weak.expect b/pkg/front_end/testcases/general/mixin_application_override.dart.weak.expect
index 56cdffa..7d32765 100644
--- a/pkg/front_end/testcases/general/mixin_application_override.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_application_override.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -126,283 +126,233 @@
 import "dart:core" as core;
 
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     : super core::Object::•()
     ;
   method foo([dynamic x = #C1]) → 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 M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
   method foo() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     : 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 M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : 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 MX extends core::Object {
-  synthetic constructor •() → self::MX*
+  synthetic constructor •() → self::MX
     : 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 A0 = self::S with self::M {
-  synthetic constructor •() → self::A0*
+  synthetic constructor •() → self::A0
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _A1&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A1&S&M1*
+  synthetic constructor •() → self::_A1&S&M1
     : super self::S::•()
     ;
 }
 class A1 = self::_A1&S&M1 with self::M {
-  synthetic constructor •() → self::A1*
+  synthetic constructor •() → self::A1
     : super self::_A1&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _A2&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2&S&M1*
+  synthetic constructor •() → self::_A2&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A2&S&M1&M2 = self::_A2&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2&S&M1&M2*
+  synthetic constructor •() → self::_A2&S&M1&M2
     : super self::_A2&S&M1::•()
     ;
 }
 class A2 = self::_A2&S&M1&M2 with self::M {
-  synthetic constructor •() → self::A2*
+  synthetic constructor •() → self::A2
     : super self::_A2&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _A0X&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A0X&S&M*
+  synthetic constructor •() → self::_A0X&S&M
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class A0X = self::_A0X&S&M with self::MX {
-  synthetic constructor •() → self::A0X*
+  synthetic constructor •() → self::A0X
     : super self::_A0X&S&M::•()
     ;
 }
 abstract class _A1X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A1X&S&M1*
+  synthetic constructor •() → self::_A1X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A1X&S&M1&M = self::_A1X&S&M1 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A1X&S&M1&M*
+  synthetic constructor •() → self::_A1X&S&M1&M
     : super self::_A1X&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class A1X = self::_A1X&S&M1&M with self::MX {
-  synthetic constructor •() → self::A1X*
+  synthetic constructor •() → self::A1X
     : super self::_A1X&S&M1&M::•()
     ;
 }
 abstract class _A2X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2X&S&M1*
+  synthetic constructor •() → self::_A2X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A2X&S&M1&M2 = self::_A2X&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2X&S&M1&M2*
+  synthetic constructor •() → self::_A2X&S&M1&M2
     : super self::_A2X&S&M1::•()
     ;
 }
 abstract class _A2X&S&M1&M2&M = self::_A2X&S&M1&M2 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2X&S&M1&M2&M*
+  synthetic constructor •() → self::_A2X&S&M1&M2&M
     : super self::_A2X&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class A2X = self::_A2X&S&M1&M2&M with self::MX {
-  synthetic constructor •() → self::A2X*
+  synthetic constructor •() → self::A2X
     : super self::_A2X&S&M1&M2&M::•()
     ;
 }
 abstract class _B0&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B0&S&M*
+  synthetic constructor •() → self::_B0&S&M
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class B0 extends self::_B0&S&M {
-  synthetic constructor •() → self::B0*
+  synthetic constructor •() → self::B0
     : super self::_B0&S&M::•()
     ;
 }
 abstract class _B1&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1&S&M1*
+  synthetic constructor •() → self::_B1&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B1&S&M1&M = self::_B1&S&M1 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1&S&M1&M*
+  synthetic constructor •() → self::_B1&S&M1&M
     : super self::_B1&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class B1 extends self::_B1&S&M1&M {
-  synthetic constructor •() → self::B1*
+  synthetic constructor •() → self::B1
     : super self::_B1&S&M1&M::•()
     ;
 }
 abstract class _B2&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2&S&M1*
+  synthetic constructor •() → self::_B2&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B2&S&M1&M2 = self::_B2&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2&S&M1&M2*
+  synthetic constructor •() → self::_B2&S&M1&M2
     : super self::_B2&S&M1::•()
     ;
 }
 abstract class _B2&S&M1&M2&M = self::_B2&S&M1&M2 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2&S&M1&M2&M*
+  synthetic constructor •() → self::_B2&S&M1&M2&M
     : super self::_B2&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class B2 extends self::_B2&S&M1&M2&M {
-  synthetic constructor •() → self::B2*
+  synthetic constructor •() → self::B2
     : super self::_B2&S&M1&M2&M::•()
     ;
 }
 abstract class _B0X&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B0X&S&M*
+  synthetic constructor •() → self::_B0X&S&M
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _B0X&S&M&MX = self::_B0X&S&M with self::MX /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B0X&S&M&MX*
+  synthetic constructor •() → self::_B0X&S&M&MX
     : super self::_B0X&S&M::•()
     ;
 }
 class B0X extends self::_B0X&S&M&MX {
-  synthetic constructor •() → self::B0X*
+  synthetic constructor •() → self::B0X
     : super self::_B0X&S&M&MX::•()
     ;
 }
 abstract class _B1X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1X&S&M1*
+  synthetic constructor •() → self::_B1X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B1X&S&M1&M = self::_B1X&S&M1 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1X&S&M1&M*
+  synthetic constructor •() → self::_B1X&S&M1&M
     : super self::_B1X&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _B1X&S&M1&M&MX = self::_B1X&S&M1&M with self::MX /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1X&S&M1&M&MX*
+  synthetic constructor •() → self::_B1X&S&M1&M&MX
     : super self::_B1X&S&M1&M::•()
     ;
 }
 class B1X extends self::_B1X&S&M1&M&MX {
-  synthetic constructor •() → self::B1X*
+  synthetic constructor •() → self::B1X
     : super self::_B1X&S&M1&M&MX::•()
     ;
 }
 abstract class _B2X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1*
+  synthetic constructor •() → self::_B2X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B2X&S&M1&M2 = self::_B2X&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1&M2*
+  synthetic constructor •() → self::_B2X&S&M1&M2
     : super self::_B2X&S&M1::•()
     ;
 }
 abstract class _B2X&S&M1&M2&M = self::_B2X&S&M1&M2 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1&M2&M*
+  synthetic constructor •() → self::_B2X&S&M1&M2&M
     : super self::_B2X&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _B2X&S&M1&M2&M&MX = self::_B2X&S&M1&M2&M with self::MX /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX*
+  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX
     : super self::_B2X&S&M1&M2&M::•()
     ;
 }
 class B2X extends self::_B2X&S&M1&M2&M&MX {
-  synthetic constructor •() → self::B2X*
+  synthetic constructor •() → self::B2X
     : super self::_B2X&S&M1&M2&M&MX::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_override.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_application_override.dart.weak.modular.expect
index 56cdffa..7d32765 100644
--- a/pkg/front_end/testcases/general/mixin_application_override.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_application_override.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -126,283 +126,233 @@
 import "dart:core" as core;
 
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     : super core::Object::•()
     ;
   method foo([dynamic x = #C1]) → 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 M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
   method foo() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     : 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 M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : 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 MX extends core::Object {
-  synthetic constructor •() → self::MX*
+  synthetic constructor •() → self::MX
     : 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 A0 = self::S with self::M {
-  synthetic constructor •() → self::A0*
+  synthetic constructor •() → self::A0
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _A1&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A1&S&M1*
+  synthetic constructor •() → self::_A1&S&M1
     : super self::S::•()
     ;
 }
 class A1 = self::_A1&S&M1 with self::M {
-  synthetic constructor •() → self::A1*
+  synthetic constructor •() → self::A1
     : super self::_A1&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _A2&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2&S&M1*
+  synthetic constructor •() → self::_A2&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A2&S&M1&M2 = self::_A2&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2&S&M1&M2*
+  synthetic constructor •() → self::_A2&S&M1&M2
     : super self::_A2&S&M1::•()
     ;
 }
 class A2 = self::_A2&S&M1&M2 with self::M {
-  synthetic constructor •() → self::A2*
+  synthetic constructor •() → self::A2
     : super self::_A2&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _A0X&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A0X&S&M*
+  synthetic constructor •() → self::_A0X&S&M
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class A0X = self::_A0X&S&M with self::MX {
-  synthetic constructor •() → self::A0X*
+  synthetic constructor •() → self::A0X
     : super self::_A0X&S&M::•()
     ;
 }
 abstract class _A1X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A1X&S&M1*
+  synthetic constructor •() → self::_A1X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A1X&S&M1&M = self::_A1X&S&M1 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A1X&S&M1&M*
+  synthetic constructor •() → self::_A1X&S&M1&M
     : super self::_A1X&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class A1X = self::_A1X&S&M1&M with self::MX {
-  synthetic constructor •() → self::A1X*
+  synthetic constructor •() → self::A1X
     : super self::_A1X&S&M1&M::•()
     ;
 }
 abstract class _A2X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2X&S&M1*
+  synthetic constructor •() → self::_A2X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A2X&S&M1&M2 = self::_A2X&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2X&S&M1&M2*
+  synthetic constructor •() → self::_A2X&S&M1&M2
     : super self::_A2X&S&M1::•()
     ;
 }
 abstract class _A2X&S&M1&M2&M = self::_A2X&S&M1&M2 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2X&S&M1&M2&M*
+  synthetic constructor •() → self::_A2X&S&M1&M2&M
     : super self::_A2X&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class A2X = self::_A2X&S&M1&M2&M with self::MX {
-  synthetic constructor •() → self::A2X*
+  synthetic constructor •() → self::A2X
     : super self::_A2X&S&M1&M2&M::•()
     ;
 }
 abstract class _B0&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B0&S&M*
+  synthetic constructor •() → self::_B0&S&M
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class B0 extends self::_B0&S&M {
-  synthetic constructor •() → self::B0*
+  synthetic constructor •() → self::B0
     : super self::_B0&S&M::•()
     ;
 }
 abstract class _B1&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1&S&M1*
+  synthetic constructor •() → self::_B1&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B1&S&M1&M = self::_B1&S&M1 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1&S&M1&M*
+  synthetic constructor •() → self::_B1&S&M1&M
     : super self::_B1&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class B1 extends self::_B1&S&M1&M {
-  synthetic constructor •() → self::B1*
+  synthetic constructor •() → self::B1
     : super self::_B1&S&M1&M::•()
     ;
 }
 abstract class _B2&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2&S&M1*
+  synthetic constructor •() → self::_B2&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B2&S&M1&M2 = self::_B2&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2&S&M1&M2*
+  synthetic constructor •() → self::_B2&S&M1&M2
     : super self::_B2&S&M1::•()
     ;
 }
 abstract class _B2&S&M1&M2&M = self::_B2&S&M1&M2 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2&S&M1&M2&M*
+  synthetic constructor •() → self::_B2&S&M1&M2&M
     : super self::_B2&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class B2 extends self::_B2&S&M1&M2&M {
-  synthetic constructor •() → self::B2*
+  synthetic constructor •() → self::B2
     : super self::_B2&S&M1&M2&M::•()
     ;
 }
 abstract class _B0X&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B0X&S&M*
+  synthetic constructor •() → self::_B0X&S&M
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _B0X&S&M&MX = self::_B0X&S&M with self::MX /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B0X&S&M&MX*
+  synthetic constructor •() → self::_B0X&S&M&MX
     : super self::_B0X&S&M::•()
     ;
 }
 class B0X extends self::_B0X&S&M&MX {
-  synthetic constructor •() → self::B0X*
+  synthetic constructor •() → self::B0X
     : super self::_B0X&S&M&MX::•()
     ;
 }
 abstract class _B1X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1X&S&M1*
+  synthetic constructor •() → self::_B1X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B1X&S&M1&M = self::_B1X&S&M1 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1X&S&M1&M*
+  synthetic constructor •() → self::_B1X&S&M1&M
     : super self::_B1X&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _B1X&S&M1&M&MX = self::_B1X&S&M1&M with self::MX /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1X&S&M1&M&MX*
+  synthetic constructor •() → self::_B1X&S&M1&M&MX
     : super self::_B1X&S&M1&M::•()
     ;
 }
 class B1X extends self::_B1X&S&M1&M&MX {
-  synthetic constructor •() → self::B1X*
+  synthetic constructor •() → self::B1X
     : super self::_B1X&S&M1&M&MX::•()
     ;
 }
 abstract class _B2X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1*
+  synthetic constructor •() → self::_B2X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B2X&S&M1&M2 = self::_B2X&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1&M2*
+  synthetic constructor •() → self::_B2X&S&M1&M2
     : super self::_B2X&S&M1::•()
     ;
 }
 abstract class _B2X&S&M1&M2&M = self::_B2X&S&M1&M2 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1&M2&M*
+  synthetic constructor •() → self::_B2X&S&M1&M2&M
     : super self::_B2X&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _B2X&S&M1&M2&M&MX = self::_B2X&S&M1&M2&M with self::MX /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX*
+  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX
     : super self::_B2X&S&M1&M2&M::•()
     ;
 }
 class B2X extends self::_B2X&S&M1&M2&M&MX {
-  synthetic constructor •() → self::B2X*
+  synthetic constructor •() → self::B2X
     : super self::_B2X&S&M1&M2&M&MX::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/mixin_application_override.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_application_override.dart.weak.outline.expect
index db60ecb..a0a1070 100644
--- a/pkg/front_end/testcases/general/mixin_application_override.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_application_override.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -126,275 +126,225 @@
 import "dart:core" as core;
 
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     ;
   method foo([dynamic 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
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     ;
   method foo() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 MX extends core::Object {
-  synthetic constructor •() → self::MX*
+  synthetic constructor •() → self::MX
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 A0 = self::S with self::M {
-  synthetic constructor •() → self::A0*
+  synthetic constructor •() → self::A0
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _A1&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A1&S&M1*
+  synthetic constructor •() → self::_A1&S&M1
     : super self::S::•()
     ;
 }
 class A1 = self::_A1&S&M1 with self::M {
-  synthetic constructor •() → self::A1*
+  synthetic constructor •() → self::A1
     : super self::_A1&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _A2&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2&S&M1*
+  synthetic constructor •() → self::_A2&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A2&S&M1&M2 = self::_A2&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2&S&M1&M2*
+  synthetic constructor •() → self::_A2&S&M1&M2
     : super self::_A2&S&M1::•()
     ;
 }
 class A2 = self::_A2&S&M1&M2 with self::M {
-  synthetic constructor •() → self::A2*
+  synthetic constructor •() → self::A2
     : super self::_A2&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _A0X&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A0X&S&M*
+  synthetic constructor •() → self::_A0X&S&M
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class A0X = self::_A0X&S&M with self::MX {
-  synthetic constructor •() → self::A0X*
+  synthetic constructor •() → self::A0X
     : super self::_A0X&S&M::•()
     ;
 }
 abstract class _A1X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A1X&S&M1*
+  synthetic constructor •() → self::_A1X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A1X&S&M1&M = self::_A1X&S&M1 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A1X&S&M1&M*
+  synthetic constructor •() → self::_A1X&S&M1&M
     : super self::_A1X&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class A1X = self::_A1X&S&M1&M with self::MX {
-  synthetic constructor •() → self::A1X*
+  synthetic constructor •() → self::A1X
     : super self::_A1X&S&M1&M::•()
     ;
 }
 abstract class _A2X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2X&S&M1*
+  synthetic constructor •() → self::_A2X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A2X&S&M1&M2 = self::_A2X&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2X&S&M1&M2*
+  synthetic constructor •() → self::_A2X&S&M1&M2
     : super self::_A2X&S&M1::•()
     ;
 }
 abstract class _A2X&S&M1&M2&M = self::_A2X&S&M1&M2 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A2X&S&M1&M2&M*
+  synthetic constructor •() → self::_A2X&S&M1&M2&M
     : super self::_A2X&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class A2X = self::_A2X&S&M1&M2&M with self::MX {
-  synthetic constructor •() → self::A2X*
+  synthetic constructor •() → self::A2X
     : super self::_A2X&S&M1&M2&M::•()
     ;
 }
 abstract class _B0&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B0&S&M*
+  synthetic constructor •() → self::_B0&S&M
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class B0 extends self::_B0&S&M {
-  synthetic constructor •() → self::B0*
+  synthetic constructor •() → self::B0
     ;
 }
 abstract class _B1&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1&S&M1*
+  synthetic constructor •() → self::_B1&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B1&S&M1&M = self::_B1&S&M1 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1&S&M1&M*
+  synthetic constructor •() → self::_B1&S&M1&M
     : super self::_B1&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class B1 extends self::_B1&S&M1&M {
-  synthetic constructor •() → self::B1*
+  synthetic constructor •() → self::B1
     ;
 }
 abstract class _B2&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2&S&M1*
+  synthetic constructor •() → self::_B2&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B2&S&M1&M2 = self::_B2&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2&S&M1&M2*
+  synthetic constructor •() → self::_B2&S&M1&M2
     : super self::_B2&S&M1::•()
     ;
 }
 abstract class _B2&S&M1&M2&M = self::_B2&S&M1&M2 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2&S&M1&M2&M*
+  synthetic constructor •() → self::_B2&S&M1&M2&M
     : super self::_B2&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 class B2 extends self::_B2&S&M1&M2&M {
-  synthetic constructor •() → self::B2*
+  synthetic constructor •() → self::B2
     ;
 }
 abstract class _B0X&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B0X&S&M*
+  synthetic constructor •() → self::_B0X&S&M
     : super self::S::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _B0X&S&M&MX = self::_B0X&S&M with self::MX /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B0X&S&M&MX*
+  synthetic constructor •() → self::_B0X&S&M&MX
     : super self::_B0X&S&M::•()
     ;
 }
 class B0X extends self::_B0X&S&M&MX {
-  synthetic constructor •() → self::B0X*
+  synthetic constructor •() → self::B0X
     ;
 }
 abstract class _B1X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1X&S&M1*
+  synthetic constructor •() → self::_B1X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B1X&S&M1&M = self::_B1X&S&M1 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1X&S&M1&M*
+  synthetic constructor •() → self::_B1X&S&M1&M
     : super self::_B1X&S&M1::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _B1X&S&M1&M&MX = self::_B1X&S&M1&M with self::MX /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B1X&S&M1&M&MX*
+  synthetic constructor •() → self::_B1X&S&M1&M&MX
     : super self::_B1X&S&M1&M::•()
     ;
 }
 class B1X extends self::_B1X&S&M1&M&MX {
-  synthetic constructor •() → self::B1X*
+  synthetic constructor •() → self::B1X
     ;
 }
 abstract class _B2X&S&M1 = self::S with self::M1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1*
+  synthetic constructor •() → self::_B2X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B2X&S&M1&M2 = self::_B2X&S&M1 with self::M2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1&M2*
+  synthetic constructor •() → self::_B2X&S&M1&M2
     : super self::_B2X&S&M1::•()
     ;
 }
 abstract class _B2X&S&M1&M2&M = self::_B2X&S&M1&M2 with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1&M2&M*
+  synthetic constructor •() → self::_B2X&S&M1&M2&M
     : super self::_B2X&S&M1&M2::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
 }
 abstract class _B2X&S&M1&M2&M&MX = self::_B2X&S&M1&M2&M with self::MX /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX*
+  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX
     : super self::_B2X&S&M1&M2&M::•()
     ;
 }
 class B2X extends self::_B2X&S&M1&M2&M&MX {
-  synthetic constructor •() → self::B2X*
+  synthetic constructor •() → self::B2X
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart b/pkg/front_end/testcases/general/mixin_conflicts.dart
index 70cf203..6afebe0 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart
+++ b/pkg/front_end/testcases/general/mixin_conflicts.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
+
 // This class has no problems.
 class M {
   foo() {}
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_conflicts.dart.textual_outline.expect
index 2819465..5f79e28 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_conflicts.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class M {
   foo() {}
 }
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_conflicts.dart.textual_outline_modelled.expect
index 96f1a87..b2ad75b 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_conflicts.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class C3 extends Object with M2 {}
 
 abstract class M2 implements M {
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.expect b/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.expect
index 94fa4c4..2171271 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -34,151 +34,71 @@
 import "dart:core" as core;
 
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
   method foo() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class N = core::Object with self::M /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::N*
+  const synthetic constructor •() → self::N
     : super core::Object::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&N = core::Object with self::N /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&N*
+  const synthetic constructor •() → self::_C&Object&N
     : super core::Object::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends self::_C&Object&N {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::_C&Object&N::•()
     ;
 }
 abstract class M2 extends core::Object implements self::M {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : super core::Object::•()
     ;
   method bar() → 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 N2 = core::Object with self::M2 /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::N2*
+  const synthetic constructor •() → self::N2
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class N3 = core::Object with self::M2 /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::N3*
+  const synthetic constructor •() → self::N3
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C2&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C2&Object&M2*
+  const synthetic constructor •() → self::_C2&Object&M2
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C2 extends self::_C2&Object&M2 {
-  synthetic constructor •() → self::C2*
+  synthetic constructor •() → self::C2
     : super self::_C2&Object&M2::•()
     ;
 }
 abstract class _C3&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C3&Object&M2*
+  const synthetic constructor •() → self::_C3&Object&M2
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class C3 extends self::_C3&Object&M2 {
-  synthetic constructor •() → self::C3*
+  synthetic constructor •() → self::C3
     : super self::_C3&Object&M2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.modular.expect
index 94fa4c4..2171271 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -34,151 +34,71 @@
 import "dart:core" as core;
 
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
   method foo() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class N = core::Object with self::M /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::N*
+  const synthetic constructor •() → self::N
     : super core::Object::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&N = core::Object with self::N /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&N*
+  const synthetic constructor •() → self::_C&Object&N
     : super core::Object::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends self::_C&Object&N {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::_C&Object&N::•()
     ;
 }
 abstract class M2 extends core::Object implements self::M {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : super core::Object::•()
     ;
   method bar() → 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 N2 = core::Object with self::M2 /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::N2*
+  const synthetic constructor •() → self::N2
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class N3 = core::Object with self::M2 /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::N3*
+  const synthetic constructor •() → self::N3
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C2&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C2&Object&M2*
+  const synthetic constructor •() → self::_C2&Object&M2
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C2 extends self::_C2&Object&M2 {
-  synthetic constructor •() → self::C2*
+  synthetic constructor •() → self::C2
     : super self::_C2&Object&M2::•()
     ;
 }
 abstract class _C3&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C3&Object&M2*
+  const synthetic constructor •() → self::_C3&Object&M2
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class C3 extends self::_C3&Object&M2 {
-  synthetic constructor •() → self::C3*
+  synthetic constructor •() → self::C3
     : super self::_C3&Object&M2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.outline.expect
index ffe0ebf..57ca611 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -34,149 +34,69 @@
 import "dart:core" as core;
 
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     ;
   method foo() → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class N = core::Object with self::M /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::N*
+  const synthetic constructor •() → self::N
     : super core::Object::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&N = core::Object with self::N /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&N*
+  const synthetic constructor •() → self::_C&Object&N
     : super core::Object::•()
     ;
   mixin-super-stub method foo() → dynamic
     return super.{self::M::foo}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends self::_C&Object&N {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
 }
 abstract class M2 extends core::Object implements self::M {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     ;
   method bar() → 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 N2 = core::Object with self::M2 /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::N2*
+  const synthetic constructor •() → self::N2
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class N3 = core::Object with self::M2 /*hasConstConstructor*/  {
-  const synthetic constructor •() → self::N3*
+  const synthetic constructor •() → self::N3
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C2&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C2&Object&M2*
+  const synthetic constructor •() → self::_C2&Object&M2
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C2 extends self::_C2&Object&M2 {
-  synthetic constructor •() → self::C2*
+  synthetic constructor •() → self::C2
     ;
 }
 abstract class _C3&Object&M2 = core::Object with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C3&Object&M2*
+  const synthetic constructor •() → self::_C3&Object&M2
     : super core::Object::•()
     ;
   mixin-super-stub method bar() → dynamic
     return super.{self::M2::bar}();
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class C3 extends self::_C3&Object&M2 {
-  synthetic constructor •() → self::C3*
+  synthetic constructor •() → self::C3
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.transformed.expect
index fb7371c..badca39 100644
--- a/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_conflicts.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -34,145 +34,65 @@
 import "dart:core" as core;
 
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
   method foo() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class N extends core::Object implements self::M /*isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::N*
+  const synthetic constructor •() → self::N
     : super core::Object::•()
     ;
   method foo() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&N extends core::Object implements self::N /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&N*
+  const synthetic constructor •() → self::_C&Object&N
     : super core::Object::•()
     ;
   method foo() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends self::_C&Object&N {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::_C&Object&N::•()
     ;
 }
 abstract class M2 extends core::Object implements self::M {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : super core::Object::•()
     ;
   method bar() → 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 N2 extends core::Object implements self::M2 /*isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::N2*
+  const synthetic constructor •() → self::N2
     : super core::Object::•()
     ;
   method bar() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class N3 extends core::Object implements self::M2 /*isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::N3*
+  const synthetic constructor •() → self::N3
     : super core::Object::•()
     ;
   method bar() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C2&Object&M2 extends core::Object implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C2&Object&M2*
+  const synthetic constructor •() → self::_C2&Object&M2
     : super core::Object::•()
     ;
   method bar() → 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 C2 extends self::_C2&Object&M2 {
-  synthetic constructor •() → self::C2*
+  synthetic constructor •() → self::C2
     : super self::_C2&Object&M2::•()
     ;
 }
 abstract class _C3&Object&M2 extends core::Object implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C3&Object&M2*
+  const synthetic constructor •() → self::_C3&Object&M2
     : super core::Object::•()
     ;
   method bar() → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class C3 extends self::_C3&Object&M2 {
-  synthetic constructor •() → self::C3*
+  synthetic constructor •() → self::C3
     : super self::_C3&Object&M2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart
index 2e9efab..011cb34 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 import "package:expect/expect.dart";
 
 class C<T> {
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.textual_outline.expect
index 86ae68a..d671b85 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import "package:expect/expect.dart";
 
 class C<T> {
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.textual_outline_modelled.expect
index e69ebaf..452b24b 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import "package:expect/expect.dart";
 
 class C<T> {
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect
index 813bde3..beed00c 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -12,63 +12,43 @@
 
 import "package:expect/expect.dart";
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  field core::String* trace;
-  constructor •({dynamic a = #C1, dynamic b = #C2}) → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  field core::String trace;
+  constructor •({dynamic a = #C1, dynamic b = #C2}) → self::C<self::C::T%>
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class D = self::C<core::String*> with self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
+class D = self::C<core::String> with self::M {
+  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D
     : super self::C::•(a: a, b: b)
     ;
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
 }
-abstract class _F&C&M = self::C<core::int*> with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::_F&C&M*
+abstract class _F&C&M = self::C<core::int> with self::M /*isAnonymousMixin*/  {
+  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::_F&C&M
     : super self::C::•(a: a, b: b)
     ;
 }
 class F extends self::_F&C&M {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super self::_F&C&M::•()
     ;
 }
 static method main() → dynamic {
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object*>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace}{core::String*});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object>().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace}{core::String});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.modular.expect
index 813bde3..beed00c 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -12,63 +12,43 @@
 
 import "package:expect/expect.dart";
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  field core::String* trace;
-  constructor •({dynamic a = #C1, dynamic b = #C2}) → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  field core::String trace;
+  constructor •({dynamic a = #C1, dynamic b = #C2}) → self::C<self::C::T%>
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class D = self::C<core::String*> with self::M {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
+class D = self::C<core::String> with self::M {
+  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D
     : super self::C::•(a: a, b: b)
     ;
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
 }
-abstract class _F&C&M = self::C<core::int*> with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::_F&C&M*
+abstract class _F&C&M = self::C<core::int> with self::M /*isAnonymousMixin*/  {
+  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::_F&C&M
     : super self::C::•(a: a, b: b)
     ;
 }
 class F extends self::_F&C&M {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super self::_F&C&M::•()
     ;
 }
 static method main() → dynamic {
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object*>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace}{core::String*});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object>().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace}{core::String});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.outline.expect
index 4244473..d5065f7 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -11,51 +11,31 @@
 
 import "package:expect/expect.dart";
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  field core::String* trace;
-  constructor •({dynamic a = 0, dynamic b = invalid-type}) → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  field core::String trace;
+  constructor •({dynamic a = 0, dynamic b = invalid-type}) → 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
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class D = self::C<core::String*> with self::M {
-  synthetic constructor •({dynamic a = 0, dynamic b = invalid-type}) → self::D*
+class D = self::C<core::String> with self::M {
+  synthetic constructor •({dynamic a = 0, dynamic b = invalid-type}) → self::D
     : super self::C::•(a: a, b: b)
     ;
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     ;
 }
-abstract class _F&C&M = self::C<core::int*> with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •({dynamic a = 0, dynamic b = invalid-type}) → self::_F&C&M*
+abstract class _F&C&M = self::C<core::int> with self::M /*isAnonymousMixin*/  {
+  synthetic constructor •({dynamic a = 0, dynamic b = invalid-type}) → self::_F&C&M
     : super self::C::•(a: a, b: b)
     ;
 }
 class F extends self::_F&C&M {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect
index ee8735c..98df2eb 100644
--- a/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -12,63 +12,43 @@
 
 import "package:expect/expect.dart";
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  field core::String* trace;
-  constructor •({dynamic a = #C1, dynamic b = #C2}) → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  field core::String trace;
+  constructor •({dynamic a = #C1, dynamic b = #C2}) → self::C<self::C::T%>
     : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class D extends self::C<core::String*> implements self::M /*isEliminatedMixin*/  {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
+class D extends self::C<core::String> implements self::M /*isEliminatedMixin*/  {
+  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D
     : super self::C::•(a: a, b: b)
     ;
 }
 class E extends self::D {
-  synthetic constructor •() → self::E*
+  synthetic constructor •() → self::E
     : super self::D::•()
     ;
 }
-abstract class _F&C&M extends self::C<core::int*> implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::_F&C&M*
+abstract class _F&C&M extends self::C<core::int> implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
+  synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::_F&C&M
     : super self::C::•(a: a, b: b)
     ;
 }
 class F extends self::_F&C&M {
-  synthetic constructor •() → self::F*
+  synthetic constructor •() → self::F
     : super self::_F&C&M::•()
     ;
 }
 static method main() → dynamic {
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object*>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace}{core::String*});
-  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace}{core::String*});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object>().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace}{core::String});
+  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace}{core::String});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart b/pkg/front_end/testcases/general/mixin_covariant.dart
index 77b9cdb..c32fcd5 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart
@@ -1,36 +1,36 @@
 // 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
+
 // Derived from language_2/covariant_override/tear_off_type_test
 
 // If a parameter is directly or indirectly a covariant override, its type in
-// the method tear-off should become Object.
+// the method tear-off should become Object?.
 
-typedef void TakeInts(int a, int b, int c, int d, int e);
-typedef void TakeObjectsAndInts(Object a, int b, Object c, int d, int e);
-typedef void TakeObjects(Object a, Object b, Object c, Object d, Object e);
+typedef void TakeInts(int? a, int? b, int? c, int? d, int? e);
+typedef void TakeObjectsAndInts(Object? a, int? b, Object? c, int? d, int? e);
+typedef void TakeObjects(Object? a, Object? b, Object? c, Object? d, Object? e);
 
-typedef void TakeOptionalInts([int a, int b, int c, int d]);
-typedef void TakeOptionalObjectsAndInts([Object a, int b, Object c, int d]);
+typedef void TakeOptionalInts([int? a, int? b, int? c, int? d]);
+typedef void TakeOptionalObjectsAndInts([Object? a, int? b, Object? c, int? d]);
 
-typedef void TakeNamedInts({int a, int b, int c, int d});
-typedef void TakeNamedObjectsAndInts({Object a, int b, Object c, int d});
+typedef void TakeNamedInts({int? a, int? b, int? c, int? d});
+typedef void TakeNamedObjectsAndInts({Object? a, int? b, Object? c, int? d});
 
 class M1 {
-  method(covariant int a, int b) {}
+  method(covariant int? a, int? b) {}
 }
 
 class M2 {
-  method(int a, covariant int b) {}
+  method(int? a, covariant int? b) {}
 }
 
 class C extends Object with M1, M2 {}
 
 class Direct {
-  void positional(covariant int a, int b, covariant int c, int d, int e) {}
-  void optional([covariant int a, int b, covariant int c, int d]) {}
-  void named({covariant int a, int b, covariant int c, int d}) {}
+  void positional(covariant int? a, int? b, covariant int? c, int? d, int? e) {}
+  void optional([covariant int? a, int? b, covariant int? c, int? d]) {}
+  void named({covariant int? a, int? b, covariant int? c, int? d}) {}
 }
 
 class Inherited extends Direct {}
@@ -38,59 +38,59 @@
 // ---
 
 class Override1 {
-  void method(covariant int a, int b, int c, int d, int e) {}
+  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class Override2 extends Override1 {
-  void method(int a, int b, covariant int c, int d, int e) {}
+  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Override3 extends Override2 {
-  void method(int a, int b, int c, int d, int e) {}
+  void method(int? a, int? b, int? c, int? d, int? e) {}
 }
 
 // ---
 
 abstract class Implement1 {
-  void method(covariant int a, int b, int c, int d, int e) {}
+  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class Implement2 {
-  void method(int a, covariant int b, int c, int d, int e) {}
+  void method(int? a, covariant int? b, int? c, int? d, int? e) {}
 }
 
 class Implement3 {
-  void method(int a, int b, covariant int c, int d, int e) {}
+  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Implement4 implements Implement3 {
-  void method(int a, int b, int c, covariant int d, int e) {}
+  void method(int? a, int? b, int? c, covariant int? d, int? e) {}
 }
 
 class Implement5 implements Implement1, Implement2, Implement4 {
-  void method(int a, int b, int c, int d, covariant int e) {}
+  void method(int? a, int? b, int? c, int? d, covariant int? e) {}
 }
 
 // ---
 
 class Interface1 {
-  void method(covariant int a, int b, int c, int d, int e) {}
+  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class Interface2 {
-  void method(int a, covariant int b, int c, int d, int e) {}
+  void method(int? a, covariant int? b, int? c, int? d, int? e) {}
 }
 
 class Mixin1 {
-  void method(int a, int b, covariant int c, int d, int e) {}
+  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Mixin2 {
-  void method(int a, int b, int c, covariant int d, int e) {}
+  void method(int? a, int? b, int? c, covariant int? d, int? e) {}
 }
 
 class Superclass {
-  void method(int a, int b, int c, int d, covariant int e) {}
+  void method(int? a, int? b, int? c, int? d, covariant int? e) {}
 }
 
 class Mixed extends Superclass
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.textual_outline.expect
index 5f9d48c..1dbfd18 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.textual_outline.expect
@@ -1,80 +1,79 @@
-// @dart = 2.9
-typedef void TakeInts(int a, int b, int c, int d, int e);
-typedef void TakeObjectsAndInts(Object a, int b, Object c, int d, int e);
-typedef void TakeObjects(Object a, Object b, Object c, Object d, Object e);
-typedef void TakeOptionalInts([int a, int b, int c, int d]);
-typedef void TakeOptionalObjectsAndInts([Object a, int b, Object c, int d]);
-typedef void TakeNamedInts({int a, int b, int c, int d});
-typedef void TakeNamedObjectsAndInts({Object a, int b, Object c, int d});
+typedef void TakeInts(int? a, int? b, int? c, int? d, int? e);
+typedef void TakeObjectsAndInts(Object? a, int? b, Object? c, int? d, int? e);
+typedef void TakeObjects(Object? a, Object? b, Object? c, Object? d, Object? e);
+typedef void TakeOptionalInts([int? a, int? b, int? c, int? d]);
+typedef void TakeOptionalObjectsAndInts([Object? a, int? b, Object? c, int? d]);
+typedef void TakeNamedInts({int? a, int? b, int? c, int? d});
+typedef void TakeNamedObjectsAndInts({Object? a, int? b, Object? c, int? d});
 
 class M1 {
-  method(covariant int a, int b) {}
+  method(covariant int? a, int? b) {}
 }
 
 class M2 {
-  method(int a, covariant int b) {}
+  method(int? a, covariant int? b) {}
 }
 
 class C extends Object with M1, M2 {}
 
 class Direct {
-  void positional(covariant int a, int b, covariant int c, int d, int e) {}
-  void optional([covariant int a, int b, covariant int c, int d]) {}
-  void named({covariant int a, int b, covariant int c, int d}) {}
+  void positional(covariant int? a, int? b, covariant int? c, int? d, int? e) {}
+  void optional([covariant int? a, int? b, covariant int? c, int? d]) {}
+  void named({covariant int? a, int? b, covariant int? c, int? d}) {}
 }
 
 class Inherited extends Direct {}
 
 class Override1 {
-  void method(covariant int a, int b, int c, int d, int e) {}
+  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class Override2 extends Override1 {
-  void method(int a, int b, covariant int c, int d, int e) {}
+  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Override3 extends Override2 {
-  void method(int a, int b, int c, int d, int e) {}
+  void method(int? a, int? b, int? c, int? d, int? e) {}
 }
 
 abstract class Implement1 {
-  void method(covariant int a, int b, int c, int d, int e) {}
+  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class Implement2 {
-  void method(int a, covariant int b, int c, int d, int e) {}
+  void method(int? a, covariant int? b, int? c, int? d, int? e) {}
 }
 
 class Implement3 {
-  void method(int a, int b, covariant int c, int d, int e) {}
+  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Implement4 implements Implement3 {
-  void method(int a, int b, int c, covariant int d, int e) {}
+  void method(int? a, int? b, int? c, covariant int? d, int? e) {}
 }
 
 class Implement5 implements Implement1, Implement2, Implement4 {
-  void method(int a, int b, int c, int d, covariant int e) {}
+  void method(int? a, int? b, int? c, int? d, covariant int? e) {}
 }
 
 class Interface1 {
-  void method(covariant int a, int b, int c, int d, int e) {}
+  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class Interface2 {
-  void method(int a, covariant int b, int c, int d, int e) {}
+  void method(int? a, covariant int? b, int? c, int? d, int? e) {}
 }
 
 class Mixin1 {
-  void method(int a, int b, covariant int c, int d, int e) {}
+  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Mixin2 {
-  void method(int a, int b, int c, covariant int d, int e) {}
+  void method(int? a, int? b, int? c, covariant int? d, int? e) {}
 }
 
 class Superclass {
-  void method(int a, int b, int c, int d, covariant int e) {}
+  void method(int? a, int? b, int? c, int? d, covariant int? e) {}
 }
 
 class Mixed extends Superclass
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.textual_outline_modelled.expect
index bd45a1d..c0534c1 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.textual_outline_modelled.expect
@@ -1,48 +1,47 @@
-// @dart = 2.9
 abstract class Implement1 {
-  void method(covariant int a, int b, int c, int d, int e) {}
+  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class C extends Object with M1, M2 {}
 
 class Direct {
-  void named({covariant int a, int b, covariant int c, int d}) {}
-  void optional([covariant int a, int b, covariant int c, int d]) {}
-  void positional(covariant int a, int b, covariant int c, int d, int e) {}
+  void named({covariant int? a, int? b, covariant int? c, int? d}) {}
+  void optional([covariant int? a, int? b, covariant int? c, int? d]) {}
+  void positional(covariant int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Implement2 {
-  void method(int a, covariant int b, int c, int d, int e) {}
+  void method(int? a, covariant int? b, int? c, int? d, int? e) {}
 }
 
 class Implement3 {
-  void method(int a, int b, covariant int c, int d, int e) {}
+  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Implement4 implements Implement3 {
-  void method(int a, int b, int c, covariant int d, int e) {}
+  void method(int? a, int? b, int? c, covariant int? d, int? e) {}
 }
 
 class Implement5 implements Implement1, Implement2, Implement4 {
-  void method(int a, int b, int c, int d, covariant int e) {}
+  void method(int? a, int? b, int? c, int? d, covariant int? e) {}
 }
 
 class Inherited extends Direct {}
 
 class Interface1 {
-  void method(covariant int a, int b, int c, int d, int e) {}
+  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class Interface2 {
-  void method(int a, covariant int b, int c, int d, int e) {}
+  void method(int? a, covariant int? b, int? c, int? d, int? e) {}
 }
 
 class M1 {
-  method(covariant int a, int b) {}
+  method(covariant int? a, int? b) {}
 }
 
 class M2 {
-  method(int a, covariant int b) {}
+  method(int? a, covariant int? b) {}
 }
 
 class Mixed extends Superclass
@@ -50,36 +49,36 @@
     implements Interface1, Interface2 {}
 
 class Mixin1 {
-  void method(int a, int b, covariant int c, int d, int e) {}
+  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Mixin2 {
-  void method(int a, int b, int c, covariant int d, int e) {}
+  void method(int? a, int? b, int? c, covariant int? d, int? e) {}
 }
 
 class Override1 {
-  void method(covariant int a, int b, int c, int d, int e) {}
+  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class Override2 extends Override1 {
-  void method(int a, int b, covariant int c, int d, int e) {}
+  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
 }
 
 class Override3 extends Override2 {
-  void method(int a, int b, int c, int d, int e) {}
+  void method(int? a, int? b, int? c, int? d, int? e) {}
 }
 
 class Superclass {
-  void method(int a, int b, int c, int d, covariant int e) {}
+  void method(int? a, int? b, int? c, int? d, covariant int? e) {}
 }
 
-typedef void TakeInts(int a, int b, int c, int d, int e);
-typedef void TakeNamedInts({int a, int b, int c, int d});
-typedef void TakeNamedObjectsAndInts({Object a, int b, Object c, int d});
-typedef void TakeObjects(Object a, Object b, Object c, Object d, Object e);
-typedef void TakeObjectsAndInts(Object a, int b, Object c, int d, int e);
-typedef void TakeOptionalInts([int a, int b, int c, int d]);
-typedef void TakeOptionalObjectsAndInts([Object a, int b, Object c, int d]);
+typedef void TakeInts(int? a, int? b, int? c, int? d, int? e);
+typedef void TakeNamedInts({int? a, int? b, int? c, int? d});
+typedef void TakeNamedObjectsAndInts({Object? a, int? b, Object? c, int? d});
+typedef void TakeObjects(Object? a, Object? b, Object? c, Object? d, Object? e);
+typedef void TakeObjectsAndInts(Object? a, int? b, Object? c, int? d, int? e);
+typedef void TakeOptionalInts([int? a, int? b, int? c, int? d]);
+typedef void TakeOptionalObjectsAndInts([Object? a, int? b, Object? c, int? d]);
 void isTrue(bool value) {}
 void main() {}
 void testDirect() {}
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.expect
index 503a71e..a1fcbe0 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.expect
@@ -1,305 +1,155 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef TakeInts = (core::int*, core::int*, core::int*, core::int*, core::int*) →* void;
-typedef TakeObjectsAndInts = (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void;
-typedef TakeObjects = (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void;
-typedef TakeOptionalInts = ([core::int*, core::int*, core::int*, core::int*]) →* void;
-typedef TakeOptionalObjectsAndInts = ([core::Object*, core::int*, core::Object*, core::int*]) →* void;
-typedef TakeNamedInts = ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void;
-typedef TakeNamedObjectsAndInts = ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void;
+typedef TakeInts = (core::int?, core::int?, core::int?, core::int?, core::int?) → void;
+typedef TakeObjectsAndInts = (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void;
+typedef TakeObjects = (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void;
+typedef TakeOptionalInts = ([core::int?, core::int?, core::int?, core::int?]) → void;
+typedef TakeOptionalObjectsAndInts = ([core::Object?, core::int?, core::Object?, core::int?]) → void;
+typedef TakeNamedInts = ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void;
+typedef TakeNamedObjectsAndInts = ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void;
 class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method method(covariant-by-declaration core::int? a, core::int? b) → dynamic {}
 }
 class M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : super core::Object::•()
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method method(core::int? a, covariant-by-declaration core::int? b) → dynamic {}
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1*
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
-  mixin-super-stub method method(covariant-by-declaration core::int* a, core::int* b) → dynamic
+  mixin-super-stub method method(covariant-by-declaration core::int? a, core::int? b) → dynamic
     return super.{self::M1::method}(a, 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
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1&M2*
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b) → dynamic
+  forwarding-stub method method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b) → dynamic
     return super.{self::M2::method}(a, b);
 }
 class C extends self::_C&Object&M1&M2 {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::_C&Object&M1&M2::•()
     ;
 }
 class Direct extends core::Object {
-  synthetic constructor •() → self::Direct*
+  synthetic constructor •() → self::Direct
     : super core::Object::•()
     ;
-  method positional(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void {}
-  method optional([covariant-by-declaration core::int* a = #C1, core::int* b = #C1, covariant-by-declaration core::int* c = #C1, core::int* d = #C1]) → void {}
-  method named({covariant-by-declaration core::int* a = #C1, core::int* b = #C1, covariant-by-declaration core::int* c = #C1, core::int* d = #C1}) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method positional(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
+  method optional([covariant-by-declaration core::int? a = #C1, core::int? b = #C1, covariant-by-declaration core::int? c = #C1, core::int? d = #C1]) → void {}
+  method named({covariant-by-declaration core::int? a = #C1, core::int? b = #C1, covariant-by-declaration core::int? c = #C1, core::int? d = #C1}) → void {}
 }
 class Inherited extends self::Direct {
-  synthetic constructor •() → self::Inherited*
+  synthetic constructor •() → self::Inherited
     : super self::Direct::•()
     ;
 }
 class Override1 extends core::Object {
-  synthetic constructor •() → self::Override1*
+  synthetic constructor •() → self::Override1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Override2 extends self::Override1 {
-  synthetic constructor •() → self::Override2*
+  synthetic constructor •() → self::Override2
     : super self::Override1::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void {}
+  method method(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 class Override3 extends self::Override2 {
-  synthetic constructor •() → self::Override3*
+  synthetic constructor •() → self::Override3
     : super self::Override2::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void {}
+  method method(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 abstract class Implement1 extends core::Object {
-  synthetic constructor •() → self::Implement1*
+  synthetic constructor •() → self::Implement1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Implement2 extends core::Object {
-  synthetic constructor •() → self::Implement2*
+  synthetic constructor •() → self::Implement2
     : super core::Object::•()
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, covariant-by-declaration core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Implement3 extends core::Object {
-  synthetic constructor •() → self::Implement3*
+  synthetic constructor •() → self::Implement3
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 class Implement4 extends core::Object implements self::Implement3 {
-  synthetic constructor •() → self::Implement4*
+  synthetic constructor •() → self::Implement4
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, core::int? e) → void {}
 }
 class Implement5 extends core::Object implements self::Implement1, self::Implement2, self::Implement4 {
-  synthetic constructor •() → self::Implement5*
+  synthetic constructor •() → self::Implement5
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → 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 method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void {}
 }
 class Interface1 extends core::Object {
-  synthetic constructor •() → self::Interface1*
+  synthetic constructor •() → self::Interface1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     : super core::Object::•()
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, covariant-by-declaration core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Mixin1 extends core::Object {
-  synthetic constructor •() → self::Mixin1*
+  synthetic constructor •() → self::Mixin1
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 class Mixin2 extends core::Object {
-  synthetic constructor •() → self::Mixin2*
+  synthetic constructor •() → self::Mixin2
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, core::int* c, covariant-by-declaration core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, core::int? c, covariant-by-declaration core::int? d, core::int? e) → void {}
 }
 class Superclass extends core::Object {
-  synthetic constructor •() → self::Superclass*
+  synthetic constructor •() → self::Superclass
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, core::int* c, core::int* d, covariant-by-declaration core::int* e) → 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 method(core::int? a, core::int? b, core::int? c, core::int? d, covariant-by-declaration core::int? e) → void {}
 }
 abstract class _Mixed&Superclass&Mixin1 = self::Superclass with self::Mixin1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Mixed&Superclass&Mixin1*
+  synthetic constructor •() → self::_Mixed&Superclass&Mixin1
     : super self::Superclass::•()
     ;
-  forwarding-stub method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin1::method}(a, b, c, d, e);
 }
 abstract class _Mixed&Superclass&Mixin1&Mixin2 = self::_Mixed&Superclass&Mixin1 with self::Mixin2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Mixed&Superclass&Mixin1&Mixin2*
+  synthetic constructor •() → self::_Mixed&Superclass&Mixin1&Mixin2
     : super self::_Mixed&Superclass&Mixin1::•()
     ;
-  forwarding-stub method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin2::method}(a, b, c, d, e);
 }
 class Mixed extends self::_Mixed&Superclass&Mixin1&Mixin2 implements self::Interface1, self::Interface2 {
-  synthetic constructor •() → self::Mixed*
+  synthetic constructor •() → self::Mixed
     : super self::_Mixed&Superclass&Mixin1&Mixin2::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin2::method}(a, b, c, d, e);
 }
 static method main() → void {
@@ -310,46 +160,46 @@
   self::testMixed();
 }
 static method testDirect() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Direct::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Direct::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
-  self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
-  self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Direct::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
-  self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
-  self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void positional = new self::Direct::•().{self::Direct::positional}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(positional is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(positional is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
+  ([core::int?, core::int?, core::int?, core::int?]) → void optional = new self::Direct::•().{self::Direct::optional}{([core::int?, core::int?, core::int?, core::int?]) → void};
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::int?, core::int?, core::int?, core::int?]) → void);
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::Object?, core::int?, core::Object?, core::int?]) → void);
+  ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void named = new self::Direct::•().{self::Direct::named}{({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void};
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void);
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void);
 }
 static method testInherited() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Inherited::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Inherited::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
-  self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
-  self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Inherited::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
-  self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
-  self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void positional = new self::Inherited::•().{self::Direct::positional}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(positional is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(positional is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
+  ([core::int?, core::int?, core::int?, core::int?]) → void optional = new self::Inherited::•().{self::Direct::optional}{([core::int?, core::int?, core::int?, core::int?]) → void};
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::int?, core::int?, core::int?, core::int?]) → void);
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::Object?, core::int?, core::Object?, core::int?]) → void);
+  ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void named = new self::Inherited::•().{self::Direct::named}{({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void};
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void);
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void);
 }
 static method testOverridden() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method2 = new self::Override2::•().{self::Override2::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method2 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method2 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method3 = new self::Override3::•().{self::Override3::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method3 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method3 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method2 = new self::Override2::•().{self::Override2::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method2 is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method2 is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method3 = new self::Override3::•().{self::Override3::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method3 is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method3 is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
 }
 static method testImplemented() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Implement5::•().{self::Implement5::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method = new self::Implement5::•().{self::Implement5::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void);
 }
 static method testMixed() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Mixed::•().{self::Mixed::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method = new self::Mixed::•().{self::Mixed::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void);
 }
-static method isTrue(core::bool* value) → void {
+static method isTrue(core::bool value) → void {
   if(!value)
     throw "Expected true";
 }
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.modular.expect
index 503a71e..a1fcbe0 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.modular.expect
@@ -1,305 +1,155 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef TakeInts = (core::int*, core::int*, core::int*, core::int*, core::int*) →* void;
-typedef TakeObjectsAndInts = (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void;
-typedef TakeObjects = (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void;
-typedef TakeOptionalInts = ([core::int*, core::int*, core::int*, core::int*]) →* void;
-typedef TakeOptionalObjectsAndInts = ([core::Object*, core::int*, core::Object*, core::int*]) →* void;
-typedef TakeNamedInts = ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void;
-typedef TakeNamedObjectsAndInts = ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void;
+typedef TakeInts = (core::int?, core::int?, core::int?, core::int?, core::int?) → void;
+typedef TakeObjectsAndInts = (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void;
+typedef TakeObjects = (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void;
+typedef TakeOptionalInts = ([core::int?, core::int?, core::int?, core::int?]) → void;
+typedef TakeOptionalObjectsAndInts = ([core::Object?, core::int?, core::Object?, core::int?]) → void;
+typedef TakeNamedInts = ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void;
+typedef TakeNamedObjectsAndInts = ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void;
 class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method method(covariant-by-declaration core::int? a, core::int? b) → dynamic {}
 }
 class M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : super core::Object::•()
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method method(core::int? a, covariant-by-declaration core::int? b) → dynamic {}
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1*
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
-  mixin-super-stub method method(covariant-by-declaration core::int* a, core::int* b) → dynamic
+  mixin-super-stub method method(covariant-by-declaration core::int? a, core::int? b) → dynamic
     return super.{self::M1::method}(a, 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
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1&M2*
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b) → dynamic
+  forwarding-stub method method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b) → dynamic
     return super.{self::M2::method}(a, b);
 }
 class C extends self::_C&Object&M1&M2 {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::_C&Object&M1&M2::•()
     ;
 }
 class Direct extends core::Object {
-  synthetic constructor •() → self::Direct*
+  synthetic constructor •() → self::Direct
     : super core::Object::•()
     ;
-  method positional(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void {}
-  method optional([covariant-by-declaration core::int* a = #C1, core::int* b = #C1, covariant-by-declaration core::int* c = #C1, core::int* d = #C1]) → void {}
-  method named({covariant-by-declaration core::int* a = #C1, core::int* b = #C1, covariant-by-declaration core::int* c = #C1, core::int* d = #C1}) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method positional(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
+  method optional([covariant-by-declaration core::int? a = #C1, core::int? b = #C1, covariant-by-declaration core::int? c = #C1, core::int? d = #C1]) → void {}
+  method named({covariant-by-declaration core::int? a = #C1, core::int? b = #C1, covariant-by-declaration core::int? c = #C1, core::int? d = #C1}) → void {}
 }
 class Inherited extends self::Direct {
-  synthetic constructor •() → self::Inherited*
+  synthetic constructor •() → self::Inherited
     : super self::Direct::•()
     ;
 }
 class Override1 extends core::Object {
-  synthetic constructor •() → self::Override1*
+  synthetic constructor •() → self::Override1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Override2 extends self::Override1 {
-  synthetic constructor •() → self::Override2*
+  synthetic constructor •() → self::Override2
     : super self::Override1::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void {}
+  method method(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 class Override3 extends self::Override2 {
-  synthetic constructor •() → self::Override3*
+  synthetic constructor •() → self::Override3
     : super self::Override2::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void {}
+  method method(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 abstract class Implement1 extends core::Object {
-  synthetic constructor •() → self::Implement1*
+  synthetic constructor •() → self::Implement1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Implement2 extends core::Object {
-  synthetic constructor •() → self::Implement2*
+  synthetic constructor •() → self::Implement2
     : super core::Object::•()
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, covariant-by-declaration core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Implement3 extends core::Object {
-  synthetic constructor •() → self::Implement3*
+  synthetic constructor •() → self::Implement3
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 class Implement4 extends core::Object implements self::Implement3 {
-  synthetic constructor •() → self::Implement4*
+  synthetic constructor •() → self::Implement4
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, core::int? e) → void {}
 }
 class Implement5 extends core::Object implements self::Implement1, self::Implement2, self::Implement4 {
-  synthetic constructor •() → self::Implement5*
+  synthetic constructor •() → self::Implement5
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → 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 method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void {}
 }
 class Interface1 extends core::Object {
-  synthetic constructor •() → self::Interface1*
+  synthetic constructor •() → self::Interface1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     : super core::Object::•()
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, covariant-by-declaration core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Mixin1 extends core::Object {
-  synthetic constructor •() → self::Mixin1*
+  synthetic constructor •() → self::Mixin1
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 class Mixin2 extends core::Object {
-  synthetic constructor •() → self::Mixin2*
+  synthetic constructor •() → self::Mixin2
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, core::int* c, covariant-by-declaration core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, core::int? c, covariant-by-declaration core::int? d, core::int? e) → void {}
 }
 class Superclass extends core::Object {
-  synthetic constructor •() → self::Superclass*
+  synthetic constructor •() → self::Superclass
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, core::int* c, core::int* d, covariant-by-declaration core::int* e) → 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 method(core::int? a, core::int? b, core::int? c, core::int? d, covariant-by-declaration core::int? e) → void {}
 }
 abstract class _Mixed&Superclass&Mixin1 = self::Superclass with self::Mixin1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Mixed&Superclass&Mixin1*
+  synthetic constructor •() → self::_Mixed&Superclass&Mixin1
     : super self::Superclass::•()
     ;
-  forwarding-stub method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin1::method}(a, b, c, d, e);
 }
 abstract class _Mixed&Superclass&Mixin1&Mixin2 = self::_Mixed&Superclass&Mixin1 with self::Mixin2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Mixed&Superclass&Mixin1&Mixin2*
+  synthetic constructor •() → self::_Mixed&Superclass&Mixin1&Mixin2
     : super self::_Mixed&Superclass&Mixin1::•()
     ;
-  forwarding-stub method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin2::method}(a, b, c, d, e);
 }
 class Mixed extends self::_Mixed&Superclass&Mixin1&Mixin2 implements self::Interface1, self::Interface2 {
-  synthetic constructor •() → self::Mixed*
+  synthetic constructor •() → self::Mixed
     : super self::_Mixed&Superclass&Mixin1&Mixin2::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin2::method}(a, b, c, d, e);
 }
 static method main() → void {
@@ -310,46 +160,46 @@
   self::testMixed();
 }
 static method testDirect() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Direct::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Direct::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
-  self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
-  self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Direct::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
-  self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
-  self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void positional = new self::Direct::•().{self::Direct::positional}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(positional is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(positional is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
+  ([core::int?, core::int?, core::int?, core::int?]) → void optional = new self::Direct::•().{self::Direct::optional}{([core::int?, core::int?, core::int?, core::int?]) → void};
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::int?, core::int?, core::int?, core::int?]) → void);
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::Object?, core::int?, core::Object?, core::int?]) → void);
+  ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void named = new self::Direct::•().{self::Direct::named}{({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void};
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void);
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void);
 }
 static method testInherited() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Inherited::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Inherited::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
-  self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
-  self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Inherited::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
-  self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
-  self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void positional = new self::Inherited::•().{self::Direct::positional}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(positional is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(positional is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
+  ([core::int?, core::int?, core::int?, core::int?]) → void optional = new self::Inherited::•().{self::Direct::optional}{([core::int?, core::int?, core::int?, core::int?]) → void};
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::int?, core::int?, core::int?, core::int?]) → void);
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::Object?, core::int?, core::Object?, core::int?]) → void);
+  ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void named = new self::Inherited::•().{self::Direct::named}{({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void};
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void);
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void);
 }
 static method testOverridden() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method2 = new self::Override2::•().{self::Override2::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method2 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method2 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method3 = new self::Override3::•().{self::Override3::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method3 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method3 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method2 = new self::Override2::•().{self::Override2::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method2 is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method2 is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method3 = new self::Override3::•().{self::Override3::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method3 is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method3 is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
 }
 static method testImplemented() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Implement5::•().{self::Implement5::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method = new self::Implement5::•().{self::Implement5::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void);
 }
 static method testMixed() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Mixed::•().{self::Mixed::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method = new self::Mixed::•().{self::Mixed::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void);
 }
-static method isTrue(core::bool* value) → void {
+static method isTrue(core::bool value) → void {
   if(!value)
     throw "Expected true";
 }
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.outline.expect
index cb1a866..40e7e6a 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.outline.expect
@@ -1,304 +1,154 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef TakeInts = (core::int*, core::int*, core::int*, core::int*, core::int*) →* void;
-typedef TakeObjectsAndInts = (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void;
-typedef TakeObjects = (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void;
-typedef TakeOptionalInts = ([core::int*, core::int*, core::int*, core::int*]) →* void;
-typedef TakeOptionalObjectsAndInts = ([core::Object*, core::int*, core::Object*, core::int*]) →* void;
-typedef TakeNamedInts = ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void;
-typedef TakeNamedObjectsAndInts = ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void;
+typedef TakeInts = (core::int?, core::int?, core::int?, core::int?, core::int?) → void;
+typedef TakeObjectsAndInts = (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void;
+typedef TakeObjects = (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void;
+typedef TakeOptionalInts = ([core::int?, core::int?, core::int?, core::int?]) → void;
+typedef TakeOptionalObjectsAndInts = ([core::Object?, core::int?, core::Object?, core::int?]) → void;
+typedef TakeNamedInts = ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void;
+typedef TakeNamedObjectsAndInts = ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void;
 class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b) → dynamic
+  method method(covariant-by-declaration core::int? a, core::int? b) → 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 M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b) → dynamic
+  method method(core::int? a, covariant-by-declaration core::int? b) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _C&Object&M1 = core::Object with self::M1 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1*
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
-  mixin-super-stub method method(covariant-by-declaration core::int* a, core::int* b) → dynamic
+  mixin-super-stub method method(covariant-by-declaration core::int? a, core::int? b) → dynamic
     return super.{self::M1::method}(a, 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
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1&M2*
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b) → dynamic
+  forwarding-stub method method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b) → dynamic
     return super.{self::M2::method}(a, b);
 }
 class C extends self::_C&Object&M1&M2 {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
 }
 class Direct extends core::Object {
-  synthetic constructor •() → self::Direct*
+  synthetic constructor •() → self::Direct
     ;
-  method positional(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void
+  method positional(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void
     ;
-  method optional([covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d]) → void
+  method optional([covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d]) → void
     ;
-  method named({covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d}) → void
+  method named({covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d}) → 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 Inherited extends self::Direct {
-  synthetic constructor •() → self::Inherited*
+  synthetic constructor •() → self::Inherited
     ;
 }
 class Override1 extends core::Object {
-  synthetic constructor •() → self::Override1*
+  synthetic constructor •() → self::Override1
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void
+  method method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → 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 Override2 extends self::Override1 {
-  synthetic constructor •() → self::Override2*
+  synthetic constructor •() → self::Override2
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void
+  method method(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void
     ;
 }
 class Override3 extends self::Override2 {
-  synthetic constructor •() → self::Override3*
+  synthetic constructor •() → self::Override3
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void
+  method method(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void
     ;
 }
 abstract class Implement1 extends core::Object {
-  synthetic constructor •() → self::Implement1*
+  synthetic constructor •() → self::Implement1
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void
+  method method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → 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 Implement2 extends core::Object {
-  synthetic constructor •() → self::Implement2*
+  synthetic constructor •() → self::Implement2
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b, core::int* c, core::int* d, core::int* e) → void
+  method method(core::int? a, covariant-by-declaration core::int? b, core::int? c, core::int? d, core::int? e) → 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 Implement3 extends core::Object {
-  synthetic constructor •() → self::Implement3*
+  synthetic constructor •() → self::Implement3
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void
+  method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → 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 Implement4 extends core::Object implements self::Implement3 {
-  synthetic constructor •() → self::Implement4*
+  synthetic constructor •() → self::Implement4
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, core::int* e) → void
+  method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, core::int? e) → 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 Implement5 extends core::Object implements self::Implement1, self::Implement2, self::Implement4 {
-  synthetic constructor •() → self::Implement5*
+  synthetic constructor •() → self::Implement5
     ;
-  method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → void
+  method method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → 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 Interface1 extends core::Object {
-  synthetic constructor •() → self::Interface1*
+  synthetic constructor •() → self::Interface1
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → void
+  method method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → 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 Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b, core::int* c, core::int* d, core::int* e) → void
+  method method(core::int? a, covariant-by-declaration core::int? b, core::int? c, core::int? d, core::int? e) → 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 Mixin1 extends core::Object {
-  synthetic constructor •() → self::Mixin1*
+  synthetic constructor •() → self::Mixin1
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void
+  method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → 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 Mixin2 extends core::Object {
-  synthetic constructor •() → self::Mixin2*
+  synthetic constructor •() → self::Mixin2
     ;
-  method method(core::int* a, core::int* b, core::int* c, covariant-by-declaration core::int* d, core::int* e) → void
+  method method(core::int? a, core::int? b, core::int? c, covariant-by-declaration core::int? d, core::int? e) → 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 Superclass extends core::Object {
-  synthetic constructor •() → self::Superclass*
+  synthetic constructor •() → self::Superclass
     ;
-  method method(core::int* a, core::int* b, core::int* c, core::int* d, covariant-by-declaration core::int* e) → void
+  method method(core::int? a, core::int? b, core::int? c, core::int? d, covariant-by-declaration core::int? e) → 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 _Mixed&Superclass&Mixin1 = self::Superclass with self::Mixin1 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Mixed&Superclass&Mixin1*
+  synthetic constructor •() → self::_Mixed&Superclass&Mixin1
     : super self::Superclass::•()
     ;
-  forwarding-stub method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin1::method}(a, b, c, d, e);
 }
 abstract class _Mixed&Superclass&Mixin1&Mixin2 = self::_Mixed&Superclass&Mixin1 with self::Mixin2 /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Mixed&Superclass&Mixin1&Mixin2*
+  synthetic constructor •() → self::_Mixed&Superclass&Mixin1&Mixin2
     : super self::_Mixed&Superclass&Mixin1::•()
     ;
-  forwarding-stub method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin2::method}(a, b, c, d, e);
 }
 class Mixed extends self::_Mixed&Superclass&Mixin1&Mixin2 implements self::Interface1, self::Interface2 {
-  synthetic constructor •() → self::Mixed*
+  synthetic constructor •() → self::Mixed
     ;
-  forwarding-stub method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin2::method}(a, b, c, d, e);
 }
 static method main() → void
@@ -313,5 +163,5 @@
   ;
 static method testMixed() → void
   ;
-static method isTrue(core::bool* value) → void
+static method isTrue(core::bool value) → void
   ;
diff --git a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.transformed.expect
index 29fba4a..89e3789 100644
--- a/pkg/front_end/testcases/general/mixin_covariant.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant.dart.weak.transformed.expect
@@ -1,301 +1,151 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-typedef TakeInts = (core::int*, core::int*, core::int*, core::int*, core::int*) →* void;
-typedef TakeObjectsAndInts = (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void;
-typedef TakeObjects = (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void;
-typedef TakeOptionalInts = ([core::int*, core::int*, core::int*, core::int*]) →* void;
-typedef TakeOptionalObjectsAndInts = ([core::Object*, core::int*, core::Object*, core::int*]) →* void;
-typedef TakeNamedInts = ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void;
-typedef TakeNamedObjectsAndInts = ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void;
+typedef TakeInts = (core::int?, core::int?, core::int?, core::int?, core::int?) → void;
+typedef TakeObjectsAndInts = (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void;
+typedef TakeObjects = (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void;
+typedef TakeOptionalInts = ([core::int?, core::int?, core::int?, core::int?]) → void;
+typedef TakeOptionalObjectsAndInts = ([core::Object?, core::int?, core::Object?, core::int?]) → void;
+typedef TakeNamedInts = ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void;
+typedef TakeNamedObjectsAndInts = ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void;
 class M1 extends core::Object {
-  synthetic constructor •() → self::M1*
+  synthetic constructor •() → self::M1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method method(covariant-by-declaration core::int? a, core::int? b) → dynamic {}
 }
 class M2 extends core::Object {
-  synthetic constructor •() → self::M2*
+  synthetic constructor •() → self::M2
     : super core::Object::•()
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method method(core::int? a, covariant-by-declaration core::int? b) → dynamic {}
 }
 abstract class _C&Object&M1 extends core::Object implements self::M1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1*
+  const synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b) → dynamic {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method method(covariant-by-declaration core::int? a, core::int? b) → dynamic {}
 }
 abstract class _C&Object&M1&M2 extends self::_C&Object&M1 implements self::M2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_C&Object&M1&M2*
+  const synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
-  method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b) → dynamic {}
+  method method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b) → dynamic {}
 }
 class C extends self::_C&Object&M1&M2 {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super self::_C&Object&M1&M2::•()
     ;
 }
 class Direct extends core::Object {
-  synthetic constructor •() → self::Direct*
+  synthetic constructor •() → self::Direct
     : super core::Object::•()
     ;
-  method positional(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void {}
-  method optional([covariant-by-declaration core::int* a = #C1, core::int* b = #C1, covariant-by-declaration core::int* c = #C1, core::int* d = #C1]) → void {}
-  method named({covariant-by-declaration core::int* a = #C1, core::int* b = #C1, covariant-by-declaration core::int* c = #C1, core::int* d = #C1}) → void {}
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  method positional(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
+  method optional([covariant-by-declaration core::int? a = #C1, core::int? b = #C1, covariant-by-declaration core::int? c = #C1, core::int? d = #C1]) → void {}
+  method named({covariant-by-declaration core::int? a = #C1, core::int? b = #C1, covariant-by-declaration core::int? c = #C1, core::int? d = #C1}) → void {}
 }
 class Inherited extends self::Direct {
-  synthetic constructor •() → self::Inherited*
+  synthetic constructor •() → self::Inherited
     : super self::Direct::•()
     ;
 }
 class Override1 extends core::Object {
-  synthetic constructor •() → self::Override1*
+  synthetic constructor •() → self::Override1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Override2 extends self::Override1 {
-  synthetic constructor •() → self::Override2*
+  synthetic constructor •() → self::Override2
     : super self::Override1::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void {}
+  method method(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 class Override3 extends self::Override2 {
-  synthetic constructor •() → self::Override3*
+  synthetic constructor •() → self::Override3
     : super self::Override2::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → void {}
+  method method(covariant-by-declaration core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 abstract class Implement1 extends core::Object {
-  synthetic constructor •() → self::Implement1*
+  synthetic constructor •() → self::Implement1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Implement2 extends core::Object {
-  synthetic constructor •() → self::Implement2*
+  synthetic constructor •() → self::Implement2
     : super core::Object::•()
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, covariant-by-declaration core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Implement3 extends core::Object {
-  synthetic constructor •() → self::Implement3*
+  synthetic constructor •() → self::Implement3
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 class Implement4 extends core::Object implements self::Implement3 {
-  synthetic constructor •() → self::Implement4*
+  synthetic constructor •() → self::Implement4
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, core::int? e) → void {}
 }
 class Implement5 extends core::Object implements self::Implement1, self::Implement2, self::Implement4 {
-  synthetic constructor •() → self::Implement5*
+  synthetic constructor •() → self::Implement5
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → 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 method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void {}
 }
 class Interface1 extends core::Object {
-  synthetic constructor •() → self::Interface1*
+  synthetic constructor •() → self::Interface1
     : super core::Object::•()
     ;
-  method method(covariant-by-declaration core::int* a, core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(covariant-by-declaration core::int? a, core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Interface2 extends core::Object {
-  synthetic constructor •() → self::Interface2*
+  synthetic constructor •() → self::Interface2
     : super core::Object::•()
     ;
-  method method(core::int* a, covariant-by-declaration core::int* b, core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, covariant-by-declaration core::int? b, core::int? c, core::int? d, core::int? e) → void {}
 }
 class Mixin1 extends core::Object {
-  synthetic constructor •() → self::Mixin1*
+  synthetic constructor •() → self::Mixin1
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, core::int? e) → void {}
 }
 class Mixin2 extends core::Object {
-  synthetic constructor •() → self::Mixin2*
+  synthetic constructor •() → self::Mixin2
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, core::int* c, covariant-by-declaration core::int* d, core::int* e) → 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 method(core::int? a, core::int? b, core::int? c, covariant-by-declaration core::int? d, core::int? e) → void {}
 }
 class Superclass extends core::Object {
-  synthetic constructor •() → self::Superclass*
+  synthetic constructor •() → self::Superclass
     : super core::Object::•()
     ;
-  method method(core::int* a, core::int* b, core::int* c, core::int* d, covariant-by-declaration core::int* e) → 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 method(core::int? a, core::int? b, core::int? c, core::int? d, covariant-by-declaration core::int? e) → void {}
 }
 abstract class _Mixed&Superclass&Mixin1 extends self::Superclass implements self::Mixin1 /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •() → self::_Mixed&Superclass&Mixin1*
+  synthetic constructor •() → self::_Mixed&Superclass&Mixin1
     : super self::Superclass::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, core::int* d, covariant-by-declaration core::int* e) → void {}
+  method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, core::int? d, covariant-by-declaration core::int? e) → void {}
 }
 abstract class _Mixed&Superclass&Mixin1&Mixin2 extends self::_Mixed&Superclass&Mixin1 implements self::Mixin2 /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •() → self::_Mixed&Superclass&Mixin1&Mixin2*
+  synthetic constructor •() → self::_Mixed&Superclass&Mixin1&Mixin2
     : super self::_Mixed&Superclass&Mixin1::•()
     ;
-  method method(core::int* a, core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → void {}
+  method method(core::int? a, core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void {}
 }
 class Mixed extends self::_Mixed&Superclass&Mixin1&Mixin2 implements self::Interface1, self::Interface2 {
-  synthetic constructor •() → self::Mixed*
+  synthetic constructor •() → self::Mixed
     : super self::_Mixed&Superclass&Mixin1&Mixin2::•()
     ;
-  forwarding-stub method method(covariant-by-declaration core::int* a, covariant-by-declaration core::int* b, covariant-by-declaration core::int* c, covariant-by-declaration core::int* d, covariant-by-declaration core::int* e) → void
+  forwarding-stub method method(covariant-by-declaration core::int? a, covariant-by-declaration core::int? b, covariant-by-declaration core::int? c, covariant-by-declaration core::int? d, covariant-by-declaration core::int? e) → void
     return super.{self::Mixin2::method}(a, b, c, d, e);
 }
 static method main() → void {
@@ -306,46 +156,46 @@
   self::testMixed();
 }
 static method testDirect() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Direct::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Direct::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
-  self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
-  self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Direct::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
-  self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
-  self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void positional = new self::Direct::•().{self::Direct::positional}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(positional is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(positional is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
+  ([core::int?, core::int?, core::int?, core::int?]) → void optional = new self::Direct::•().{self::Direct::optional}{([core::int?, core::int?, core::int?, core::int?]) → void};
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::int?, core::int?, core::int?, core::int?]) → void);
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::Object?, core::int?, core::Object?, core::int?]) → void);
+  ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void named = new self::Direct::•().{self::Direct::named}{({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void};
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void);
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void);
 }
 static method testInherited() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void positional = new self::Inherited::•().{self::Direct::positional}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(positional is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(positional is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  ([core::int*, core::int*, core::int*, core::int*]) →* void optional = new self::Inherited::•().{self::Direct::optional}{([core::int*, core::int*, core::int*, core::int*]) →* void};
-  self::isTrue(optional is ([core::int*, core::int*, core::int*, core::int*]) →* void);
-  self::isTrue(optional is ([core::Object*, core::int*, core::Object*, core::int*]) →* void);
-  ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void named = new self::Inherited::•().{self::Direct::named}{({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void};
-  self::isTrue(named is ({a: core::int*, b: core::int*, c: core::int*, d: core::int*}) →* void);
-  self::isTrue(named is ({a: core::Object*, b: core::int*, c: core::Object*, d: core::int*}) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void positional = new self::Inherited::•().{self::Direct::positional}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(positional is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(positional is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
+  ([core::int?, core::int?, core::int?, core::int?]) → void optional = new self::Inherited::•().{self::Direct::optional}{([core::int?, core::int?, core::int?, core::int?]) → void};
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::int?, core::int?, core::int?, core::int?]) → void);
+  self::isTrue(optional is{ForNonNullableByDefault} ([core::Object?, core::int?, core::Object?, core::int?]) → void);
+  ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void named = new self::Inherited::•().{self::Direct::named}{({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void};
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::int?, b: core::int?, c: core::int?, d: core::int?}) → void);
+  self::isTrue(named is{ForNonNullableByDefault} ({a: core::Object?, b: core::int?, c: core::Object?, d: core::int?}) → void);
 }
 static method testOverridden() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method2 = new self::Override2::•().{self::Override2::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method2 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method2 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method3 = new self::Override3::•().{self::Override3::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method3 is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method3 is (core::Object*, core::int*, core::Object*, core::int*, core::int*) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method2 = new self::Override2::•().{self::Override2::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method2 is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method2 is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method3 = new self::Override3::•().{self::Override3::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method3 is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method3 is{ForNonNullableByDefault} (core::Object?, core::int?, core::Object?, core::int?, core::int?) → void);
 }
 static method testImplemented() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Implement5::•().{self::Implement5::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method = new self::Implement5::•().{self::Implement5::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void);
 }
 static method testMixed() → void {
-  (core::int*, core::int*, core::int*, core::int*, core::int*) →* void method = new self::Mixed::•().{self::Mixed::method}{(core::int*, core::int*, core::int*, core::int*, core::int*) →* void};
-  self::isTrue(method is (core::int*, core::int*, core::int*, core::int*, core::int*) →* void);
-  self::isTrue(method is (core::Object*, core::Object*, core::Object*, core::Object*, core::Object*) →* void);
+  (core::int?, core::int?, core::int?, core::int?, core::int?) → void method = new self::Mixed::•().{self::Mixed::method}{(core::int?, core::int?, core::int?, core::int?, core::int?) → void};
+  self::isTrue(method is{ForNonNullableByDefault} (core::int?, core::int?, core::int?, core::int?, core::int?) → void);
+  self::isTrue(method is{ForNonNullableByDefault} (core::Object?, core::Object?, core::Object?, core::Object?, core::Object?) → void);
 }
-static method isTrue(core::bool* value) → void {
+static method isTrue(core::bool value) → void {
   if(!value)
     throw "Expected true";
 }
diff --git a/pkg/front_end/testcases/general/mixin_covariant2.dart b/pkg/front_end/testcases/general/mixin_covariant2.dart
index 51720ec..8454114 100644
--- a/pkg/front_end/testcases/general/mixin_covariant2.dart
+++ b/pkg/front_end/testcases/general/mixin_covariant2.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 class Superclass {
   String method1(num argument1, num argument2) => "Superclass";
   String method2(num argument1, num argument2) => "Superclass";
diff --git a/pkg/front_end/testcases/general/mixin_covariant2.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_covariant2.dart.textual_outline.expect
index 4e542eb..6f22d96 100644
--- a/pkg/front_end/testcases/general/mixin_covariant2.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant2.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Superclass {
   String method1(num argument1, num argument2) => "Superclass";
   String method2(num argument1, num argument2) => "Superclass";
diff --git a/pkg/front_end/testcases/general/mixin_covariant2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_covariant2.dart.textual_outline_modelled.expect
index ba9c54c..9f3d0b4 100644
--- a/pkg/front_end/testcases/general/mixin_covariant2.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant2.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Class extends Superclass with Mixin {}
 
 class Mixin {
diff --git a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.expect b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.expect
index 8a65e36..ebd8305 100644
--- a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.expect
@@ -1,98 +1,78 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Superclass extends core::Object {
-  synthetic constructor •() → self::Superclass*
+  synthetic constructor •() → self::Superclass
     : super core::Object::•()
     ;
-  method method1(core::num* argument1, core::num* argument2) → core::String*
+  method method1(core::num argument1, core::num argument2) → core::String
     return "Superclass";
-  method method2(core::num* argument1, core::num* argument2) → core::String*
+  method method2(core::num argument1, core::num argument2) → core::String
     return "Superclass";
-  method method3(core::num* argument1, covariant-by-declaration core::int* argument2) → core::String*
+  method method3(core::num argument1, covariant-by-declaration core::int argument2) → core::String
     return "Superclass";
-  method method4(core::num* argument1, covariant-by-declaration core::num* argument2) → core::String*
+  method method4(core::num argument1, covariant-by-declaration core::num argument2) → core::String
     return "Superclass";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : super core::Object::•()
     ;
-  method method1(core::num* argument1, core::num* argument2) → core::String*
+  method method1(core::num argument1, core::num argument2) → core::String
     return "Mixin";
-  method method2(covariant-by-declaration core::int* argument1, core::num* argument2) → core::String*
+  method method2(covariant-by-declaration core::int argument1, core::num argument2) → core::String
     return "Mixin";
-  method method3(core::num* argument1, core::num* argument2) → core::String*
+  method method3(core::num argument1, core::num argument2) → core::String
     return "Mixin";
-  method method4(covariant-by-declaration core::int* argument1, core::int* argument2) → core::String*
+  method method4(covariant-by-declaration core::int argument1, core::int argument2) → core::String
     return "Mixin";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _Class&Superclass&Mixin = self::Superclass with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Class&Superclass&Mixin*
+  synthetic constructor •() → self::_Class&Superclass&Mixin
     : super self::Superclass::•()
     ;
-  mixin-super-stub method method1(core::num* argument1, core::num* argument2) → core::String*
+  mixin-super-stub method method1(core::num argument1, core::num argument2) → core::String
     return super.{self::Mixin::method1}(argument1, argument2);
-  mixin-super-stub method method2(covariant-by-declaration core::int* argument1, core::num* argument2) → core::String*
+  mixin-super-stub method method2(covariant-by-declaration core::int argument1, core::num argument2) → core::String
     return super.{self::Mixin::method2}(argument1, argument2);
-  forwarding-stub method method3(core::num* argument1, covariant-by-declaration core::num* argument2) → core::String*
+  forwarding-stub method method3(core::num argument1, covariant-by-declaration core::num argument2) → core::String
     return super.{self::Mixin::method3}(argument1, argument2);
-  forwarding-stub method method4(covariant-by-declaration core::int* argument1, covariant-by-declaration core::int* argument2) → core::String*
+  forwarding-stub method method4(covariant-by-declaration core::int argument1, covariant-by-declaration core::int argument2) → core::String
     return super.{self::Mixin::method4}(argument1, argument2);
 }
 class Class extends self::_Class&Superclass&Mixin {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super self::_Class&Superclass&Mixin::•()
     ;
 }
 static method main() → dynamic {
-  self::Class* c = new self::Class::•();
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
-  self::Superclass* s = c;
-  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method2}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1){(core::num*, core::int*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method4}(0.5, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5){(core::num*, core::num*) →* core::String*});
-  self::Mixin* m = c;
-  self::expect("Mixin", m.{self::Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
+  self::Class c = new self::Class::•();
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1){(core::int, core::num) → core::String});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1){(core::int, core::int) → core::String});
+  self::Superclass s = c;
+  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5){(core::num, core::num) → core::String});
+  self::throws(() → void => s.{self::Superclass::method2}(0.5, 1.5){(core::num, core::num) → core::String});
+  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1){(core::num, core::int) → core::String});
+  self::throws(() → void => s.{self::Superclass::method4}(0.5, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5){(core::num, core::num) → core::String});
+  self::Mixin m = c;
+  self::expect("Mixin", m.{self::Mixin::method1}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", m.{self::Mixin::method2}(0, 1){(core::int, core::num) → core::String});
+  self::expect("Mixin", m.{self::Mixin::method3}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", m.{self::Mixin::method4}(0, 1){(core::int, core::int) → core::String});
 }
 static method expect(dynamic expected, dynamic actual) → void {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
     throw "Expected ${expected}, actual ${actual}";
 }
-static method throws(() →* void f) → void {
+static method throws(() → void f) → void {
   try {
-    f(){() →* void};
+    f(){() → void};
   }
-  on dynamic catch(final dynamic _) {
+  on core::Object catch(final core::Object _) {
     return;
   }
   throw "Expected exception";
diff --git a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.modular.expect
index 8a65e36..ebd8305 100644
--- a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.modular.expect
@@ -1,98 +1,78 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Superclass extends core::Object {
-  synthetic constructor •() → self::Superclass*
+  synthetic constructor •() → self::Superclass
     : super core::Object::•()
     ;
-  method method1(core::num* argument1, core::num* argument2) → core::String*
+  method method1(core::num argument1, core::num argument2) → core::String
     return "Superclass";
-  method method2(core::num* argument1, core::num* argument2) → core::String*
+  method method2(core::num argument1, core::num argument2) → core::String
     return "Superclass";
-  method method3(core::num* argument1, covariant-by-declaration core::int* argument2) → core::String*
+  method method3(core::num argument1, covariant-by-declaration core::int argument2) → core::String
     return "Superclass";
-  method method4(core::num* argument1, covariant-by-declaration core::num* argument2) → core::String*
+  method method4(core::num argument1, covariant-by-declaration core::num argument2) → core::String
     return "Superclass";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : super core::Object::•()
     ;
-  method method1(core::num* argument1, core::num* argument2) → core::String*
+  method method1(core::num argument1, core::num argument2) → core::String
     return "Mixin";
-  method method2(covariant-by-declaration core::int* argument1, core::num* argument2) → core::String*
+  method method2(covariant-by-declaration core::int argument1, core::num argument2) → core::String
     return "Mixin";
-  method method3(core::num* argument1, core::num* argument2) → core::String*
+  method method3(core::num argument1, core::num argument2) → core::String
     return "Mixin";
-  method method4(covariant-by-declaration core::int* argument1, core::int* argument2) → core::String*
+  method method4(covariant-by-declaration core::int argument1, core::int argument2) → core::String
     return "Mixin";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _Class&Superclass&Mixin = self::Superclass with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Class&Superclass&Mixin*
+  synthetic constructor •() → self::_Class&Superclass&Mixin
     : super self::Superclass::•()
     ;
-  mixin-super-stub method method1(core::num* argument1, core::num* argument2) → core::String*
+  mixin-super-stub method method1(core::num argument1, core::num argument2) → core::String
     return super.{self::Mixin::method1}(argument1, argument2);
-  mixin-super-stub method method2(covariant-by-declaration core::int* argument1, core::num* argument2) → core::String*
+  mixin-super-stub method method2(covariant-by-declaration core::int argument1, core::num argument2) → core::String
     return super.{self::Mixin::method2}(argument1, argument2);
-  forwarding-stub method method3(core::num* argument1, covariant-by-declaration core::num* argument2) → core::String*
+  forwarding-stub method method3(core::num argument1, covariant-by-declaration core::num argument2) → core::String
     return super.{self::Mixin::method3}(argument1, argument2);
-  forwarding-stub method method4(covariant-by-declaration core::int* argument1, covariant-by-declaration core::int* argument2) → core::String*
+  forwarding-stub method method4(covariant-by-declaration core::int argument1, covariant-by-declaration core::int argument2) → core::String
     return super.{self::Mixin::method4}(argument1, argument2);
 }
 class Class extends self::_Class&Superclass&Mixin {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super self::_Class&Superclass&Mixin::•()
     ;
 }
 static method main() → dynamic {
-  self::Class* c = new self::Class::•();
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
-  self::Superclass* s = c;
-  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method2}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1){(core::num*, core::int*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method4}(0.5, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5){(core::num*, core::num*) →* core::String*});
-  self::Mixin* m = c;
-  self::expect("Mixin", m.{self::Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
+  self::Class c = new self::Class::•();
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1){(core::int, core::num) → core::String});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1){(core::int, core::int) → core::String});
+  self::Superclass s = c;
+  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5){(core::num, core::num) → core::String});
+  self::throws(() → void => s.{self::Superclass::method2}(0.5, 1.5){(core::num, core::num) → core::String});
+  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1){(core::num, core::int) → core::String});
+  self::throws(() → void => s.{self::Superclass::method4}(0.5, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5){(core::num, core::num) → core::String});
+  self::Mixin m = c;
+  self::expect("Mixin", m.{self::Mixin::method1}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", m.{self::Mixin::method2}(0, 1){(core::int, core::num) → core::String});
+  self::expect("Mixin", m.{self::Mixin::method3}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", m.{self::Mixin::method4}(0, 1){(core::int, core::int) → core::String});
 }
 static method expect(dynamic expected, dynamic actual) → void {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
     throw "Expected ${expected}, actual ${actual}";
 }
-static method throws(() →* void f) → void {
+static method throws(() → void f) → void {
   try {
-    f(){() →* void};
+    f(){() → void};
   }
-  on dynamic catch(final dynamic _) {
+  on core::Object catch(final core::Object _) {
     return;
   }
   throw "Expected exception";
diff --git a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.outline.expect
index 64d87c4..a2ed6ce 100644
--- a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.outline.expect
@@ -1,71 +1,51 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Superclass extends core::Object {
-  synthetic constructor •() → self::Superclass*
+  synthetic constructor •() → self::Superclass
     ;
-  method method1(core::num* argument1, core::num* argument2) → core::String*
+  method method1(core::num argument1, core::num argument2) → core::String
     ;
-  method method2(core::num* argument1, core::num* argument2) → core::String*
+  method method2(core::num argument1, core::num argument2) → core::String
     ;
-  method method3(core::num* argument1, covariant-by-declaration core::int* argument2) → core::String*
+  method method3(core::num argument1, covariant-by-declaration core::int argument2) → core::String
     ;
-  method method4(core::num* argument1, covariant-by-declaration core::num* argument2) → core::String*
+  method method4(core::num argument1, covariant-by-declaration core::num argument2) → core::String
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     ;
-  method method1(core::num* argument1, core::num* argument2) → core::String*
+  method method1(core::num argument1, core::num argument2) → core::String
     ;
-  method method2(covariant-by-declaration core::int* argument1, core::num* argument2) → core::String*
+  method method2(covariant-by-declaration core::int argument1, core::num argument2) → core::String
     ;
-  method method3(core::num* argument1, core::num* argument2) → core::String*
+  method method3(core::num argument1, core::num argument2) → core::String
     ;
-  method method4(covariant-by-declaration core::int* argument1, core::int* argument2) → core::String*
+  method method4(covariant-by-declaration core::int argument1, core::int argument2) → core::String
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _Class&Superclass&Mixin = self::Superclass with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Class&Superclass&Mixin*
+  synthetic constructor •() → self::_Class&Superclass&Mixin
     : super self::Superclass::•()
     ;
-  mixin-super-stub method method1(core::num* argument1, core::num* argument2) → core::String*
+  mixin-super-stub method method1(core::num argument1, core::num argument2) → core::String
     return super.{self::Mixin::method1}(argument1, argument2);
-  mixin-super-stub method method2(covariant-by-declaration core::int* argument1, core::num* argument2) → core::String*
+  mixin-super-stub method method2(covariant-by-declaration core::int argument1, core::num argument2) → core::String
     return super.{self::Mixin::method2}(argument1, argument2);
-  forwarding-stub method method3(core::num* argument1, covariant-by-declaration core::num* argument2) → core::String*
+  forwarding-stub method method3(core::num argument1, covariant-by-declaration core::num argument2) → core::String
     return super.{self::Mixin::method3}(argument1, argument2);
-  forwarding-stub method method4(covariant-by-declaration core::int* argument1, covariant-by-declaration core::int* argument2) → core::String*
+  forwarding-stub method method4(covariant-by-declaration core::int argument1, covariant-by-declaration core::int argument2) → core::String
     return super.{self::Mixin::method4}(argument1, argument2);
 }
 class Class extends self::_Class&Superclass&Mixin {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     ;
 }
 static method main() → dynamic
   ;
 static method expect(dynamic expected, dynamic actual) → void
   ;
-static method throws(() →* void f) → void
+static method throws(() → void f) → void
   ;
diff --git a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.transformed.expect
index 11ed4b8..2122e28 100644
--- a/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_covariant2.dart.weak.transformed.expect
@@ -1,98 +1,78 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Superclass extends core::Object {
-  synthetic constructor •() → self::Superclass*
+  synthetic constructor •() → self::Superclass
     : super core::Object::•()
     ;
-  method method1(core::num* argument1, core::num* argument2) → core::String*
+  method method1(core::num argument1, core::num argument2) → core::String
     return "Superclass";
-  method method2(core::num* argument1, core::num* argument2) → core::String*
+  method method2(core::num argument1, core::num argument2) → core::String
     return "Superclass";
-  method method3(core::num* argument1, covariant-by-declaration core::int* argument2) → core::String*
+  method method3(core::num argument1, covariant-by-declaration core::int argument2) → core::String
     return "Superclass";
-  method method4(core::num* argument1, covariant-by-declaration core::num* argument2) → core::String*
+  method method4(core::num argument1, covariant-by-declaration core::num argument2) → core::String
     return "Superclass";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Mixin extends core::Object {
-  synthetic constructor •() → self::Mixin*
+  synthetic constructor •() → self::Mixin
     : super core::Object::•()
     ;
-  method method1(core::num* argument1, core::num* argument2) → core::String*
+  method method1(core::num argument1, core::num argument2) → core::String
     return "Mixin";
-  method method2(covariant-by-declaration core::int* argument1, core::num* argument2) → core::String*
+  method method2(covariant-by-declaration core::int argument1, core::num argument2) → core::String
     return "Mixin";
-  method method3(core::num* argument1, core::num* argument2) → core::String*
+  method method3(core::num argument1, core::num argument2) → core::String
     return "Mixin";
-  method method4(covariant-by-declaration core::int* argument1, core::int* argument2) → core::String*
+  method method4(covariant-by-declaration core::int argument1, core::int argument2) → core::String
     return "Mixin";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _Class&Superclass&Mixin extends self::Superclass implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •() → self::_Class&Superclass&Mixin*
+  synthetic constructor •() → self::_Class&Superclass&Mixin
     : super self::Superclass::•()
     ;
-  method method1(core::num* argument1, core::num* argument2) → core::String*
+  method method1(core::num argument1, core::num argument2) → core::String
     return "Mixin";
-  method method2(covariant-by-declaration core::int* argument1, core::num* argument2) → core::String*
+  method method2(covariant-by-declaration core::int argument1, core::num argument2) → core::String
     return "Mixin";
-  method method3(core::num* argument1, covariant-by-declaration core::num* argument2) → core::String*
+  method method3(core::num argument1, covariant-by-declaration core::num argument2) → core::String
     return "Mixin";
-  method method4(covariant-by-declaration core::int* argument1, covariant-by-declaration core::int* argument2) → core::String*
+  method method4(covariant-by-declaration core::int argument1, covariant-by-declaration core::int argument2) → core::String
     return "Mixin";
 }
 class Class extends self::_Class&Superclass&Mixin {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super self::_Class&Superclass&Mixin::•()
     ;
 }
 static method main() → dynamic {
-  self::Class* c = new self::Class::•();
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
-  self::Superclass* s = c;
-  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method2}(0.5, 1.5){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1){(core::num*, core::int*) →* core::String*});
-  self::throws(() → core::String* => s.{self::Superclass::method4}(0.5, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5){(core::num*, core::num*) →* core::String*});
-  self::Mixin* m = c;
-  self::expect("Mixin", m.{self::Mixin::method1}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method2}(0, 1){(core::int*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method3}(0, 1){(core::num*, core::num*) →* core::String*});
-  self::expect("Mixin", m.{self::Mixin::method4}(0, 1){(core::int*, core::int*) →* core::String*});
+  self::Class c = new self::Class::•();
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method1}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method2}(0, 1){(core::int, core::num) → core::String});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method3}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", c.{self::_Class&Superclass&Mixin::method4}(0, 1){(core::int, core::int) → core::String});
+  self::Superclass s = c;
+  self::expect("Mixin", s.{self::Superclass::method1}(0.5, 1.5){(core::num, core::num) → core::String});
+  self::throws(() → void => s.{self::Superclass::method2}(0.5, 1.5){(core::num, core::num) → core::String});
+  self::expect("Mixin", s.{self::Superclass::method3}(0.5, 1){(core::num, core::int) → core::String});
+  self::throws(() → void => s.{self::Superclass::method4}(0.5, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", s.{self::Superclass::method4}(1, 0.5){(core::num, core::num) → core::String});
+  self::Mixin m = c;
+  self::expect("Mixin", m.{self::Mixin::method1}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", m.{self::Mixin::method2}(0, 1){(core::int, core::num) → core::String});
+  self::expect("Mixin", m.{self::Mixin::method3}(0, 1){(core::num, core::num) → core::String});
+  self::expect("Mixin", m.{self::Mixin::method4}(0, 1){(core::int, core::int) → core::String});
 }
 static method expect(dynamic expected, dynamic actual) → void {
-  if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
+  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
     throw "Expected ${expected}, actual ${actual}";
 }
-static method throws(() →* void f) → void {
+static method throws(() → void f) → void {
   try {
-    f(){() →* void};
+    f(){() → void};
   }
-  on dynamic catch(final dynamic _) {
+  on core::Object catch(final core::Object _) {
     return;
   }
   throw "Expected exception";
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart
index 7e4d936..890f7b5 100644
--- a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field.dart
@@ -1,7 +1,9 @@
 // Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE.md file.
+
 // @dart=2.9
+
 class A {}
 
 class C<T extends A> {
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart
new file mode 100644
index 0000000..2cd6db2
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE.md file.
+
+class A {}
+
+class C<T extends A> {
+  late T _field;
+
+  foo(T x) {
+    _field = x;
+  }
+}
+
+class D extends C<B> {}
+
+class Foo extends Object with C<B> {}
+
+class B extends A {}
+
+main() {
+  var foo = new Foo();
+  foo.foo(new B());
+}
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline.expect
new file mode 100644
index 0000000..1c97b57
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline.expect
@@ -0,0 +1,14 @@
+class A {}
+
+class C<T extends A> {
+  late T _field;
+  foo(T x) {}
+}
+
+class D extends C<B> {}
+
+class Foo extends Object with C<B> {}
+
+class B extends A {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f367e69
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.textual_outline_modelled.expect
@@ -0,0 +1,12 @@
+class A {}
+class B extends A {}
+class C<T extends A> {
+  ---- unknown chunk starts ----
+late
+---- unknown chunk ends ----
+  T _field;
+  foo(T x) {}
+}
+class D extends C<B> {}
+class Foo extends Object with C<B> {}
+main() {}
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.expect
new file mode 100644
index 0000000..ef14d3e
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    : super core::Object::•()
+    ;
+}
+class C<T extends self::A> extends core::Object {
+  late covariant-by-class field self::C::T _field;
+  synthetic constructor •() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+  method foo(covariant-by-class self::C::T x) → dynamic {
+    this.{self::C::_field} = x;
+  }
+}
+class D extends self::C<self::B> {
+  synthetic constructor •() → self::D
+    : super self::C::•()
+    ;
+}
+abstract class _Foo&Object&C = core::Object with self::C<self::B> /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Foo&Object&C
+    : super core::Object::•()
+    ;
+  mixin-super-stub get _field() → self::B
+    return super.{self::C::_field};
+  mixin-super-stub set _field(covariant-by-class self::B value) → void
+    return super.{self::C::_field} = value;
+  mixin-super-stub method foo(covariant-by-class self::B x) → dynamic
+    return super.{self::C::foo}(x);
+}
+class Foo extends self::_Foo&Object&C {
+  synthetic constructor •() → self::Foo
+    : super self::_Foo&Object&C::•()
+    ;
+}
+class B extends self::A {
+  synthetic constructor •() → self::B
+    : super self::A::•()
+    ;
+}
+static method main() → dynamic {
+  self::Foo foo = new self::Foo::•();
+  foo.{self::_Foo&Object&C::foo}(new self::B::•()){(self::B) → dynamic};
+}
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.modular.expect
new file mode 100644
index 0000000..ef14d3e
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.modular.expect
@@ -0,0 +1,48 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    : super core::Object::•()
+    ;
+}
+class C<T extends self::A> extends core::Object {
+  late covariant-by-class field self::C::T _field;
+  synthetic constructor •() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+  method foo(covariant-by-class self::C::T x) → dynamic {
+    this.{self::C::_field} = x;
+  }
+}
+class D extends self::C<self::B> {
+  synthetic constructor •() → self::D
+    : super self::C::•()
+    ;
+}
+abstract class _Foo&Object&C = core::Object with self::C<self::B> /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Foo&Object&C
+    : super core::Object::•()
+    ;
+  mixin-super-stub get _field() → self::B
+    return super.{self::C::_field};
+  mixin-super-stub set _field(covariant-by-class self::B value) → void
+    return super.{self::C::_field} = value;
+  mixin-super-stub method foo(covariant-by-class self::B x) → dynamic
+    return super.{self::C::foo}(x);
+}
+class Foo extends self::_Foo&Object&C {
+  synthetic constructor •() → self::Foo
+    : super self::_Foo&Object&C::•()
+    ;
+}
+class B extends self::A {
+  synthetic constructor •() → self::B
+    : super self::A::•()
+    ;
+}
+static method main() → dynamic {
+  self::Foo foo = new self::Foo::•();
+  foo.{self::_Foo&Object&C::foo}(new self::B::•()){(self::B) → dynamic};
+}
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.outline.expect
new file mode 100644
index 0000000..9a6b3bb
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.outline.expect
@@ -0,0 +1,40 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    ;
+}
+class C<T extends self::A> extends core::Object {
+  late covariant-by-class field self::C::T _field;
+  synthetic constructor •() → self::C<self::C::T>
+    ;
+  method foo(covariant-by-class self::C::T x) → dynamic
+    ;
+}
+class D extends self::C<self::B> {
+  synthetic constructor •() → self::D
+    ;
+}
+abstract class _Foo&Object&C = core::Object with self::C<self::B> /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Foo&Object&C
+    : super core::Object::•()
+    ;
+  mixin-super-stub get _field() → self::B
+    return super.{self::C::_field};
+  mixin-super-stub set _field(covariant-by-class self::B value) → void
+    return super.{self::C::_field} = value;
+  mixin-super-stub method foo(covariant-by-class self::B x) → dynamic
+    return super.{self::C::foo}(x);
+}
+class Foo extends self::_Foo&Object&C {
+  synthetic constructor •() → self::Foo
+    ;
+}
+class B extends self::A {
+  synthetic constructor •() → self::B
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.transformed.expect
new file mode 100644
index 0000000..a68dbaf
--- /dev/null
+++ b/pkg/front_end/testcases/general/mixin_inherited_setter_for_mixed_in_field2.dart.weak.transformed.expect
@@ -0,0 +1,46 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    : super core::Object::•()
+    ;
+}
+class C<T extends self::A> extends core::Object {
+  late covariant-by-class field self::C::T _field;
+  synthetic constructor •() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+  method foo(covariant-by-class self::C::T x) → dynamic {
+    this.{self::C::_field} = x;
+  }
+}
+class D extends self::C<self::B> {
+  synthetic constructor •() → self::D
+    : super self::C::•()
+    ;
+}
+abstract class _Foo&Object&C extends core::Object implements self::C<self::B> /*isAnonymousMixin,isEliminatedMixin*/  {
+  late covariant-by-class field self::B _field;
+  synthetic constructor •() → self::_Foo&Object&C
+    : super core::Object::•()
+    ;
+  method foo(covariant-by-class self::B x) → dynamic {
+    this.{self::C::_field} = x;
+  }
+}
+class Foo extends self::_Foo&Object&C {
+  synthetic constructor •() → self::Foo
+    : super self::_Foo&Object&C::•()
+    ;
+}
+class B extends self::A {
+  synthetic constructor •() → self::B
+    : super self::A::•()
+    ;
+}
+static method main() → dynamic {
+  self::Foo foo = new self::Foo::•();
+  foo.{self::_Foo&Object&C::foo}(new self::B::•()){(self::B) → dynamic};
+}
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart b/pkg/front_end/testcases/general/mixin_interface_conflict.dart
index 5382f6e..767bf52 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.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 B {
   int get n => 1;
 }
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.textual_outline.expect
index 49f94cd..d373953 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class B {
   int get n => 1;
 }
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.textual_outline_modelled.expect
index c6ed9f3..e2a50a1 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class B {
   int get n => 1;
 }
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.expect b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.expect
index 194538f..7cbf184 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,53 +17,23 @@
 import "dart:core" as core;
 
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  get n() → core::int*
+  get n() → core::int
     return 1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  get n() → core::double*
+  get n() → core::double
     return 2.0;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _M&B&C extends core::Object implements self::B, self::C /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_M&B&C*
+  synthetic constructor •() → self::_M&B&C
     : 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 M extends self::_M&B&C /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.modular.expect
index 194538f..7cbf184 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,53 +17,23 @@
 import "dart:core" as core;
 
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  get n() → core::int*
+  get n() → core::int
     return 1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  get n() → core::double*
+  get n() → core::double
     return 2.0;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _M&B&C extends core::Object implements self::B, self::C /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_M&B&C*
+  synthetic constructor •() → self::_M&B&C
     : 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 M extends self::_M&B&C /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.outline.expect
index e77f24e..5ff43cf 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,50 +17,20 @@
 import "dart:core" as core;
 
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     ;
-  get n() → core::int*
+  get n() → core::int
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class C extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
-  get n() → core::double*
+  get n() → core::double
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _M&B&C extends core::Object implements self::B, self::C /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_M&B&C*
+  synthetic constructor •() → self::_M&B&C
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class M extends self::_M&B&C /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.transformed.expect
index 194538f..7cbf184 100644
--- a/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_interface_conflict.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -17,53 +17,23 @@
 import "dart:core" as core;
 
 class B extends core::Object {
-  synthetic constructor •() → self::B*
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  get n() → core::int*
+  get n() → core::int
     return 1;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
-  get n() → core::double*
+  get n() → core::double
     return 2.0;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 _M&B&C extends core::Object implements self::B, self::C /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_M&B&C*
+  synthetic constructor •() → self::_M&B&C
     : 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 M extends self::_M&B&C /*isMixinDeclaration*/  {
 }
diff --git a/pkg/front_end/testcases/general/mixin_stubs.dart b/pkg/front_end/testcases/general/mixin_stubs.dart
index 22e5bb1..59f0691 100644
--- a/pkg/front_end/testcases/general/mixin_stubs.dart
+++ b/pkg/front_end/testcases/general/mixin_stubs.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 abstract class Super {
   void concreteExtendsConcreteMixin() {}
   void concreteExtendsAbstractMixin() {}
diff --git a/pkg/front_end/testcases/general/mixin_stubs.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_stubs.dart.textual_outline.expect
index 4f42b33..9a72527 100644
--- a/pkg/front_end/testcases/general/mixin_stubs.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_stubs.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Super {
   void concreteExtendsConcreteMixin() {}
   void concreteExtendsAbstractMixin() {}
diff --git a/pkg/front_end/testcases/general/mixin_stubs.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_stubs.dart.textual_outline_modelled.expect
index 44714c6..b8362ad 100644
--- a/pkg/front_end/testcases/general/mixin_stubs.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_stubs.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class ClassEqMixin = Super with Mixin;
 abstract class ClassEqMixinClass = Super with MixinClass;
 
diff --git a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.expect b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.expect
index 32aae43..6132859 100644
--- a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.expect
@@ -1,28 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Super extends core::Object {
-  synthetic constructor •() → self::Super*
+  synthetic constructor •() → self::Super
     : super core::Object::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
   method concreteExtendsAbstractMixin() → void {}
   abstract method abstractExtendsConcreteMixin() → void;
   abstract method abstractExtendsAbstractMixin() → 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 MixinClass extends core::Object {
-  synthetic constructor •() → self::MixinClass*
+  synthetic constructor •() → self::MixinClass
     : super core::Object::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
@@ -31,16 +21,6 @@
   method abstractExtendsConcreteMixin() → void {}
   abstract method abstractExtendsAbstractMixin() → void;
   abstract method abstractMixin() → 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 Mixin extends core::Object /*isMixinDeclaration*/  {
   method concreteExtendsConcreteMixin() → void {}
@@ -49,19 +29,9 @@
   method abstractExtendsConcreteMixin() → void {}
   abstract method abstractExtendsAbstractMixin() → void;
   abstract method abstractMixin() → 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 ClassEqMixinClass = self::Super with self::MixinClass {
-  synthetic constructor •() → self::ClassEqMixinClass*
+  synthetic constructor •() → self::ClassEqMixinClass
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -75,7 +45,7 @@
   abstract mixin-stub method abstractMixin() → void; -> self::MixinClass::abstractMixin
 }
 abstract class _ClassExtendsMixinClass&Super&MixinClass = self::Super with self::MixinClass /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_ClassExtendsMixinClass&Super&MixinClass*
+  synthetic constructor •() → self::_ClassExtendsMixinClass&Super&MixinClass
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -89,12 +59,12 @@
   abstract mixin-stub method abstractMixin() → void; -> self::MixinClass::abstractMixin
 }
 abstract class ClassExtendsMixinClass extends self::_ClassExtendsMixinClass&Super&MixinClass {
-  synthetic constructor •() → self::ClassExtendsMixinClass*
+  synthetic constructor •() → self::ClassExtendsMixinClass
     : super self::_ClassExtendsMixinClass&Super&MixinClass::•()
     ;
 }
 abstract class ClassEqMixin = self::Super with self::Mixin {
-  synthetic constructor •() → self::ClassEqMixin*
+  synthetic constructor •() → self::ClassEqMixin
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -108,7 +78,7 @@
   abstract mixin-stub method abstractMixin() → void; -> self::Mixin::abstractMixin
 }
 abstract class _ClassExtendsMixin&Super&Mixin = self::Super with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_ClassExtendsMixin&Super&Mixin*
+  synthetic constructor •() → self::_ClassExtendsMixin&Super&Mixin
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -122,21 +92,21 @@
   abstract mixin-stub method abstractMixin() → void; -> self::Mixin::abstractMixin
 }
 abstract class ClassExtendsMixin extends self::_ClassExtendsMixin&Super&Mixin {
-  synthetic constructor •() → self::ClassExtendsMixin*
+  synthetic constructor •() → self::ClassExtendsMixin
     : super self::_ClassExtendsMixin&Super&Mixin::•()
     ;
 }
 abstract class SubclassEqMixinClass extends self::ClassEqMixinClass {
-  synthetic constructor •() → self::SubclassEqMixinClass*
+  synthetic constructor •() → self::SubclassEqMixinClass
     : super self::ClassEqMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixinClass::concreteMixin}(){() → void};
+    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixinClass::abstractMixin}(){() → void};
     super.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixinClass::concreteMixin}();
@@ -144,16 +114,16 @@
   }
 }
 abstract class SubclassExtendsMixinClass extends self::ClassExtendsMixinClass {
-  synthetic constructor •() → self::SubclassExtendsMixinClass*
+  synthetic constructor •() → self::SubclassExtendsMixinClass
     : super self::ClassExtendsMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}(){() → void};
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}();
@@ -161,16 +131,16 @@
   }
 }
 abstract class SubclassEqMixin extends self::ClassEqMixin {
-  synthetic constructor •() → self::SubclassEqMixin*
+  synthetic constructor •() → self::SubclassEqMixin
     : super self::ClassEqMixin::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixin::concreteMixin}(){() → void};
+    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixin::abstractMixin}(){() → void};
     super.{self::ClassEqMixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixin::concreteMixin}();
@@ -178,16 +148,16 @@
   }
 }
 abstract class SubclassExtendsMixin extends self::ClassExtendsMixin {
-  synthetic constructor •() → self::SubclassExtendsMixin*
+  synthetic constructor •() → self::SubclassExtendsMixin
     : super self::ClassExtendsMixin::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}(){() → void};
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}();
diff --git a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.modular.expect
index 32aae43..6132859 100644
--- a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.modular.expect
@@ -1,28 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Super extends core::Object {
-  synthetic constructor •() → self::Super*
+  synthetic constructor •() → self::Super
     : super core::Object::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
   method concreteExtendsAbstractMixin() → void {}
   abstract method abstractExtendsConcreteMixin() → void;
   abstract method abstractExtendsAbstractMixin() → 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 MixinClass extends core::Object {
-  synthetic constructor •() → self::MixinClass*
+  synthetic constructor •() → self::MixinClass
     : super core::Object::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
@@ -31,16 +21,6 @@
   method abstractExtendsConcreteMixin() → void {}
   abstract method abstractExtendsAbstractMixin() → void;
   abstract method abstractMixin() → 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 Mixin extends core::Object /*isMixinDeclaration*/  {
   method concreteExtendsConcreteMixin() → void {}
@@ -49,19 +29,9 @@
   method abstractExtendsConcreteMixin() → void {}
   abstract method abstractExtendsAbstractMixin() → void;
   abstract method abstractMixin() → 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 ClassEqMixinClass = self::Super with self::MixinClass {
-  synthetic constructor •() → self::ClassEqMixinClass*
+  synthetic constructor •() → self::ClassEqMixinClass
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -75,7 +45,7 @@
   abstract mixin-stub method abstractMixin() → void; -> self::MixinClass::abstractMixin
 }
 abstract class _ClassExtendsMixinClass&Super&MixinClass = self::Super with self::MixinClass /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_ClassExtendsMixinClass&Super&MixinClass*
+  synthetic constructor •() → self::_ClassExtendsMixinClass&Super&MixinClass
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -89,12 +59,12 @@
   abstract mixin-stub method abstractMixin() → void; -> self::MixinClass::abstractMixin
 }
 abstract class ClassExtendsMixinClass extends self::_ClassExtendsMixinClass&Super&MixinClass {
-  synthetic constructor •() → self::ClassExtendsMixinClass*
+  synthetic constructor •() → self::ClassExtendsMixinClass
     : super self::_ClassExtendsMixinClass&Super&MixinClass::•()
     ;
 }
 abstract class ClassEqMixin = self::Super with self::Mixin {
-  synthetic constructor •() → self::ClassEqMixin*
+  synthetic constructor •() → self::ClassEqMixin
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -108,7 +78,7 @@
   abstract mixin-stub method abstractMixin() → void; -> self::Mixin::abstractMixin
 }
 abstract class _ClassExtendsMixin&Super&Mixin = self::Super with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_ClassExtendsMixin&Super&Mixin*
+  synthetic constructor •() → self::_ClassExtendsMixin&Super&Mixin
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -122,21 +92,21 @@
   abstract mixin-stub method abstractMixin() → void; -> self::Mixin::abstractMixin
 }
 abstract class ClassExtendsMixin extends self::_ClassExtendsMixin&Super&Mixin {
-  synthetic constructor •() → self::ClassExtendsMixin*
+  synthetic constructor •() → self::ClassExtendsMixin
     : super self::_ClassExtendsMixin&Super&Mixin::•()
     ;
 }
 abstract class SubclassEqMixinClass extends self::ClassEqMixinClass {
-  synthetic constructor •() → self::SubclassEqMixinClass*
+  synthetic constructor •() → self::SubclassEqMixinClass
     : super self::ClassEqMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixinClass::concreteMixin}(){() → void};
+    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixinClass::abstractMixin}(){() → void};
     super.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixinClass::concreteMixin}();
@@ -144,16 +114,16 @@
   }
 }
 abstract class SubclassExtendsMixinClass extends self::ClassExtendsMixinClass {
-  synthetic constructor •() → self::SubclassExtendsMixinClass*
+  synthetic constructor •() → self::SubclassExtendsMixinClass
     : super self::ClassExtendsMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}(){() → void};
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}();
@@ -161,16 +131,16 @@
   }
 }
 abstract class SubclassEqMixin extends self::ClassEqMixin {
-  synthetic constructor •() → self::SubclassEqMixin*
+  synthetic constructor •() → self::SubclassEqMixin
     : super self::ClassEqMixin::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixin::concreteMixin}(){() → void};
+    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixin::abstractMixin}(){() → void};
     super.{self::ClassEqMixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixin::concreteMixin}();
@@ -178,16 +148,16 @@
   }
 }
 abstract class SubclassExtendsMixin extends self::ClassExtendsMixin {
-  synthetic constructor •() → self::SubclassExtendsMixin*
+  synthetic constructor •() → self::SubclassExtendsMixin
     : super self::ClassExtendsMixin::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}(){() → void};
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}();
diff --git a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.outline.expect
index 8f9542d..781d4f5 100644
--- a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.outline.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Super extends core::Object {
-  synthetic constructor •() → self::Super*
+  synthetic constructor •() → self::Super
     ;
   method concreteExtendsConcreteMixin() → void
     ;
@@ -11,19 +11,9 @@
     ;
   abstract method abstractExtendsConcreteMixin() → void;
   abstract method abstractExtendsAbstractMixin() → 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 MixinClass extends core::Object {
-  synthetic constructor •() → self::MixinClass*
+  synthetic constructor •() → self::MixinClass
     ;
   method concreteExtendsConcreteMixin() → void
     ;
@@ -34,16 +24,6 @@
     ;
   abstract method abstractExtendsAbstractMixin() → void;
   abstract method abstractMixin() → 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 Mixin extends core::Object /*isMixinDeclaration*/  {
   method concreteExtendsConcreteMixin() → void
@@ -55,19 +35,9 @@
     ;
   abstract method abstractExtendsAbstractMixin() → void;
   abstract method abstractMixin() → 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 ClassEqMixinClass = self::Super with self::MixinClass {
-  synthetic constructor •() → self::ClassEqMixinClass*
+  synthetic constructor •() → self::ClassEqMixinClass
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -81,7 +51,7 @@
   abstract mixin-stub method abstractMixin() → void; -> self::MixinClass::abstractMixin
 }
 abstract class _ClassExtendsMixinClass&Super&MixinClass = self::Super with self::MixinClass /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_ClassExtendsMixinClass&Super&MixinClass*
+  synthetic constructor •() → self::_ClassExtendsMixinClass&Super&MixinClass
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -95,11 +65,11 @@
   abstract mixin-stub method abstractMixin() → void; -> self::MixinClass::abstractMixin
 }
 abstract class ClassExtendsMixinClass extends self::_ClassExtendsMixinClass&Super&MixinClass {
-  synthetic constructor •() → self::ClassExtendsMixinClass*
+  synthetic constructor •() → self::ClassExtendsMixinClass
     ;
 }
 abstract class ClassEqMixin = self::Super with self::Mixin {
-  synthetic constructor •() → self::ClassEqMixin*
+  synthetic constructor •() → self::ClassEqMixin
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -113,7 +83,7 @@
   abstract mixin-stub method abstractMixin() → void; -> self::Mixin::abstractMixin
 }
 abstract class _ClassExtendsMixin&Super&Mixin = self::Super with self::Mixin /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_ClassExtendsMixin&Super&Mixin*
+  synthetic constructor •() → self::_ClassExtendsMixin&Super&Mixin
     : super self::Super::•()
     ;
   mixin-super-stub method concreteExtendsConcreteMixin() → void
@@ -127,29 +97,29 @@
   abstract mixin-stub method abstractMixin() → void; -> self::Mixin::abstractMixin
 }
 abstract class ClassExtendsMixin extends self::_ClassExtendsMixin&Super&Mixin {
-  synthetic constructor •() → self::ClassExtendsMixin*
+  synthetic constructor •() → self::ClassExtendsMixin
     ;
 }
 abstract class SubclassEqMixinClass extends self::ClassEqMixinClass {
-  synthetic constructor •() → self::SubclassEqMixinClass*
+  synthetic constructor •() → self::SubclassEqMixinClass
     ;
   method method() → dynamic
     ;
 }
 abstract class SubclassExtendsMixinClass extends self::ClassExtendsMixinClass {
-  synthetic constructor •() → self::SubclassExtendsMixinClass*
+  synthetic constructor •() → self::SubclassExtendsMixinClass
     ;
   method method() → dynamic
     ;
 }
 abstract class SubclassEqMixin extends self::ClassEqMixin {
-  synthetic constructor •() → self::SubclassEqMixin*
+  synthetic constructor •() → self::SubclassEqMixin
     ;
   method method() → dynamic
     ;
 }
 abstract class SubclassExtendsMixin extends self::ClassExtendsMixin {
-  synthetic constructor •() → self::SubclassExtendsMixin*
+  synthetic constructor •() → self::SubclassExtendsMixin
     ;
   method method() → dynamic
     ;
diff --git a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.transformed.expect
index 3b87509..1350fad 100644
--- a/pkg/front_end/testcases/general/mixin_stubs.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_stubs.dart.weak.transformed.expect
@@ -1,28 +1,18 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class Super extends core::Object {
-  synthetic constructor •() → self::Super*
+  synthetic constructor •() → self::Super
     : super core::Object::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
   method concreteExtendsAbstractMixin() → void {}
   abstract method abstractExtendsConcreteMixin() → void;
   abstract method abstractExtendsAbstractMixin() → 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 MixinClass extends core::Object {
-  synthetic constructor •() → self::MixinClass*
+  synthetic constructor •() → self::MixinClass
     : super core::Object::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
@@ -31,16 +21,6 @@
   method abstractExtendsConcreteMixin() → void {}
   abstract method abstractExtendsAbstractMixin() → void;
   abstract method abstractMixin() → 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 Mixin extends core::Object /*isMixinDeclaration*/  {
   method concreteExtendsConcreteMixin() → void {}
@@ -49,19 +29,9 @@
   method abstractExtendsConcreteMixin() → void {}
   abstract method abstractExtendsAbstractMixin() → void;
   abstract method abstractMixin() → 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 ClassEqMixinClass extends self::Super implements self::MixinClass /*isEliminatedMixin*/  {
-  synthetic constructor •() → self::ClassEqMixinClass*
+  synthetic constructor •() → self::ClassEqMixinClass
     : super self::Super::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
@@ -72,7 +42,7 @@
   abstract method abstractMixin() → void;
 }
 abstract class _ClassExtendsMixinClass&Super&MixinClass extends self::Super implements self::MixinClass /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •() → self::_ClassExtendsMixinClass&Super&MixinClass*
+  synthetic constructor •() → self::_ClassExtendsMixinClass&Super&MixinClass
     : super self::Super::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
@@ -83,12 +53,12 @@
   abstract method abstractMixin() → void;
 }
 abstract class ClassExtendsMixinClass extends self::_ClassExtendsMixinClass&Super&MixinClass {
-  synthetic constructor •() → self::ClassExtendsMixinClass*
+  synthetic constructor •() → self::ClassExtendsMixinClass
     : super self::_ClassExtendsMixinClass&Super&MixinClass::•()
     ;
 }
 abstract class ClassEqMixin extends self::Super implements self::Mixin /*isEliminatedMixin*/  {
-  synthetic constructor •() → self::ClassEqMixin*
+  synthetic constructor •() → self::ClassEqMixin
     : super self::Super::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
@@ -99,7 +69,7 @@
   abstract method abstractMixin() → void;
 }
 abstract class _ClassExtendsMixin&Super&Mixin extends self::Super implements self::Mixin /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •() → self::_ClassExtendsMixin&Super&Mixin*
+  synthetic constructor •() → self::_ClassExtendsMixin&Super&Mixin
     : super self::Super::•()
     ;
   method concreteExtendsConcreteMixin() → void {}
@@ -110,21 +80,21 @@
   abstract method abstractMixin() → void;
 }
 abstract class ClassExtendsMixin extends self::_ClassExtendsMixin&Super&Mixin {
-  synthetic constructor •() → self::ClassExtendsMixin*
+  synthetic constructor •() → self::ClassExtendsMixin
     : super self::_ClassExtendsMixin&Super&Mixin::•()
     ;
 }
 abstract class SubclassEqMixinClass extends self::ClassEqMixinClass {
-  synthetic constructor •() → self::SubclassEqMixinClass*
+  synthetic constructor •() → self::SubclassEqMixinClass
     : super self::ClassEqMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixinClass::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixinClass::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixinClass::concreteMixin}(){() → void};
+    this.{self::ClassEqMixinClass::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixinClass::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixinClass::abstractMixin}(){() → void};
     super.{self::ClassEqMixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixinClass::concreteMixin}();
@@ -132,16 +102,16 @@
   }
 }
 abstract class SubclassExtendsMixinClass extends self::ClassExtendsMixinClass {
-  synthetic constructor •() → self::SubclassExtendsMixinClass*
+  synthetic constructor •() → self::SubclassExtendsMixinClass
     : super self::ClassExtendsMixinClass::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixinClass&Super&MixinClass::abstractMixin}(){() → void};
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixinClass&Super&MixinClass::concreteMixin}();
@@ -149,16 +119,16 @@
   }
 }
 abstract class SubclassEqMixin extends self::ClassEqMixin {
-  synthetic constructor •() → self::SubclassEqMixin*
+  synthetic constructor •() → self::SubclassEqMixin
     : super self::ClassEqMixin::•()
     ;
   method method() → dynamic {
-    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::concreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::ClassEqMixin::abstractMixin}(){() →* void};
+    this.{self::ClassEqMixin::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixin::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixin::concreteMixin}(){() → void};
+    this.{self::ClassEqMixin::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::ClassEqMixin::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::ClassEqMixin::abstractMixin}(){() → void};
     super.{self::ClassEqMixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::ClassEqMixin::concreteMixin}();
@@ -166,16 +136,16 @@
   }
 }
 abstract class SubclassExtendsMixin extends self::ClassExtendsMixin {
-  synthetic constructor •() → self::SubclassExtendsMixin*
+  synthetic constructor •() → self::SubclassExtendsMixin
     : super self::ClassExtendsMixin::•()
     ;
   method method() → dynamic {
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}(){() →* void};
-    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}(){() →* void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsConcreteMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractExtendsAbstractMixin}(){() → void};
+    this.{self::_ClassExtendsMixin&Super&Mixin::abstractMixin}(){() → void};
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteExtendsConcreteMixin}();
     super.{self::Super::concreteExtendsAbstractMixin}();
     super.{self::_ClassExtendsMixin&Super&Mixin::concreteMixin}();
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart b/pkg/front_end/testcases/general/mixin_super_repeated.dart
index f8fcad7..e9453fd 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 abstract class M {
   var m;
 }
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.textual_outline.expect
index 9975f5c..e92d32e 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class M {
   var m;
 }
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.textual_outline_modelled.expect
index 5f64874..2d9c4d4 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class M {
   var m;
 }
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.expect
index 526ec74..5ed308d 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class M extends core::Object {
   field dynamic m = null;
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class N extends self::M {
-  synthetic constructor •() → self::N*
+  synthetic constructor •() → self::N
     : super self::M::•()
     ;
   set superM(dynamic value) → void {
@@ -29,22 +19,12 @@
     return super.{self::M::m};
 }
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     : 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 _Named&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Named&S&M*
+  synthetic constructor •() → self::_Named&S&M
     : super self::S::•()
     ;
   mixin-super-stub get m() → dynamic
@@ -53,7 +33,7 @@
     return super.{self::M::m} = value;
 }
 abstract class _Named&S&M&N = self::_Named&S&M with self::N /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Named&S&M&N*
+  synthetic constructor •() → self::_Named&S&M&N
     : super self::_Named&S&M::•()
     ;
   mixin-super-stub get superM() → dynamic
@@ -62,7 +42,7 @@
     return super.{self::N::superM} = value;
 }
 class Named = self::_Named&S&M&N with self::M {
-  synthetic constructor •() → self::Named*
+  synthetic constructor •() → self::Named
     : super self::_Named&S&M&N::•()
     ;
   mixin-super-stub get m() → dynamic
@@ -71,13 +51,13 @@
     return super.{self::M::m} = value;
 }
 static method main() → dynamic {
-  self::Named* named = new self::Named::•();
+  self::Named named = new self::Named::•();
   named.{self::Named::m} = 42;
   named.{self::_Named&S&M&N::superM} = 87;
-  if(!(named.{self::Named::m}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 42)) {
+  if(!(named.{self::Named::m}{dynamic} =={core::Object::==}{(core::Object) → core::bool} 42)) {
     throw "Bad mixin translation of set:superM";
   }
-  if(!(named.{self::_Named&S&M&N::superM}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 87)) {
+  if(!(named.{self::_Named&S&M&N::superM}{dynamic} =={core::Object::==}{(core::Object) → core::bool} 87)) {
     throw "Bad mixin translation of get:superM";
   }
 }
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.modular.expect
index 526ec74..5ed308d 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.modular.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class M extends core::Object {
   field dynamic m = null;
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class N extends self::M {
-  synthetic constructor •() → self::N*
+  synthetic constructor •() → self::N
     : super self::M::•()
     ;
   set superM(dynamic value) → void {
@@ -29,22 +19,12 @@
     return super.{self::M::m};
 }
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     : 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 _Named&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Named&S&M*
+  synthetic constructor •() → self::_Named&S&M
     : super self::S::•()
     ;
   mixin-super-stub get m() → dynamic
@@ -53,7 +33,7 @@
     return super.{self::M::m} = value;
 }
 abstract class _Named&S&M&N = self::_Named&S&M with self::N /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Named&S&M&N*
+  synthetic constructor •() → self::_Named&S&M&N
     : super self::_Named&S&M::•()
     ;
   mixin-super-stub get superM() → dynamic
@@ -62,7 +42,7 @@
     return super.{self::N::superM} = value;
 }
 class Named = self::_Named&S&M&N with self::M {
-  synthetic constructor •() → self::Named*
+  synthetic constructor •() → self::Named
     : super self::_Named&S&M&N::•()
     ;
   mixin-super-stub get m() → dynamic
@@ -71,13 +51,13 @@
     return super.{self::M::m} = value;
 }
 static method main() → dynamic {
-  self::Named* named = new self::Named::•();
+  self::Named named = new self::Named::•();
   named.{self::Named::m} = 42;
   named.{self::_Named&S&M&N::superM} = 87;
-  if(!(named.{self::Named::m}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 42)) {
+  if(!(named.{self::Named::m}{dynamic} =={core::Object::==}{(core::Object) → core::bool} 42)) {
     throw "Bad mixin translation of set:superM";
   }
-  if(!(named.{self::_Named&S&M&N::superM}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 87)) {
+  if(!(named.{self::_Named&S&M&N::superM}{dynamic} =={core::Object::==}{(core::Object) → core::bool} 87)) {
     throw "Bad mixin translation of get:superM";
   }
 }
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.outline.expect
index 1a4626c..48f57f8 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.outline.expect
@@ -1,24 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class M extends core::Object {
   field dynamic m;
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class N extends self::M {
-  synthetic constructor •() → self::N*
+  synthetic constructor •() → self::N
     ;
   set superM(dynamic value) → void
     ;
@@ -26,21 +16,11 @@
     ;
 }
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class _Named&S&M = self::S with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Named&S&M*
+  synthetic constructor •() → self::_Named&S&M
     : super self::S::•()
     ;
   mixin-super-stub get m() → dynamic
@@ -49,7 +29,7 @@
     return super.{self::M::m} = value;
 }
 abstract class _Named&S&M&N = self::_Named&S&M with self::N /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_Named&S&M&N*
+  synthetic constructor •() → self::_Named&S&M&N
     : super self::_Named&S&M::•()
     ;
   mixin-super-stub get superM() → dynamic
@@ -58,7 +38,7 @@
     return super.{self::N::superM} = value;
 }
 class Named = self::_Named&S&M&N with self::M {
-  synthetic constructor •() → self::Named*
+  synthetic constructor •() → self::Named
     : super self::_Named&S&M&N::•()
     ;
   mixin-super-stub get m() → dynamic
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.transformed.expect
index e0aa9ba..94d7058 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart.weak.transformed.expect
@@ -1,25 +1,15 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class M extends core::Object {
   field dynamic m = null;
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class N extends self::M {
-  synthetic constructor •() → self::N*
+  synthetic constructor •() → self::N
     : super self::M::•()
     ;
   set superM(dynamic value) → void {
@@ -29,28 +19,18 @@
     return super.{self::M::m};
 }
 class S extends core::Object {
-  synthetic constructor •() → self::S*
+  synthetic constructor •() → self::S
     : 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 _Named&S&M extends self::S implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
   field dynamic m = null;
-  synthetic constructor •() → self::_Named&S&M*
+  synthetic constructor •() → self::_Named&S&M
     : super self::S::•()
     ;
 }
 abstract class _Named&S&M&N extends self::_Named&S&M implements self::N /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •() → self::_Named&S&M&N*
+  synthetic constructor •() → self::_Named&S&M&N
     : super self::_Named&S&M::•()
     ;
   get superM() → dynamic
@@ -61,18 +41,18 @@
 }
 class Named extends self::_Named&S&M&N implements self::M /*isEliminatedMixin*/  {
   field dynamic m = null;
-  synthetic constructor •() → self::Named*
+  synthetic constructor •() → self::Named
     : super self::_Named&S&M&N::•()
     ;
 }
 static method main() → dynamic {
-  self::Named* named = new self::Named::•();
+  self::Named named = new self::Named::•();
   named.{self::Named::m} = 42;
   named.{self::_Named&S&M&N::superM} = 87;
-  if(!(named.{self::Named::m}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 42)) {
+  if(!(named.{self::Named::m}{dynamic} =={core::Object::==}{(core::Object) → core::bool} 42)) {
     throw "Bad mixin translation of set:superM";
   }
-  if(!(named.{self::_Named&S&M&N::superM}{dynamic} =={core::Object::==}{(core::Object*) →* core::bool*} 87)) {
+  if(!(named.{self::_Named&S&M&N::superM}{dynamic} =={core::Object::==}{(core::Object) → core::bool} 87)) {
     throw "Bad mixin translation of get:superM";
   }
 }
diff --git a/pkg/front_end/testcases/general/mixin_with_static_member.dart b/pkg/front_end/testcases/general/mixin_with_static_member.dart
index 2737bb4..954d649 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart
@@ -1,15 +1,15 @@
 // 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 extends B with M {}
 
 class B {
-  final Object m = null;
+  final Object m = new Object();
 }
 
 class M {
-  static Object m() => null;
+  static Object m() => new Object();
 }
 
 main() {
diff --git a/pkg/front_end/testcases/general/mixin_with_static_member.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_with_static_member.dart.textual_outline.expect
index 4b1e84f..460aed5 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart.textual_outline.expect
@@ -1,12 +1,11 @@
-// @dart = 2.9
 class A extends B with M {}
 
 class B {
-  final Object m = null;
+  final Object m = new Object();
 }
 
 class M {
-  static Object m() => null;
+  static Object m() => new Object();
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/mixin_with_static_member.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_with_static_member.dart.textual_outline_modelled.expect
index 4b1e84f..460aed5 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart.textual_outline_modelled.expect
@@ -1,12 +1,11 @@
-// @dart = 2.9
 class A extends B with M {}
 
 class B {
-  final Object m = null;
+  final Object m = new Object();
 }
 
 class M {
-  static Object m() => null;
+  static Object m() => new Object();
 }
 
 main() {}
diff --git a/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.expect b/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.expect
index e89e537..bfa8188 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.expect
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.expect
@@ -1,49 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class _A&B&M = self::B with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A&B&M*
+  synthetic constructor •() → self::_A&B&M
     : super self::B::•()
     ;
 }
 class A extends self::_A&B&M {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super self::_A&B&M::•()
     ;
 }
 class B extends core::Object {
-  final field core::Object* m = null;
-  synthetic constructor •() → self::B*
+  final field core::Object m = new core::Object::•();
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  static method m() → core::Object*
-    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 m() → core::Object
+    return new core::Object::•();
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.modular.expect b/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.modular.expect
index e89e537..bfa8188 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.modular.expect
@@ -1,49 +1,29 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class _A&B&M = self::B with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A&B&M*
+  synthetic constructor •() → self::_A&B&M
     : super self::B::•()
     ;
 }
 class A extends self::_A&B&M {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super self::_A&B&M::•()
     ;
 }
 class B extends core::Object {
-  final field core::Object* m = null;
-  synthetic constructor •() → self::B*
+  final field core::Object m = new core::Object::•();
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  static method m() → core::Object*
-    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 m() → core::Object
+    return new core::Object::•();
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.outline.expect b/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.outline.expect
index 8799c3a..2b5e162 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.outline.expect
@@ -1,46 +1,26 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class _A&B&M = self::B with self::M /*isAnonymousMixin*/  {
-  synthetic constructor •() → self::_A&B&M*
+  synthetic constructor •() → self::_A&B&M
     : super self::B::•()
     ;
 }
 class A extends self::_A&B&M {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     ;
 }
 class B extends core::Object {
-  final field core::Object* m;
-  synthetic constructor •() → self::B*
+  final field core::Object m;
+  synthetic constructor •() → self::B
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     ;
-  static method m() → core::Object*
+  static method m() → 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/mixin_with_static_member.dart.weak.transformed.expect b/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.transformed.expect
index 29e0464..d81db03 100644
--- a/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/mixin_with_static_member.dart.weak.transformed.expect
@@ -1,51 +1,31 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 abstract class _A&B&M extends self::B implements self::M /*isAnonymousMixin,isEliminatedMixin*/  {
-  synthetic constructor •() → self::_A&B&M*
+  synthetic constructor •() → self::_A&B&M
     : super self::B::•()
     ;
-  static method m() → core::Object*
-    return null;
+  static method m() → core::Object
+    return new core::Object::•();
 }
 class A extends self::_A&B&M {
-  synthetic constructor •() → self::A*
+  synthetic constructor •() → self::A
     : super self::_A&B&M::•()
     ;
 }
 class B extends core::Object {
-  final field core::Object* m = null;
-  synthetic constructor •() → self::B*
+  final field core::Object m = new core::Object::•();
+  synthetic constructor •() → self::B
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class M extends core::Object {
-  synthetic constructor •() → self::M*
+  synthetic constructor •() → self::M
     : super core::Object::•()
     ;
-  static method m() → core::Object*
-    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 m() → core::Object
+    return new core::Object::•();
 }
 static method main() → dynamic {
   new self::A::•();
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart b/pkg/front_end/testcases/general/named_function_scope.dart
index 0a78452..bfb0a73 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart
+++ b/pkg/front_end/testcases/general/named_function_scope.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 T {}
 
 class V {}
@@ -53,17 +53,17 @@
   }
   {
     T t;
-    T T() {}
+    T T() => throw '';
   }
   {
-    T T() {}
+    T T() => throw '';
   }
   {
     T t;
-    T T(T t) {}
+    T T(T t) => t;
   }
   {
-    T T(T t) {}
+    T T(T t) => t;
   }
   {
     void T(T t) {}
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.textual_outline.expect b/pkg/front_end/testcases/general/named_function_scope.dart.textual_outline.expect
index 9fe26ce..b05a61b 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class T {}
 
 class V {}
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/named_function_scope.dart.textual_outline_modelled.expect
index 9fe26ce..b05a61b 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class T {}
 
 class V {}
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.weak.expect b/pkg/front_end/testcases/general/named_function_scope.dart.weak.expect
index 8ae3c40..18cd85e 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.weak.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -50,31 +50,31 @@
 //               ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:56:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T() {}
+//     T T() => throw '';
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:55:5: Context: Previous use of 'T'.
 //     T t;
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:59:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T() {}
+//     T T() => throw '';
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:59:5: Context: Previous use of 'T'.
-//     T T() {}
+//     T T() => throw '';
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:63:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T(T t) {}
+//     T T(T t) => t;
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:62:5: Context: Previous use of 'T'.
 //     T t;
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:66:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T(T t) {}
+//     T T(T t) => t;
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:66:5: Context: Previous use of 'T'.
-//     T T(T t) {}
+//     T T(T t) => t;
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:69:12: Error: 'T' isn't a type.
@@ -85,38 +85,18 @@
 import "dart:core" as core;
 
 class T extends core::Object {
-  synthetic constructor •() → self::T*
+  synthetic constructor •() → self::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 V extends core::Object {
-  synthetic constructor •() → self::V*
+  synthetic constructor •() → self::V
     : 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 test() → dynamic {
-  self::T* t;
-  self::V* v;
+  self::T t;
+  self::V v;
   {
     function T() → Null {}
   }
@@ -124,68 +104,72 @@
     dynamic v;
   }
   {
-    self::T* t;
-    () →* Null x = let final () →* Null T = () → Null {} in T;
+    self::T t;
+    () → Null x = let final () → Null T = () → Null {} in T;
   }
   {
-    self::V* v;
+    self::V v;
     invalid-type V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:31:9: Error: Can't declare 'V' because it was already used in this scope.
     var V;
         ^";
   }
   {
-    self::V* v;
+    self::V v;
     invalid-type V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:36:9: Error: Can't declare 'V' because it was already used in this scope.
     var V = null;
         ^" in null;
   }
   {
-    () →* Null x = let final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
+    () → Null x = let final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
     var x = T T() {};
-              ^" in let final () →* Null T = () → Null {} in T;
+              ^" in let final () → Null T = () → Null {} in T;
   }
   {
-    self::V* V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:47:7: Error: Can't declare 'V' because it was already used in this scope.
+    self::V V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:47:7: Error: Can't declare 'V' because it was already used in this scope.
     V V;
       ^";
   }
   {
-    <T extends core::Object* = dynamic>() →* Null x = let final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
+    <T extends core::Object? = dynamic>() → Null x = let final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
     var x = T<T>() {};
-            ^" in let final <T extends core::Object* = dynamic>() →* Null T = <T extends core::Object* = dynamic>() → Null {} in T;
+            ^" in let final <T extends core::Object? = dynamic>() → Null T = <T extends core::Object? = dynamic>() → Null {} in T;
   }
   {
-    self::T* t;
+    self::T t;
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:56:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T() {}
+    T T() => throw '';
       ^";
-      function T() → self::T* {}
+      function T() → self::T
+        return throw "";
     }
   }
   {
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:59:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T() {}
+    T T() => throw '';
       ^";
-      function T() → self::T* {}
+      function T() → self::T
+        return throw "";
     }
   }
   {
-    self::T* t;
+    self::T t;
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:63:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T(T t) {}
+    T T(T t) => t;
       ^";
-      function T(self::T* t) → self::T* {}
+      function T(self::T t) → self::T
+        return t;
     }
   }
   {
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:66:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T(T t) {}
+    T T(T t) => t;
       ^";
-      function T(self::T* t) → self::T* {}
+      function T(self::T t) → self::T
+        return t;
     }
   }
   {
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.weak.modular.expect b/pkg/front_end/testcases/general/named_function_scope.dart.weak.modular.expect
index 8ae3c40..18cd85e 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -50,31 +50,31 @@
 //               ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:56:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T() {}
+//     T T() => throw '';
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:55:5: Context: Previous use of 'T'.
 //     T t;
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:59:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T() {}
+//     T T() => throw '';
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:59:5: Context: Previous use of 'T'.
-//     T T() {}
+//     T T() => throw '';
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:63:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T(T t) {}
+//     T T(T t) => t;
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:62:5: Context: Previous use of 'T'.
 //     T t;
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:66:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T(T t) {}
+//     T T(T t) => t;
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:66:5: Context: Previous use of 'T'.
-//     T T(T t) {}
+//     T T(T t) => t;
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:69:12: Error: 'T' isn't a type.
@@ -85,38 +85,18 @@
 import "dart:core" as core;
 
 class T extends core::Object {
-  synthetic constructor •() → self::T*
+  synthetic constructor •() → self::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 V extends core::Object {
-  synthetic constructor •() → self::V*
+  synthetic constructor •() → self::V
     : 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 test() → dynamic {
-  self::T* t;
-  self::V* v;
+  self::T t;
+  self::V v;
   {
     function T() → Null {}
   }
@@ -124,68 +104,72 @@
     dynamic v;
   }
   {
-    self::T* t;
-    () →* Null x = let final () →* Null T = () → Null {} in T;
+    self::T t;
+    () → Null x = let final () → Null T = () → Null {} in T;
   }
   {
-    self::V* v;
+    self::V v;
     invalid-type V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:31:9: Error: Can't declare 'V' because it was already used in this scope.
     var V;
         ^";
   }
   {
-    self::V* v;
+    self::V v;
     invalid-type V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:36:9: Error: Can't declare 'V' because it was already used in this scope.
     var V = null;
         ^" in null;
   }
   {
-    () →* Null x = let final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
+    () → Null x = let final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
     var x = T T() {};
-              ^" in let final () →* Null T = () → Null {} in T;
+              ^" in let final () → Null T = () → Null {} in T;
   }
   {
-    self::V* V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:47:7: Error: Can't declare 'V' because it was already used in this scope.
+    self::V V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:47:7: Error: Can't declare 'V' because it was already used in this scope.
     V V;
       ^";
   }
   {
-    <T extends core::Object* = dynamic>() →* Null x = let final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
+    <T extends core::Object? = dynamic>() → Null x = let final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
     var x = T<T>() {};
-            ^" in let final <T extends core::Object* = dynamic>() →* Null T = <T extends core::Object* = dynamic>() → Null {} in T;
+            ^" in let final <T extends core::Object? = dynamic>() → Null T = <T extends core::Object? = dynamic>() → Null {} in T;
   }
   {
-    self::T* t;
+    self::T t;
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:56:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T() {}
+    T T() => throw '';
       ^";
-      function T() → self::T* {}
+      function T() → self::T
+        return throw "";
     }
   }
   {
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:59:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T() {}
+    T T() => throw '';
       ^";
-      function T() → self::T* {}
+      function T() → self::T
+        return throw "";
     }
   }
   {
-    self::T* t;
+    self::T t;
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:63:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T(T t) {}
+    T T(T t) => t;
       ^";
-      function T(self::T* t) → self::T* {}
+      function T(self::T t) → self::T
+        return t;
     }
   }
   {
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:66:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T(T t) {}
+    T T(T t) => t;
       ^";
-      function T(self::T* t) → self::T* {}
+      function T(self::T t) → self::T
+        return t;
     }
   }
   {
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.weak.outline.expect b/pkg/front_end/testcases/general/named_function_scope.dart.weak.outline.expect
index 7d88d26..6730729 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.weak.outline.expect
@@ -1,34 +1,14 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class T extends core::Object {
-  synthetic constructor •() → self::T*
+  synthetic constructor •() → self::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 V extends core::Object {
-  synthetic constructor •() → self::V*
+  synthetic constructor •() → self::V
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect b/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect
index c14d8e6..b2b67d2 100644
--- a/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/named_function_scope.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 //
 // Problems in library:
 //
@@ -50,31 +50,31 @@
 //               ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:56:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T() {}
+//     T T() => throw '';
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:55:5: Context: Previous use of 'T'.
 //     T t;
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:59:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T() {}
+//     T T() => throw '';
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:59:5: Context: Previous use of 'T'.
-//     T T() {}
+//     T T() => throw '';
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:63:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T(T t) {}
+//     T T(T t) => t;
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:62:5: Context: Previous use of 'T'.
 //     T t;
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:66:7: Error: Can't declare 'T' because it was already used in this scope.
-//     T T(T t) {}
+//     T T(T t) => t;
 //       ^
 // pkg/front_end/testcases/general/named_function_scope.dart:66:5: Context: Previous use of 'T'.
-//     T T(T t) {}
+//     T T(T t) => t;
 //     ^
 //
 // pkg/front_end/testcases/general/named_function_scope.dart:69:12: Error: 'T' isn't a type.
@@ -85,38 +85,18 @@
 import "dart:core" as core;
 
 class T extends core::Object {
-  synthetic constructor •() → self::T*
+  synthetic constructor •() → self::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 V extends core::Object {
-  synthetic constructor •() → self::V*
+  synthetic constructor •() → self::V
     : 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 test() → dynamic {
-  self::T* t;
-  self::V* v;
+  self::T t;
+  self::V v;
   {
     function T() → Null {}
   }
@@ -124,68 +104,72 @@
     dynamic v;
   }
   {
-    self::T* t;
-    () →* Null x = let final () →* Null T = () → Null {} in T;
+    self::T t;
+    () → Null x = let final () → Null T = () → Null {} in T;
   }
   {
-    self::V* v;
+    self::V v;
     invalid-type V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:31:9: Error: Can't declare 'V' because it was already used in this scope.
     var V;
         ^";
   }
   {
-    self::V* v;
+    self::V v;
     invalid-type V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:36:9: Error: Can't declare 'V' because it was already used in this scope.
     var V = null;
         ^" in null;
   }
   {
-    () →* Null x = let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
+    () → Null x = let final invalid-type #t1 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:41:15: Error: Can't declare 'T' because it was already used in this scope.
     var x = T T() {};
-              ^" in let final () →* Null T = () → Null {} in T;
+              ^" in let final () → Null T = () → Null {} in T;
   }
   {
-    self::V* V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:47:7: Error: Can't declare 'V' because it was already used in this scope.
+    self::V V = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:47:7: Error: Can't declare 'V' because it was already used in this scope.
     V V;
       ^";
   }
   {
-    <T extends core::Object* = dynamic>() →* Null x = let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
+    <T extends core::Object? = dynamic>() → Null x = let final invalid-type #t2 = invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:52:13: Error: 'T' is already declared in this scope.
     var x = T<T>() {};
-            ^" in let final <T extends core::Object* = dynamic>() →* Null T = <T extends core::Object* = dynamic>() → Null {} in T;
+            ^" in let final <T extends core::Object? = dynamic>() → Null T = <T extends core::Object? = dynamic>() → Null {} in T;
   }
   {
-    self::T* t;
+    self::T t;
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:56:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T() {}
+    T T() => throw '';
       ^";
-      function T() → self::T* {}
+      function T() → self::T
+        return throw "";
     }
   }
   {
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:59:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T() {}
+    T T() => throw '';
       ^";
-      function T() → self::T* {}
+      function T() → self::T
+        return throw "";
     }
   }
   {
-    self::T* t;
+    self::T t;
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:63:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T(T t) {}
+    T T(T t) => t;
       ^";
-      function T(self::T* t) → self::T* {}
+      function T(self::T t) → self::T
+        return t;
     }
   }
   {
     {
       invalid-expression "pkg/front_end/testcases/general/named_function_scope.dart:66:7: Error: Can't declare 'T' because it was already used in this scope.
-    T T(T t) {}
+    T T(T t) => t;
       ^";
-      function T(self::T* t) → self::T* {}
+      function T(self::T t) → self::T
+        return t;
     }
   }
   {
diff --git a/pkg/front_end/testcases/general/named_parameters.dart b/pkg/front_end/testcases/general/named_parameters.dart
index a2685613..a1892c6 100644
--- a/pkg/front_end/testcases/general/named_parameters.dart
+++ b/pkg/front_end/testcases/general/named_parameters.dart
@@ -1,10 +1,10 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
+
 class Superclass {
   foo({alpha, beta}) {}
   bar({beta, alpha}) {}
-// @dart=2.9
   namedCallback(callback({String alpha, int beta})) {
     callback(alpha: 'one', beta: 2);
     callback(beta: 1, alpha: 'two');
diff --git a/pkg/front_end/testcases/general/native_as_name.dart b/pkg/front_end/testcases/general/native_as_name.dart
index 02e4156..f22c361a 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart
+++ b/pkg/front_end/testcases/general/native_as_name.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
+
 main() {
   print(new W().native);
   print(new X().native());
@@ -29,5 +29,5 @@
 
 class Z {
   set native(String s) => f = s;
-  String f;
+  String? f;
 }
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.textual_outline.expect b/pkg/front_end/testcases/general/native_as_name.dart.textual_outline.expect
index 30a7550..7617a87 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 main() {}
 
 class W {
@@ -21,5 +20,5 @@
 
 class Z {
   set native(String s) => f = s;
-  String f;
+  String? f;
 }
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/native_as_name.dart.textual_outline_modelled.expect
index 0517e7f..d44851f 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 abstract class Y1 {
   String get native;
 }
@@ -18,7 +17,7 @@
 }
 
 class Z {
-  String f;
+  String? f;
   set native(String s) => f = s;
 }
 
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.weak.expect b/pkg/front_end/testcases/general/native_as_name.dart.weak.expect
index f85423d..236f30c 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.weak.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.weak.expect
@@ -1,89 +1,49 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class W extends core::Object {
-  field core::String* native;
-  constructor •() → self::W*
+  field core::String native;
+  constructor •() → self::W
     : self::W::native = "field", 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 X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
-  method native() → core::String*
+  method native() → core::String
     return "method";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 Y1 extends core::Object {
-  synthetic constructor •() → self::Y1*
+  synthetic constructor •() → self::Y1
     : super core::Object::•()
     ;
-  abstract get native() → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract get native() → core::String;
 }
 class Y2 extends self::Y1 {
-  synthetic constructor •() → self::Y2*
+  synthetic constructor •() → self::Y2
     : super self::Y1::•()
     ;
   @#C1
-  get native() → core::String*
+  get native() → core::String
     return "getter";
 }
 class Z extends core::Object {
-  field core::String* f = null;
-  synthetic constructor •() → self::Z*
+  field core::String? f = null;
+  synthetic constructor •() → self::Z
     : super core::Object::•()
     ;
-  set native(core::String* s) → void
+  set native(core::String s) → void
     return this.{self::Z::f} = s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::W::•().{self::W::native}{core::String*});
-  core::print(new self::X::•().{self::X::native}(){() →* core::String*});
-  core::print(new self::Y2::•().{self::Y2::native}{core::String*});
-  core::print((let final self::Z* #t1 = new self::Z::•() in block {
+  core::print(new self::W::•().{self::W::native}{core::String});
+  core::print(new self::X::•().{self::X::native}(){() → core::String});
+  core::print(new self::Y2::•().{self::Y2::native}{core::String});
+  core::print((let final self::Z #t1 = new self::Z::•() in block {
     #t1.{self::Z::native} = "setter";
-  } =>#t1).{self::Z::f}{core::String*});
+  } =>#t1).{self::Z::f}{core::String?});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.weak.modular.expect b/pkg/front_end/testcases/general/native_as_name.dart.weak.modular.expect
index f85423d..236f30c 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.weak.modular.expect
@@ -1,89 +1,49 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class W extends core::Object {
-  field core::String* native;
-  constructor •() → self::W*
+  field core::String native;
+  constructor •() → self::W
     : self::W::native = "field", 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 X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
-  method native() → core::String*
+  method native() → core::String
     return "method";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 Y1 extends core::Object {
-  synthetic constructor •() → self::Y1*
+  synthetic constructor •() → self::Y1
     : super core::Object::•()
     ;
-  abstract get native() → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract get native() → core::String;
 }
 class Y2 extends self::Y1 {
-  synthetic constructor •() → self::Y2*
+  synthetic constructor •() → self::Y2
     : super self::Y1::•()
     ;
   @#C1
-  get native() → core::String*
+  get native() → core::String
     return "getter";
 }
 class Z extends core::Object {
-  field core::String* f = null;
-  synthetic constructor •() → self::Z*
+  field core::String? f = null;
+  synthetic constructor •() → self::Z
     : super core::Object::•()
     ;
-  set native(core::String* s) → void
+  set native(core::String s) → void
     return this.{self::Z::f} = s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::W::•().{self::W::native}{core::String*});
-  core::print(new self::X::•().{self::X::native}(){() →* core::String*});
-  core::print(new self::Y2::•().{self::Y2::native}{core::String*});
-  core::print((let final self::Z* #t1 = new self::Z::•() in block {
+  core::print(new self::W::•().{self::W::native}{core::String});
+  core::print(new self::X::•().{self::X::native}(){() → core::String});
+  core::print(new self::Y2::•().{self::Y2::native}{core::String});
+  core::print((let final self::Z #t1 = new self::Z::•() in block {
     #t1.{self::Z::native} = "setter";
-  } =>#t1).{self::Z::f}{core::String*});
+  } =>#t1).{self::Z::f}{core::String?});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/native_as_name.dart.weak.outline.expect b/pkg/front_end/testcases/general/native_as_name.dart.weak.outline.expect
index 27aedb4..bbae0cc 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.weak.outline.expect
@@ -1,76 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class W extends core::Object {
-  field core::String* native;
-  constructor •() → self::W*
+  field core::String native;
+  constructor •() → self::W
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     ;
-  method native() → core::String*
+  method native() → core::String
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 abstract class Y1 extends core::Object {
-  synthetic constructor •() → self::Y1*
+  synthetic constructor •() → self::Y1
     ;
-  abstract get native() → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract get native() → core::String;
 }
 class Y2 extends self::Y1 {
-  synthetic constructor •() → self::Y2*
+  synthetic constructor •() → self::Y2
     ;
   @core::override
-  get native() → core::String*
+  get native() → core::String
     ;
 }
 class Z extends core::Object {
-  field core::String* f;
-  synthetic constructor •() → self::Z*
+  field core::String? f;
+  synthetic constructor •() → self::Z
     ;
-  set native(core::String* s) → void
+  set native(core::String s) → 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/native_as_name.dart.weak.transformed.expect b/pkg/front_end/testcases/general/native_as_name.dart.weak.transformed.expect
index f85423d..236f30c 100644
--- a/pkg/front_end/testcases/general/native_as_name.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/native_as_name.dart.weak.transformed.expect
@@ -1,89 +1,49 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class W extends core::Object {
-  field core::String* native;
-  constructor •() → self::W*
+  field core::String native;
+  constructor •() → self::W
     : self::W::native = "field", 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 X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
-  method native() → core::String*
+  method native() → core::String
     return "method";
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 Y1 extends core::Object {
-  synthetic constructor •() → self::Y1*
+  synthetic constructor •() → self::Y1
     : super core::Object::•()
     ;
-  abstract get native() → core::String*;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract get native() → core::String;
 }
 class Y2 extends self::Y1 {
-  synthetic constructor •() → self::Y2*
+  synthetic constructor •() → self::Y2
     : super self::Y1::•()
     ;
   @#C1
-  get native() → core::String*
+  get native() → core::String
     return "getter";
 }
 class Z extends core::Object {
-  field core::String* f = null;
-  synthetic constructor •() → self::Z*
+  field core::String? f = null;
+  synthetic constructor •() → self::Z
     : super core::Object::•()
     ;
-  set native(core::String* s) → void
+  set native(core::String s) → void
     return this.{self::Z::f} = s;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
-  core::print(new self::W::•().{self::W::native}{core::String*});
-  core::print(new self::X::•().{self::X::native}(){() →* core::String*});
-  core::print(new self::Y2::•().{self::Y2::native}{core::String*});
-  core::print((let final self::Z* #t1 = new self::Z::•() in block {
+  core::print(new self::W::•().{self::W::native}{core::String});
+  core::print(new self::X::•().{self::X::native}(){() → core::String});
+  core::print(new self::Y2::•().{self::Y2::native}{core::String});
+  core::print((let final self::Z #t1 = new self::Z::•() in block {
     #t1.{self::Z::native} = "setter";
-  } =>#t1).{self::Z::f}{core::String*});
+  } =>#t1).{self::Z::f}{core::String?});
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart
index 915e7dc..e797b0e 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.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
+
 const int foo = const int.fromEnvironment("fisk");
 
 class A {
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.textual_outline.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.textual_outline.expect
index 31ede27..0bad45d 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 const int foo = const int.fromEnvironment("fisk");
 
 class A {
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.textual_outline_modelled.expect
index 6e81cb6..c2ae67e 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class A {
   const A(this.bar);
   final int bar;
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.expect
index ddcf830..e401da0 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.expect
@@ -1,58 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object /*hasConstConstructor*/  {
-  final field core::int* bar;
-  const constructor •(core::int* bar) → self::A*
+  final field core::int bar;
+  const constructor •(core::int bar) → self::A
     : self::A::bar = bar, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object /*hasConstConstructor*/  {
-  final field self::A* baz;
-  const constructor •(self::A* baz) → self::B*
+  final field self::A baz;
+  const constructor •(self::A baz) → self::B
     : self::B::baz = baz, 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 extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
   method fun() → dynamic {
     new self::B::•(new self::A::•(#C1));
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static const field core::int* foo = #C1;
+static const field core::int foo = #C1;
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.modular.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.modular.expect
index ddcf830..e401da0 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.modular.expect
@@ -1,58 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object /*hasConstConstructor*/  {
-  final field core::int* bar;
-  const constructor •(core::int* bar) → self::A*
+  final field core::int bar;
+  const constructor •(core::int bar) → self::A
     : self::A::bar = bar, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object /*hasConstConstructor*/  {
-  final field self::A* baz;
-  const constructor •(self::A* baz) → self::B*
+  final field self::A baz;
+  const constructor •(self::A baz) → self::B
     : self::B::baz = baz, 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 extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
   method fun() → dynamic {
     new self::B::•(new self::A::•(#C1));
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static const field core::int* foo = #C1;
+static const field core::int foo = #C1;
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect
index 2c8cde5..fdbe3e3 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.outline.expect
@@ -1,56 +1,26 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object /*hasConstConstructor*/  {
-  final field core::int* bar;
-  const constructor •(core::int* bar) → self::A*
+  final field core::int bar;
+  const constructor •(core::int bar) → self::A
     : self::A::bar = bar, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object /*hasConstConstructor*/  {
-  final field self::A* baz;
-  const constructor •(self::A* baz) → self::B*
+  final field self::A baz;
+  const constructor •(self::A baz) → self::B
     : self::B::baz = baz, 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 extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     ;
   method fun() → 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 const field core::int* foo = const core::int::fromEnvironment("fisk");
+static const field core::int foo = const core::int::fromEnvironment("fisk");
 static method main() → dynamic
   ;
 
diff --git a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.transformed.expect b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.transformed.expect
index ddcf830..e401da0 100644
--- a/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/nested_implicit_const_with_env_var.dart.weak.transformed.expect
@@ -1,58 +1,28 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class A extends core::Object /*hasConstConstructor*/  {
-  final field core::int* bar;
-  const constructor •(core::int* bar) → self::A*
+  final field core::int bar;
+  const constructor •(core::int bar) → self::A
     : self::A::bar = bar, super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class B extends core::Object /*hasConstConstructor*/  {
-  final field self::A* baz;
-  const constructor •(self::A* baz) → self::B*
+  final field self::A baz;
+  const constructor •(self::A baz) → self::B
     : self::B::baz = baz, 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 extends core::Object {
-  synthetic constructor •() → self::C*
+  synthetic constructor •() → self::C
     : super core::Object::•()
     ;
   method fun() → dynamic {
     new self::B::•(new self::A::•(#C1));
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static const field core::int* foo = #C1;
+static const field core::int foo = #C1;
 static method main() → dynamic {}
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nested_property_set.dart b/pkg/front_end/testcases/general/nested_property_set.dart
index 52559f0..ba6989b 100644
--- a/pkg/front_end/testcases/general/nested_property_set.dart
+++ b/pkg/front_end/testcases/general/nested_property_set.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 NumField {
   num field;
 }
diff --git a/pkg/front_end/testcases/general/nested_variable_set.dart b/pkg/front_end/testcases/general/nested_variable_set.dart
index b0fc13d..915afb3 100644
--- a/pkg/front_end/testcases/general/nested_variable_set.dart
+++ b/pkg/front_end/testcases/general/nested_variable_set.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
+
 main() {
   int intLocal1;
   int intLocal2;
diff --git a/pkg/front_end/testcases/general/nested_variance.dart b/pkg/front_end/testcases/general/nested_variance.dart
index 94f1a05..c1d23d3 100644
--- a/pkg/front_end/testcases/general/nested_variance.dart
+++ b/pkg/front_end/testcases/general/nested_variance.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 i2b and checks for correct super-boundedness are applied
 // to type arguments, taking the variance of type parameters into account.
 
diff --git a/pkg/front_end/testcases/general/nested_variance2.dart b/pkg/front_end/testcases/general/nested_variance2.dart
new file mode 100644
index 0000000..e5d8f3c
--- /dev/null
+++ b/pkg/front_end/testcases/general/nested_variance2.dart
@@ -0,0 +1,242 @@
+// 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 i2b and checks for correct super-boundedness are applied
+// to type arguments, taking the variance of type parameters into account.
+
+// 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);
+
+class Acov<X extends Fcov<Y>, Y> {}
+
+class Acon<X extends Fcon<Y>, Y> {}
+
+class Ainv<X extends Finv<Y>, Y> {}
+
+typedef FcovBound<X extends num> = X Function();
+typedef FconBound<X extends num> = Function(X);
+typedef FinvBound<X extends num> = X Function(X);
+
+class AcovBound<X extends FcovBound<Y>, Y extends num> {}
+
+class AconBound<X extends FconBound<Y>, Y extends num> {}
+
+class AinvBound<X extends FinvBound<Y>, Y extends num> {}
+
+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);
+
+class AcovCyclicBound<X extends FcovCyclicBound<Y>, Y extends A<Y>> {}
+
+class AconCyclicBound<X extends FconCyclicBound<Y>, Y extends A<Y>> {}
+
+class AinvCyclicBound<X extends FinvCyclicBound<Y>, Y extends A<Y>> {}
+
+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 AcovCyclicCoBound<X extends FcovCyclicCoBound<Y>, Y extends Function(Y)> {
+}
+
+class AconCyclicCoBound<X extends FconCyclicCoBound<Y>, Y extends Function(Y)> {
+}
+
+class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>, Y extends Function(Y)> {
+}
+
+class B<X> {}
+
+void testTypeAliasAsTypeArgument(
+  Acov source1,
+  Acon source2,
+  Ainv source3,
+  AcovBound source4,
+  AconBound source5,
+  AinvBound source6,
+  AcovCyclicBound source7,
+  AconCyclicBound source8,
+  AcovCyclicCoBound source10,
+  AconCyclicCoBound source11,
+) {
+  // I2b: Use bounds (Fcov<Y>, dynamic), then replace covariant occurrence
+  // (of `Y` in `Acov<Fcov<Y>, _>`) by `Y`s value `dynamic`. Resulting type
+  // `Acov<Fcov<dynamic>, dynamic>` is regular-bounded.
+  var fsource1 = toF(source1);
+  F<Acov<Fcov<dynamic>, dynamic>> target1 = fsource1;
+
+  // I2b: Use bounds (Fcon<Y>, dynamic), then replace contravariant occurrence
+  // (of `Y` in `Acon<Fcon<Y>, _>`) by `Null`. Resulting type
+  // is super-bounded: Acon<Fcon<Object>, Null> is regular-bounded.
+  var fsource2 = toF(source2);
+  F<Acon<Fcon<Null>, dynamic>> target2 = fsource2;
+
+  // I2b: Use bounds (Finv<Y>, dynamic) then replace invariant occurrence
+  // (of `Y` in `Ainv<Finv<Y>, _>`) by `Y`s value `dynamic`. Resulting type
+  // `Ainv<Finv<dynamic>, dynamic>` is regular-bounded.
+  var fsource3 = toF(source3);
+  F<Ainv<Finv<dynamic>, dynamic>> target3 = fsource3;
+
+  // I2b: Use bounds (FcovBound<Y>, num), then replace covariant occurrence
+  // (of `Y` in `AcovBound<FcovBound<Y>, _>`) by `Y`s value `num`.
+  // Resulting type `AcovBound<FcovBound<num>, num>` is regular-bounded.
+  var fsource4 = toF(source4);
+  F<AcovBound<FcovBound<num>, num>> target4 = fsource4;
+
+  // I2b: Use bounds (FconBound<Y>, num), then replace contravariant occurrence
+  // of `Y` in `AconBound<FconBound<Y>, _>` by `Never`. Resulting type is
+  // super-bounded: AconBound<FconBound<Object>, num> is regular-bounded.
+  var fsource5 = toF(source5);
+  F<AconBound<FconBound<Never>, num>> target5 = fsource5;
+
+  // I2b: Use bounds (FinvBound<Y>, num), then replace invariant occurrence
+  // of `Y` in `AinvBound<FinvBound<Y>, _>` by `Y`s value `num`. Resulting
+  // type `AinvBound<FinvBound<num>, num>` is regular-bounded.
+  var fsource6 = toF(source6);
+  F<AinvBound<FinvBound<num>, num>> target6 = fsource6;
+
+  // I2b: Use bounds (FcovCyclicBound<Y>, A<Y>), then break cycle {Y} by
+  // replacing covariant occurrence of `Y` in `AcovCyclicBound<_, A<Y>>`
+  // by `dynamic`; then replace covariant occurrence of `Y` in
+  // `AcovCyclicBound<FcovCyclicBound<Y>, _>` by `Y`s value `A<dynamic>`.
+  // Resulting type `AcovCyclicBound<FcovCyclicBound<A<dynamic>>, A<dynamic>>>`
+  // is regular-bounded.
+  var fsource7 = toF(source7);
+  F<AcovCyclicBound<FcovCyclicBound<A<dynamic>>, A<dynamic>>> target7 =
+      fsource7;
+
+  // I2b: Use bounds (FconCyclicBound<Y>, A<Y>), then break cycle {Y} by
+  // replacing covariant occurrence of `Y` in `AconCyclicBound<_, A<Y>>`
+  // by `dynamic`; then replace contravariant occurrence of `Y` in
+  // `AconCyclicBound<FconCyclicBound<Y>, _>` by `Never`.
+  // Resulting type `AconCyclicBound<FconCyclicBound<Never>, A<dynamic>>>` is
+  // super-bounded because `AconCyclicBound<FconCyclicBound<Object>, A<Null>>>`
+  // is regular-bounded.
+  var fsource8 = toF(source8);
+  F<AconCyclicBound<FconCyclicBound<Never>, A<dynamic>>> target8 = fsource8;
+
+  // I2b: Use bounds (FinvCyclicBound<Y>, A<Y>), then break cycle {Y} by
+  // replacing covariant occurrence of `Y` in `AinvCyclicBound<_, A<Y>>`
+  // by `dynamic`; then replace invariant occurrence of `Y` in
+  // `AinvCyclicBound<FinvCyclicBound<Y>, _>` by `Y`s value `A<dynamic>`.
+  // Resulting type `AinvCyclicBound<FinvCyclicBound<A<dynamic>>, A<dynamic>>>`
+  // looks regular-bounded, but contains `FinvCyclicBound<A<dynamic>>` which
+  // is not well-bounded.
+  AinvCyclicBound source9 = throw ''; //# 01: compile-time error
+  // var fsource9 = toF(source9);
+  // F<AinvCyclicBound<FinvCyclicBound<A<dynamic>>, A<dynamic>>> target9 =
+  //     fsource9;
+
+  // I2b: Use bounds (FcovCyclicCoBound<Y>, Function(Y)), then break cycle {Y}
+  // by replacing contravariant occurrence of `Y` in
+  // `AcovCyclicCoBound<_, Function(Y)>` by `Never`; then replace covariant
+  // occurrence of `Y` in `AcovCyclicCoBound<FcovCyclicCoBound<Y>, _>` by `Y`s
+  // value `Function(Never)`. Resulting type
+  // `AcovCyclicCoBound<FcovCyclicCoBound<Function(Null)>, Function(Null)>`
+  // is regular-bounded, with subterm `FcovCyclicCoBound<Function(Never)>` which
+  // is super-bounded because `FcovCyclicCoBound<Function(Object)>` is
+  // regular-bounded.
+  var fsource10 = toF(source10);
+  F<AcovCyclicCoBound<FcovCyclicCoBound<Function(Never)>, Function(Never)>>
+      target10 = fsource10;
+
+  // I2b: Use bounds (FconCyclicCoBound<Y>, Function(Y)), then break cycle {Y}
+  // by replacing contravariant occurrence of `Y` in
+  // `AconCyclicCoBound<_, Function(Y)>` by `Never`; then replace contravariant
+  // occurrence of `Y` in `AconCyclicCoBound<FconCyclicCoBound<Y>, _>` by
+  // `Never`. Resulting type
+  // `AconCyclicCoBound<FconCyclicCoBound<Never>, Function(Never)>` is
+  // super-bounded because
+  // `AconCyclicCoBound<FconCyclicCoBound<Object>, Function(Object)>` is
+  // regular-bounded.
+  var fsource11 = toF(source11);
+  F<AconCyclicCoBound<FconCyclicCoBound<Never>, Function(Never)>> target11 =
+      fsource11;
+
+  // I2b: Use bounds (FinvCyclicCoBound<Y>, Function(Y)), then break cycle {Y}
+  // by replacing contravariant occurrence of `Y` in
+  // `AinvCyclicCoBound<_, Function(Y)>` by `Null`; then replace invariant
+  // occurrence of `Y` in `AinvCyclicCoBound<FinvCyclicCoBound<Y>, _>` by `Y`s
+  // value `Function(Null)`.
+  // Resulting type
+  // `AinvCyclicCoBound<FinvCyclicCoBound<Function(Null)>, Function(Null)>>`
+  // looks regular-bounded, but contains `FinvCyclicCoBound<Function(Null)>`
+  // which is not well-bounded.
+  AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+  // var fsource12 = toF(source12);
+  // F<AinvCyclicCoBound<FinvCyclicCoBound<Function(Null)>, Function(Null)>>
+  //     target12 = fsource12;
+}
+
+void testNested(
+  B<Acov> source1,
+  B<Acon> source2,
+  B<Ainv> source3,
+  B<AcovBound> source4,
+  B<AconBound> source5,
+  B<AinvBound> source6,
+  B<AcovCyclicBound> source7,
+  B<AconCyclicBound> source8,
+  B<AcovCyclicCoBound> source10,
+  B<AconCyclicCoBound> source11,
+) {
+  // Everything gets the same treatment when the cases from `testTopLevel`
+  // are duplicated at the nested level in a covariant position.
+
+  var fsource1 = toF(source1);
+  F<B<Acov<Fcov<dynamic>, dynamic>>> target1 = fsource1;
+
+  var fsource2 = toF(source2);
+  F<B<Acon<Fcon<Never>, dynamic>>> target2 = fsource2;
+
+  var fsource3 = toF(source3);
+  F<B<Ainv<Finv<dynamic>, dynamic>>> target3 = fsource3;
+
+  var fsource4 = toF(source4);
+  F<B<AcovBound<FcovBound<num>, num>>> target4 = fsource4;
+
+  var fsource5 = toF(source5);
+  F<B<AconBound<FconBound<Never>, num>>> target5 = fsource5;
+
+  var fsource6 = toF(source6);
+  F<B<AinvBound<FinvBound<num>, num>>> target6 = fsource6;
+
+  var fsource7 = toF(source7);
+  F<B<AcovCyclicBound<FcovCyclicBound<A<dynamic>>, A<dynamic>>>> target7 =
+      fsource7;
+
+  var fsource8 = toF(source8);
+  F<B<AconCyclicBound<FconCyclicBound<Never>, A<dynamic>>>> target8 = fsource8;
+
+  B<AinvCyclicBound> source9 = throw ''; //# 03: compile-time error
+  // var fsource9 = toF(source9);
+  // F<B<AinvCyclicBound<FinvCyclicBound<A<dynamic>>, A<dynamic>>>> target9 =
+  //    fsource9;
+
+  var fsource10 = toF(source10);
+  F<B<AcovCyclicCoBound<FcovCyclicCoBound<Function(Never)>, Function(Never)>>>
+      target10 = fsource10;
+
+  var fsource11 = toF(source11);
+  F<B<AconCyclicCoBound<FconCyclicCoBound<Never>, Function(Never)>>> target11 =
+      fsource11;
+
+  B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+  // var fsource12 = toF(source12);
+  // F<B<AinvCyclicCoBound<FinvCyclicCoBound<Function(Null)>, Function(Null)>>>
+  //     target12 = fsource12;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/nested_variance2.dart.textual_outline.expect b/pkg/front_end/testcases/general/nested_variance2.dart.textual_outline.expect
new file mode 100644
index 0000000..68a9030
--- /dev/null
+++ b/pkg/front_end/testcases/general/nested_variance2.dart.textual_outline.expect
@@ -0,0 +1,74 @@
+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);
+
+class Acov<X extends Fcov<Y>, Y> {}
+
+class Acon<X extends Fcon<Y>, Y> {}
+
+class Ainv<X extends Finv<Y>, Y> {}
+
+typedef FcovBound<X extends num> = X Function();
+typedef FconBound<X extends num> = Function(X);
+typedef FinvBound<X extends num> = X Function(X);
+
+class AcovBound<X extends FcovBound<Y>, Y extends num> {}
+
+class AconBound<X extends FconBound<Y>, Y extends num> {}
+
+class AinvBound<X extends FinvBound<Y>, Y extends num> {}
+
+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);
+
+class AcovCyclicBound<X extends FcovCyclicBound<Y>, Y extends A<Y>> {}
+
+class AconCyclicBound<X extends FconCyclicBound<Y>, Y extends A<Y>> {}
+
+class AinvCyclicBound<X extends FinvCyclicBound<Y>, Y extends A<Y>> {}
+
+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 AcovCyclicCoBound<X extends FcovCyclicCoBound<Y>, Y extends Function(Y)> {
+}
+
+class AconCyclicCoBound<X extends FconCyclicCoBound<Y>, Y extends Function(Y)> {
+}
+
+class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>, Y extends Function(Y)> {
+}
+
+class B<X> {}
+
+void testTypeAliasAsTypeArgument(
+  Acov source1,
+  Acon source2,
+  Ainv source3,
+  AcovBound source4,
+  AconBound source5,
+  AinvBound source6,
+  AcovCyclicBound source7,
+  AconCyclicBound source8,
+  AcovCyclicCoBound source10,
+  AconCyclicCoBound source11,
+) {}
+void testNested(
+  B<Acov> source1,
+  B<Acon> source2,
+  B<Ainv> source3,
+  B<AcovBound> source4,
+  B<AconBound> source5,
+  B<AinvBound> source6,
+  B<AcovCyclicBound> source7,
+  B<AconCyclicBound> source8,
+  B<AcovCyclicCoBound> source10,
+  B<AconCyclicCoBound> source11,
+) {}
+main() {}
diff --git a/pkg/front_end/testcases/general/nested_variance2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/nested_variance2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..b9ddca8
--- /dev/null
+++ b/pkg/front_end/testcases/general/nested_variance2.dart.textual_outline_modelled.expect
@@ -0,0 +1,71 @@
+F<X> toF<X>(X x) => throw '';
+
+class A<X> {}
+
+class Acon<X extends Fcon<Y>, Y> {}
+
+class AconBound<X extends FconBound<Y>, Y extends num> {}
+
+class AconCyclicBound<X extends FconCyclicBound<Y>, Y extends A<Y>> {}
+
+class AconCyclicCoBound<X extends FconCyclicCoBound<Y>, Y extends Function(Y)> {
+}
+
+class Acov<X extends Fcov<Y>, Y> {}
+
+class AcovBound<X extends FcovBound<Y>, Y extends num> {}
+
+class AcovCyclicBound<X extends FcovCyclicBound<Y>, Y extends A<Y>> {}
+
+class AcovCyclicCoBound<X extends FcovCyclicCoBound<Y>, Y extends Function(Y)> {
+}
+
+class Ainv<X extends Finv<Y>, Y> {}
+
+class AinvBound<X extends FinvBound<Y>, Y extends num> {}
+
+class AinvCyclicBound<X extends FinvCyclicBound<Y>, Y extends A<Y>> {}
+
+class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>, Y extends Function(Y)> {
+}
+
+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<Acov> source1,
+  B<Acon> source2,
+  B<Ainv> source3,
+  B<AcovBound> source4,
+  B<AconBound> source5,
+  B<AinvBound> source6,
+  B<AcovCyclicBound> source7,
+  B<AconCyclicBound> source8,
+  B<AcovCyclicCoBound> source10,
+  B<AconCyclicCoBound> source11,
+) {}
+void testTypeAliasAsTypeArgument(
+  Acov source1,
+  Acon source2,
+  Ainv source3,
+  AcovBound source4,
+  AconBound source5,
+  AinvBound source6,
+  AcovCyclicBound source7,
+  AconCyclicBound source8,
+  AcovCyclicCoBound source10,
+  AconCyclicCoBound source11,
+) {}
diff --git a/pkg/front_end/testcases/general/nested_variance2.dart.weak.expect b/pkg/front_end/testcases/general/nested_variance2.dart.weak.expect
new file mode 100644
index 0000000..8c5790b
--- /dev/null
+++ b/pkg/front_end/testcases/general/nested_variance2.dart.weak.expect
@@ -0,0 +1,203 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(Y)' of the type variable 'Y' on 'AinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+// pkg/front_end/testcases/general/nested_variance2.dart:57:57: Context: This is the type variable whose bound isn't conformed to.
+// class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>, Y extends Function(Y)> {
+//                                                         ^
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Context: If you want 'AinvCyclicCoBound<dynamic Function(Never) Function(dynamic Function(Never)), dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>' must then satisfy its bounds, which it does not.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(X)' of the type variable 'X' on 'FinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+// pkg/front_end/testcases/general/nested_variance2.dart:49:27: Context: This is the type variable whose bound isn't conformed to.
+// typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
+//                           ^
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Context: If you want 'FinvCyclicCoBound<dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>' must then satisfy its bounds, which it does not.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:84:42: Error: A value of type 'void Function<Y extends Acon<dynamic Function(Never), dynamic>>()' can't be assigned to a variable of type 'void Function<Y extends Acon<dynamic Function(Null), dynamic>>()' because 'Null' is nullable and 'Never' isn't.
+//  - 'Acon' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//   F<Acon<Fcon<Null>, dynamic>> target2 = fsource2;
+//                                          ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(Y)' of the type variable 'Y' on 'AinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+// pkg/front_end/testcases/general/nested_variance2.dart:57:57: Context: This is the type variable whose bound isn't conformed to.
+// class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>, Y extends Function(Y)> {
+//                                                         ^
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Context: If you want 'AinvCyclicCoBound<dynamic Function(Never) Function(dynamic Function(Never)), dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'B<AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>>' must then satisfy its bounds, which it does not.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'B' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(X)' of the type variable 'X' on 'FinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+// pkg/front_end/testcases/general/nested_variance2.dart:49:27: Context: This is the type variable whose bound isn't conformed to.
+// typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
+//                           ^
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Context: If you want 'FinvCyclicCoBound<dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'B<AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>>' must then satisfy its bounds, which it does not.
+//  - 'B' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+//
+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 Acov<X extends () → self::Acov::Y% = () → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Acov<self::Acov::X, self::Acov::Y%>
+    : super core::Object::•()
+    ;
+}
+class Acon<X extends (self::Acon::Y%) → dynamic = (Never) → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Acon<self::Acon::X, self::Acon::Y%>
+    : super core::Object::•()
+    ;
+}
+class Ainv<X extends (self::Ainv::Y%) → self::Ainv::Y% = (dynamic) → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Ainv<self::Ainv::X, self::Ainv::Y%>
+    : super core::Object::•()
+    ;
+}
+class AcovBound<X extends () → self::AcovBound::Y = () → core::num, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AcovBound<self::AcovBound::X, self::AcovBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AconBound<X extends (self::AconBound::Y) → dynamic = (Never) → dynamic, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AconBound<self::AconBound::X, self::AconBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AinvBound<X extends (self::AinvBound::Y) → self::AinvBound::Y = (core::num) → core::num, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AinvBound<self::AinvBound::X, self::AinvBound::Y>
+    : super core::Object::•()
+    ;
+}
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    : super core::Object::•()
+    ;
+}
+class AcovCyclicBound<X extends () → self::AcovCyclicBound::Y = () → self::A<dynamic>, Y extends self::A<self::AcovCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X, self::AcovCyclicBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AconCyclicBound<X extends (self::AconCyclicBound::Y) → dynamic = (Never) → dynamic, Y extends self::A<self::AconCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X, self::AconCyclicBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AinvCyclicBound<X extends (self::AinvCyclicBound::Y) → self::AinvCyclicBound::Y = (self::A<dynamic>) → self::A<dynamic>, Y extends self::A<self::AinvCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X, self::AinvCyclicBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AcovCyclicCoBound<X extends () → self::AcovCyclicCoBound::Y = () → (Never) → dynamic, Y extends (self::AcovCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X, self::AcovCyclicCoBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y) → dynamic = (Never) → dynamic, Y extends (self::AconCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X, self::AconCyclicCoBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y) → self::AinvCyclicCoBound::Y = ((Never) → dynamic) → (Never) → dynamic, Y extends (self::AinvCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X, self::AinvCyclicCoBound::Y>
+    : 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 testTypeAliasAsTypeArgument(self::Acov<() → dynamic, dynamic> source1, self::Acon<(Never) → dynamic, dynamic> source2, self::Ainv<(dynamic) → dynamic, dynamic> source3, self::AcovBound<() → core::num, core::num> source4, self::AconBound<(Never) → dynamic, core::num> source5, self::AinvBound<(core::num) → core::num, core::num> source6, self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> source7, self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> source8, self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> source10, self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> source11) → void {
+  <Y extends self::Acov<() → dynamic, dynamic> = dynamic>() → void fsource1 = self::toF<self::Acov<() → dynamic, dynamic>>(source1);
+  <Y extends self::Acov<() → dynamic, dynamic> = dynamic>() → void target1 = fsource1;
+  <Y extends self::Acon<(Never) → dynamic, dynamic> = dynamic>() → void fsource2 = self::toF<self::Acon<(Never) → dynamic, dynamic>>(source2);
+  <Y extends self::Acon<(Null) → dynamic, dynamic> = dynamic>() → void target2 = invalid-expression "pkg/front_end/testcases/general/nested_variance2.dart:84:42: Error: A value of type 'void Function<Y extends Acon<dynamic Function(Never), dynamic>>()' can't be assigned to a variable of type 'void Function<Y extends Acon<dynamic Function(Null), dynamic>>()' because 'Null' is nullable and 'Never' isn't.
+ - 'Acon' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+  F<Acon<Fcon<Null>, dynamic>> target2 = fsource2;
+                                         ^" in fsource2 as{TypeError,ForNonNullableByDefault} <Y extends self::Acon<(Null) → dynamic, dynamic> = dynamic>() → void;
+  <Y extends self::Ainv<(dynamic) → dynamic, dynamic> = dynamic>() → void fsource3 = self::toF<self::Ainv<(dynamic) → dynamic, dynamic>>(source3);
+  <Y extends self::Ainv<(dynamic) → dynamic, dynamic> = dynamic>() → void target3 = fsource3;
+  <Y extends self::AcovBound<() → core::num, core::num> = dynamic>() → void fsource4 = self::toF<self::AcovBound<() → core::num, core::num>>(source4);
+  <Y extends self::AcovBound<() → core::num, core::num> = dynamic>() → void target4 = fsource4;
+  <Y extends self::AconBound<(Never) → dynamic, core::num> = dynamic>() → void fsource5 = self::toF<self::AconBound<(Never) → dynamic, core::num>>(source5);
+  <Y extends self::AconBound<(Never) → dynamic, core::num> = dynamic>() → void target5 = fsource5;
+  <Y extends self::AinvBound<(core::num) → core::num, core::num> = dynamic>() → void fsource6 = self::toF<self::AinvBound<(core::num) → core::num, core::num>>(source6);
+  <Y extends self::AinvBound<(core::num) → core::num, core::num> = dynamic>() → void target6 = fsource6;
+  <Y extends self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> = dynamic>() → void fsource7 = self::toF<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>>(source7);
+  <Y extends self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> = dynamic>() → void target7 = fsource7;
+  <Y extends self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> = dynamic>() → void fsource8 = self::toF<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>>(source8);
+  <Y extends self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> = dynamic>() → void target8 = fsource8;
+  self::AinvCyclicBound<(self::A<dynamic>) → self::A<dynamic>, self::A<dynamic>> source9 = throw "";
+  <Y extends self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> = dynamic>() → void fsource10 = self::toF<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>>(source10);
+  <Y extends self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> = dynamic>() → void target10 = fsource10;
+  <Y extends self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> = dynamic>() → void fsource11 = self::toF<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>>(source11);
+  <Y extends self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> = dynamic>() → void target11 = fsource11;
+  self::AinvCyclicCoBound<((Never) → dynamic) → (Never) → dynamic, (Never) → dynamic> source12 = throw "";
+}
+static method testNested(self::B<self::Acov<() → dynamic, dynamic>> source1, self::B<self::Acon<(Never) → dynamic, dynamic>> source2, self::B<self::Ainv<(dynamic) → dynamic, dynamic>> source3, self::B<self::AcovBound<() → core::num, core::num>> source4, self::B<self::AconBound<(Never) → dynamic, core::num>> source5, self::B<self::AinvBound<(core::num) → core::num, core::num>> source6, self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> source7, self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> source8, self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> source10, self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> source11) → void {
+  <Y extends self::B<self::Acov<() → dynamic, dynamic>> = dynamic>() → void fsource1 = self::toF<self::B<self::Acov<() → dynamic, dynamic>>>(source1);
+  <Y extends self::B<self::Acov<() → dynamic, dynamic>> = dynamic>() → void target1 = fsource1;
+  <Y extends self::B<self::Acon<(Never) → dynamic, dynamic>> = dynamic>() → void fsource2 = self::toF<self::B<self::Acon<(Never) → dynamic, dynamic>>>(source2);
+  <Y extends self::B<self::Acon<(Never) → dynamic, dynamic>> = dynamic>() → void target2 = fsource2;
+  <Y extends self::B<self::Ainv<(dynamic) → dynamic, dynamic>> = dynamic>() → void fsource3 = self::toF<self::B<self::Ainv<(dynamic) → dynamic, dynamic>>>(source3);
+  <Y extends self::B<self::Ainv<(dynamic) → dynamic, dynamic>> = dynamic>() → void target3 = fsource3;
+  <Y extends self::B<self::AcovBound<() → core::num, core::num>> = dynamic>() → void fsource4 = self::toF<self::B<self::AcovBound<() → core::num, core::num>>>(source4);
+  <Y extends self::B<self::AcovBound<() → core::num, core::num>> = dynamic>() → void target4 = fsource4;
+  <Y extends self::B<self::AconBound<(Never) → dynamic, core::num>> = dynamic>() → void fsource5 = self::toF<self::B<self::AconBound<(Never) → dynamic, core::num>>>(source5);
+  <Y extends self::B<self::AconBound<(Never) → dynamic, core::num>> = dynamic>() → void target5 = fsource5;
+  <Y extends self::B<self::AinvBound<(core::num) → core::num, core::num>> = dynamic>() → void fsource6 = self::toF<self::B<self::AinvBound<(core::num) → core::num, core::num>>>(source6);
+  <Y extends self::B<self::AinvBound<(core::num) → core::num, core::num>> = dynamic>() → void target6 = fsource6;
+  <Y extends self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> = dynamic>() → void fsource7 = self::toF<self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>>>(source7);
+  <Y extends self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> = dynamic>() → void target7 = fsource7;
+  <Y extends self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> = dynamic>() → void fsource8 = self::toF<self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>>>(source8);
+  <Y extends self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> = dynamic>() → void target8 = fsource8;
+  self::B<self::AinvCyclicBound<(self::A<dynamic>) → self::A<dynamic>, self::A<dynamic>>> source9 = throw "";
+  <Y extends self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> = dynamic>() → void fsource10 = self::toF<self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>>>(source10);
+  <Y extends self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> = dynamic>() → void target10 = fsource10;
+  <Y extends self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> = dynamic>() → void fsource11 = self::toF<self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>>>(source11);
+  <Y extends self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> = dynamic>() → void target11 = fsource11;
+  self::B<self::AinvCyclicCoBound<((Never) → dynamic) → (Never) → dynamic, (Never) → dynamic>> source12 = throw "";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/nested_variance2.dart.weak.modular.expect b/pkg/front_end/testcases/general/nested_variance2.dart.weak.modular.expect
new file mode 100644
index 0000000..8c5790b
--- /dev/null
+++ b/pkg/front_end/testcases/general/nested_variance2.dart.weak.modular.expect
@@ -0,0 +1,203 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(Y)' of the type variable 'Y' on 'AinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+// pkg/front_end/testcases/general/nested_variance2.dart:57:57: Context: This is the type variable whose bound isn't conformed to.
+// class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>, Y extends Function(Y)> {
+//                                                         ^
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Context: If you want 'AinvCyclicCoBound<dynamic Function(Never) Function(dynamic Function(Never)), dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>' must then satisfy its bounds, which it does not.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(X)' of the type variable 'X' on 'FinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+// pkg/front_end/testcases/general/nested_variance2.dart:49:27: Context: This is the type variable whose bound isn't conformed to.
+// typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
+//                           ^
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Context: If you want 'FinvCyclicCoBound<dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>' must then satisfy its bounds, which it does not.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:84:42: Error: A value of type 'void Function<Y extends Acon<dynamic Function(Never), dynamic>>()' can't be assigned to a variable of type 'void Function<Y extends Acon<dynamic Function(Null), dynamic>>()' because 'Null' is nullable and 'Never' isn't.
+//  - 'Acon' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//   F<Acon<Fcon<Null>, dynamic>> target2 = fsource2;
+//                                          ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(Y)' of the type variable 'Y' on 'AinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+// pkg/front_end/testcases/general/nested_variance2.dart:57:57: Context: This is the type variable whose bound isn't conformed to.
+// class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>, Y extends Function(Y)> {
+//                                                         ^
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Context: If you want 'AinvCyclicCoBound<dynamic Function(Never) Function(dynamic Function(Never)), dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'B<AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>>' must then satisfy its bounds, which it does not.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'B' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(X)' of the type variable 'X' on 'FinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+// pkg/front_end/testcases/general/nested_variance2.dart:49:27: Context: This is the type variable whose bound isn't conformed to.
+// typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
+//                           ^
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Context: If you want 'FinvCyclicCoBound<dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'B<AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>>' must then satisfy its bounds, which it does not.
+//  - 'B' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+//
+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 Acov<X extends () → self::Acov::Y% = () → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Acov<self::Acov::X, self::Acov::Y%>
+    : super core::Object::•()
+    ;
+}
+class Acon<X extends (self::Acon::Y%) → dynamic = (Never) → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Acon<self::Acon::X, self::Acon::Y%>
+    : super core::Object::•()
+    ;
+}
+class Ainv<X extends (self::Ainv::Y%) → self::Ainv::Y% = (dynamic) → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Ainv<self::Ainv::X, self::Ainv::Y%>
+    : super core::Object::•()
+    ;
+}
+class AcovBound<X extends () → self::AcovBound::Y = () → core::num, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AcovBound<self::AcovBound::X, self::AcovBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AconBound<X extends (self::AconBound::Y) → dynamic = (Never) → dynamic, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AconBound<self::AconBound::X, self::AconBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AinvBound<X extends (self::AinvBound::Y) → self::AinvBound::Y = (core::num) → core::num, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AinvBound<self::AinvBound::X, self::AinvBound::Y>
+    : super core::Object::•()
+    ;
+}
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    : super core::Object::•()
+    ;
+}
+class AcovCyclicBound<X extends () → self::AcovCyclicBound::Y = () → self::A<dynamic>, Y extends self::A<self::AcovCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X, self::AcovCyclicBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AconCyclicBound<X extends (self::AconCyclicBound::Y) → dynamic = (Never) → dynamic, Y extends self::A<self::AconCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X, self::AconCyclicBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AinvCyclicBound<X extends (self::AinvCyclicBound::Y) → self::AinvCyclicBound::Y = (self::A<dynamic>) → self::A<dynamic>, Y extends self::A<self::AinvCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X, self::AinvCyclicBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AcovCyclicCoBound<X extends () → self::AcovCyclicCoBound::Y = () → (Never) → dynamic, Y extends (self::AcovCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X, self::AcovCyclicCoBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y) → dynamic = (Never) → dynamic, Y extends (self::AconCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X, self::AconCyclicCoBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y) → self::AinvCyclicCoBound::Y = ((Never) → dynamic) → (Never) → dynamic, Y extends (self::AinvCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X, self::AinvCyclicCoBound::Y>
+    : 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 testTypeAliasAsTypeArgument(self::Acov<() → dynamic, dynamic> source1, self::Acon<(Never) → dynamic, dynamic> source2, self::Ainv<(dynamic) → dynamic, dynamic> source3, self::AcovBound<() → core::num, core::num> source4, self::AconBound<(Never) → dynamic, core::num> source5, self::AinvBound<(core::num) → core::num, core::num> source6, self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> source7, self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> source8, self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> source10, self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> source11) → void {
+  <Y extends self::Acov<() → dynamic, dynamic> = dynamic>() → void fsource1 = self::toF<self::Acov<() → dynamic, dynamic>>(source1);
+  <Y extends self::Acov<() → dynamic, dynamic> = dynamic>() → void target1 = fsource1;
+  <Y extends self::Acon<(Never) → dynamic, dynamic> = dynamic>() → void fsource2 = self::toF<self::Acon<(Never) → dynamic, dynamic>>(source2);
+  <Y extends self::Acon<(Null) → dynamic, dynamic> = dynamic>() → void target2 = invalid-expression "pkg/front_end/testcases/general/nested_variance2.dart:84:42: Error: A value of type 'void Function<Y extends Acon<dynamic Function(Never), dynamic>>()' can't be assigned to a variable of type 'void Function<Y extends Acon<dynamic Function(Null), dynamic>>()' because 'Null' is nullable and 'Never' isn't.
+ - 'Acon' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+  F<Acon<Fcon<Null>, dynamic>> target2 = fsource2;
+                                         ^" in fsource2 as{TypeError,ForNonNullableByDefault} <Y extends self::Acon<(Null) → dynamic, dynamic> = dynamic>() → void;
+  <Y extends self::Ainv<(dynamic) → dynamic, dynamic> = dynamic>() → void fsource3 = self::toF<self::Ainv<(dynamic) → dynamic, dynamic>>(source3);
+  <Y extends self::Ainv<(dynamic) → dynamic, dynamic> = dynamic>() → void target3 = fsource3;
+  <Y extends self::AcovBound<() → core::num, core::num> = dynamic>() → void fsource4 = self::toF<self::AcovBound<() → core::num, core::num>>(source4);
+  <Y extends self::AcovBound<() → core::num, core::num> = dynamic>() → void target4 = fsource4;
+  <Y extends self::AconBound<(Never) → dynamic, core::num> = dynamic>() → void fsource5 = self::toF<self::AconBound<(Never) → dynamic, core::num>>(source5);
+  <Y extends self::AconBound<(Never) → dynamic, core::num> = dynamic>() → void target5 = fsource5;
+  <Y extends self::AinvBound<(core::num) → core::num, core::num> = dynamic>() → void fsource6 = self::toF<self::AinvBound<(core::num) → core::num, core::num>>(source6);
+  <Y extends self::AinvBound<(core::num) → core::num, core::num> = dynamic>() → void target6 = fsource6;
+  <Y extends self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> = dynamic>() → void fsource7 = self::toF<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>>(source7);
+  <Y extends self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> = dynamic>() → void target7 = fsource7;
+  <Y extends self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> = dynamic>() → void fsource8 = self::toF<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>>(source8);
+  <Y extends self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> = dynamic>() → void target8 = fsource8;
+  self::AinvCyclicBound<(self::A<dynamic>) → self::A<dynamic>, self::A<dynamic>> source9 = throw "";
+  <Y extends self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> = dynamic>() → void fsource10 = self::toF<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>>(source10);
+  <Y extends self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> = dynamic>() → void target10 = fsource10;
+  <Y extends self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> = dynamic>() → void fsource11 = self::toF<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>>(source11);
+  <Y extends self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> = dynamic>() → void target11 = fsource11;
+  self::AinvCyclicCoBound<((Never) → dynamic) → (Never) → dynamic, (Never) → dynamic> source12 = throw "";
+}
+static method testNested(self::B<self::Acov<() → dynamic, dynamic>> source1, self::B<self::Acon<(Never) → dynamic, dynamic>> source2, self::B<self::Ainv<(dynamic) → dynamic, dynamic>> source3, self::B<self::AcovBound<() → core::num, core::num>> source4, self::B<self::AconBound<(Never) → dynamic, core::num>> source5, self::B<self::AinvBound<(core::num) → core::num, core::num>> source6, self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> source7, self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> source8, self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> source10, self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> source11) → void {
+  <Y extends self::B<self::Acov<() → dynamic, dynamic>> = dynamic>() → void fsource1 = self::toF<self::B<self::Acov<() → dynamic, dynamic>>>(source1);
+  <Y extends self::B<self::Acov<() → dynamic, dynamic>> = dynamic>() → void target1 = fsource1;
+  <Y extends self::B<self::Acon<(Never) → dynamic, dynamic>> = dynamic>() → void fsource2 = self::toF<self::B<self::Acon<(Never) → dynamic, dynamic>>>(source2);
+  <Y extends self::B<self::Acon<(Never) → dynamic, dynamic>> = dynamic>() → void target2 = fsource2;
+  <Y extends self::B<self::Ainv<(dynamic) → dynamic, dynamic>> = dynamic>() → void fsource3 = self::toF<self::B<self::Ainv<(dynamic) → dynamic, dynamic>>>(source3);
+  <Y extends self::B<self::Ainv<(dynamic) → dynamic, dynamic>> = dynamic>() → void target3 = fsource3;
+  <Y extends self::B<self::AcovBound<() → core::num, core::num>> = dynamic>() → void fsource4 = self::toF<self::B<self::AcovBound<() → core::num, core::num>>>(source4);
+  <Y extends self::B<self::AcovBound<() → core::num, core::num>> = dynamic>() → void target4 = fsource4;
+  <Y extends self::B<self::AconBound<(Never) → dynamic, core::num>> = dynamic>() → void fsource5 = self::toF<self::B<self::AconBound<(Never) → dynamic, core::num>>>(source5);
+  <Y extends self::B<self::AconBound<(Never) → dynamic, core::num>> = dynamic>() → void target5 = fsource5;
+  <Y extends self::B<self::AinvBound<(core::num) → core::num, core::num>> = dynamic>() → void fsource6 = self::toF<self::B<self::AinvBound<(core::num) → core::num, core::num>>>(source6);
+  <Y extends self::B<self::AinvBound<(core::num) → core::num, core::num>> = dynamic>() → void target6 = fsource6;
+  <Y extends self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> = dynamic>() → void fsource7 = self::toF<self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>>>(source7);
+  <Y extends self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> = dynamic>() → void target7 = fsource7;
+  <Y extends self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> = dynamic>() → void fsource8 = self::toF<self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>>>(source8);
+  <Y extends self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> = dynamic>() → void target8 = fsource8;
+  self::B<self::AinvCyclicBound<(self::A<dynamic>) → self::A<dynamic>, self::A<dynamic>>> source9 = throw "";
+  <Y extends self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> = dynamic>() → void fsource10 = self::toF<self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>>>(source10);
+  <Y extends self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> = dynamic>() → void target10 = fsource10;
+  <Y extends self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> = dynamic>() → void fsource11 = self::toF<self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>>>(source11);
+  <Y extends self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> = dynamic>() → void target11 = fsource11;
+  self::B<self::AinvCyclicCoBound<((Never) → dynamic) → (Never) → dynamic, (Never) → dynamic>> source12 = throw "";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/nested_variance2.dart.weak.outline.expect b/pkg/front_end/testcases/general/nested_variance2.dart.weak.outline.expect
new file mode 100644
index 0000000..0cf1a6b
--- /dev/null
+++ b/pkg/front_end/testcases/general/nested_variance2.dart.weak.outline.expect
@@ -0,0 +1,81 @@
+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 Acov<X extends () → self::Acov::Y% = () → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Acov<self::Acov::X, self::Acov::Y%>
+    ;
+}
+class Acon<X extends (self::Acon::Y%) → dynamic = (Never) → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Acon<self::Acon::X, self::Acon::Y%>
+    ;
+}
+class Ainv<X extends (self::Ainv::Y%) → self::Ainv::Y% = (dynamic) → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Ainv<self::Ainv::X, self::Ainv::Y%>
+    ;
+}
+class AcovBound<X extends () → self::AcovBound::Y = () → core::num, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AcovBound<self::AcovBound::X, self::AcovBound::Y>
+    ;
+}
+class AconBound<X extends (self::AconBound::Y) → dynamic = (Never) → dynamic, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AconBound<self::AconBound::X, self::AconBound::Y>
+    ;
+}
+class AinvBound<X extends (self::AinvBound::Y) → self::AinvBound::Y = (core::num) → core::num, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AinvBound<self::AinvBound::X, self::AinvBound::Y>
+    ;
+}
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    ;
+}
+class AcovCyclicBound<X extends () → self::AcovCyclicBound::Y = () → self::A<dynamic>, Y extends self::A<self::AcovCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X, self::AcovCyclicBound::Y>
+    ;
+}
+class AconCyclicBound<X extends (self::AconCyclicBound::Y) → dynamic = (Never) → dynamic, Y extends self::A<self::AconCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X, self::AconCyclicBound::Y>
+    ;
+}
+class AinvCyclicBound<X extends (self::AinvCyclicBound::Y) → self::AinvCyclicBound::Y = (self::A<dynamic>) → self::A<dynamic>, Y extends self::A<self::AinvCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X, self::AinvCyclicBound::Y>
+    ;
+}
+class AcovCyclicCoBound<X extends () → self::AcovCyclicCoBound::Y = () → (Never) → dynamic, Y extends (self::AcovCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X, self::AcovCyclicCoBound::Y>
+    ;
+}
+class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y) → dynamic = (Never) → dynamic, Y extends (self::AconCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X, self::AconCyclicCoBound::Y>
+    ;
+}
+class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y) → self::AinvCyclicCoBound::Y = ((Never) → dynamic) → (Never) → dynamic, Y extends (self::AinvCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X, self::AinvCyclicCoBound::Y>
+    ;
+}
+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 testTypeAliasAsTypeArgument(self::Acov<() → dynamic, dynamic> source1, self::Acon<(Never) → dynamic, dynamic> source2, self::Ainv<(dynamic) → dynamic, dynamic> source3, self::AcovBound<() → core::num, core::num> source4, self::AconBound<(Never) → dynamic, core::num> source5, self::AinvBound<(core::num) → core::num, core::num> source6, self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> source7, self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> source8, self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> source10, self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> source11) → void
+  ;
+static method testNested(self::B<self::Acov<() → dynamic, dynamic>> source1, self::B<self::Acon<(Never) → dynamic, dynamic>> source2, self::B<self::Ainv<(dynamic) → dynamic, dynamic>> source3, self::B<self::AcovBound<() → core::num, core::num>> source4, self::B<self::AconBound<(Never) → dynamic, core::num>> source5, self::B<self::AinvBound<(core::num) → core::num, core::num>> source6, self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> source7, self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> source8, self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> source10, self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> source11) → void
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/nested_variance2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/nested_variance2.dart.weak.transformed.expect
new file mode 100644
index 0000000..77f1c4c
--- /dev/null
+++ b/pkg/front_end/testcases/general/nested_variance2.dart.weak.transformed.expect
@@ -0,0 +1,203 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(Y)' of the type variable 'Y' on 'AinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+// pkg/front_end/testcases/general/nested_variance2.dart:57:57: Context: This is the type variable whose bound isn't conformed to.
+// class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>, Y extends Function(Y)> {
+//                                                         ^
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Context: If you want 'AinvCyclicCoBound<dynamic Function(Never) Function(dynamic Function(Never)), dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>' must then satisfy its bounds, which it does not.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(X)' of the type variable 'X' on 'FinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+// pkg/front_end/testcases/general/nested_variance2.dart:49:27: Context: This is the type variable whose bound isn't conformed to.
+// typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
+//                           ^
+// pkg/front_end/testcases/general/nested_variance2.dart:177:21: Context: If you want 'FinvCyclicCoBound<dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>' must then satisfy its bounds, which it does not.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   AinvCyclicCoBound source12 = throw ''; //# 02: compile-time error
+//                     ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:84:42: Error: A value of type 'void Function<Y extends Acon<dynamic Function(Never), dynamic>>()' can't be assigned to a variable of type 'void Function<Y extends Acon<dynamic Function(Null), dynamic>>()' because 'Null' is nullable and 'Never' isn't.
+//  - 'Acon' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//   F<Acon<Fcon<Null>, dynamic>> target2 = fsource2;
+//                                          ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(Y)' of the type variable 'Y' on 'AinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+// pkg/front_end/testcases/general/nested_variance2.dart:57:57: Context: This is the type variable whose bound isn't conformed to.
+// class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>, Y extends Function(Y)> {
+//                                                         ^
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Context: If you want 'AinvCyclicCoBound<dynamic Function(Never) Function(dynamic Function(Never)), dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'B<AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>>' must then satisfy its bounds, which it does not.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'B' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+//
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Error: Type argument 'dynamic Function(Never)' doesn't conform to the bound 'dynamic Function(X)' of the type variable 'X' on 'FinvCyclicCoBound'.
+// Try changing type arguments so that they conform to the bounds.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+// pkg/front_end/testcases/general/nested_variance2.dart:49:27: Context: This is the type variable whose bound isn't conformed to.
+// typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);
+//                           ^
+// pkg/front_end/testcases/general/nested_variance2.dart:236:24: Context: If you want 'FinvCyclicCoBound<dynamic Function(Never)>' to be a super-bounded type, note that the inverted type 'B<AinvCyclicCoBound<FinvCyclicCoBound<Never Function(Never)>, Never Function(Object?)>>' must then satisfy its bounds, which it does not.
+//  - 'B' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'AinvCyclicCoBound' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+//  - 'Object' is from 'dart:core'.
+//   B<AinvCyclicCoBound> source12 = throw ''; //# 04: compile-time error
+//                        ^
+//
+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 Acov<X extends () → self::Acov::Y% = () → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Acov<self::Acov::X, self::Acov::Y%>
+    : super core::Object::•()
+    ;
+}
+class Acon<X extends (self::Acon::Y%) → dynamic = (Never) → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Acon<self::Acon::X, self::Acon::Y%>
+    : super core::Object::•()
+    ;
+}
+class Ainv<X extends (self::Ainv::Y%) → self::Ainv::Y% = (dynamic) → dynamic, Y extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::Ainv<self::Ainv::X, self::Ainv::Y%>
+    : super core::Object::•()
+    ;
+}
+class AcovBound<X extends () → self::AcovBound::Y = () → core::num, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AcovBound<self::AcovBound::X, self::AcovBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AconBound<X extends (self::AconBound::Y) → dynamic = (Never) → dynamic, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AconBound<self::AconBound::X, self::AconBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AinvBound<X extends (self::AinvBound::Y) → self::AinvBound::Y = (core::num) → core::num, Y extends core::num> extends core::Object {
+  synthetic constructor •() → self::AinvBound<self::AinvBound::X, self::AinvBound::Y>
+    : super core::Object::•()
+    ;
+}
+class A<X extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X%>
+    : super core::Object::•()
+    ;
+}
+class AcovCyclicBound<X extends () → self::AcovCyclicBound::Y = () → self::A<dynamic>, Y extends self::A<self::AcovCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AcovCyclicBound<self::AcovCyclicBound::X, self::AcovCyclicBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AconCyclicBound<X extends (self::AconCyclicBound::Y) → dynamic = (Never) → dynamic, Y extends self::A<self::AconCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AconCyclicBound<self::AconCyclicBound::X, self::AconCyclicBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AinvCyclicBound<X extends (self::AinvCyclicBound::Y) → self::AinvCyclicBound::Y = (self::A<dynamic>) → self::A<dynamic>, Y extends self::A<self::AinvCyclicBound::Y> = self::A<dynamic>> extends core::Object {
+  synthetic constructor •() → self::AinvCyclicBound<self::AinvCyclicBound::X, self::AinvCyclicBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AcovCyclicCoBound<X extends () → self::AcovCyclicCoBound::Y = () → (Never) → dynamic, Y extends (self::AcovCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AcovCyclicCoBound<self::AcovCyclicCoBound::X, self::AcovCyclicCoBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AconCyclicCoBound<X extends (self::AconCyclicCoBound::Y) → dynamic = (Never) → dynamic, Y extends (self::AconCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AconCyclicCoBound<self::AconCyclicCoBound::X, self::AconCyclicCoBound::Y>
+    : super core::Object::•()
+    ;
+}
+class AinvCyclicCoBound<X extends (self::AinvCyclicCoBound::Y) → self::AinvCyclicCoBound::Y = ((Never) → dynamic) → (Never) → dynamic, Y extends (self::AinvCyclicCoBound::Y) → dynamic = (Never) → dynamic> extends core::Object {
+  synthetic constructor •() → self::AinvCyclicCoBound<self::AinvCyclicCoBound::X, self::AinvCyclicCoBound::Y>
+    : 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 testTypeAliasAsTypeArgument(self::Acov<() → dynamic, dynamic> source1, self::Acon<(Never) → dynamic, dynamic> source2, self::Ainv<(dynamic) → dynamic, dynamic> source3, self::AcovBound<() → core::num, core::num> source4, self::AconBound<(Never) → dynamic, core::num> source5, self::AinvBound<(core::num) → core::num, core::num> source6, self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> source7, self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> source8, self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> source10, self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> source11) → void {
+  <Y extends self::Acov<() → dynamic, dynamic> = dynamic>() → void fsource1 = self::toF<self::Acov<() → dynamic, dynamic>>(source1);
+  <Y extends self::Acov<() → dynamic, dynamic> = dynamic>() → void target1 = fsource1;
+  <Y extends self::Acon<(Never) → dynamic, dynamic> = dynamic>() → void fsource2 = self::toF<self::Acon<(Never) → dynamic, dynamic>>(source2);
+  <Y extends self::Acon<(Null) → dynamic, dynamic> = dynamic>() → void target2 = invalid-expression "pkg/front_end/testcases/general/nested_variance2.dart:84:42: Error: A value of type 'void Function<Y extends Acon<dynamic Function(Never), dynamic>>()' can't be assigned to a variable of type 'void Function<Y extends Acon<dynamic Function(Null), dynamic>>()' because 'Null' is nullable and 'Never' isn't.
+ - 'Acon' is from 'pkg/front_end/testcases/general/nested_variance2.dart'.
+  F<Acon<Fcon<Null>, dynamic>> target2 = fsource2;
+                                         ^" in fsource2;
+  <Y extends self::Ainv<(dynamic) → dynamic, dynamic> = dynamic>() → void fsource3 = self::toF<self::Ainv<(dynamic) → dynamic, dynamic>>(source3);
+  <Y extends self::Ainv<(dynamic) → dynamic, dynamic> = dynamic>() → void target3 = fsource3;
+  <Y extends self::AcovBound<() → core::num, core::num> = dynamic>() → void fsource4 = self::toF<self::AcovBound<() → core::num, core::num>>(source4);
+  <Y extends self::AcovBound<() → core::num, core::num> = dynamic>() → void target4 = fsource4;
+  <Y extends self::AconBound<(Never) → dynamic, core::num> = dynamic>() → void fsource5 = self::toF<self::AconBound<(Never) → dynamic, core::num>>(source5);
+  <Y extends self::AconBound<(Never) → dynamic, core::num> = dynamic>() → void target5 = fsource5;
+  <Y extends self::AinvBound<(core::num) → core::num, core::num> = dynamic>() → void fsource6 = self::toF<self::AinvBound<(core::num) → core::num, core::num>>(source6);
+  <Y extends self::AinvBound<(core::num) → core::num, core::num> = dynamic>() → void target6 = fsource6;
+  <Y extends self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> = dynamic>() → void fsource7 = self::toF<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>>(source7);
+  <Y extends self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>> = dynamic>() → void target7 = fsource7;
+  <Y extends self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> = dynamic>() → void fsource8 = self::toF<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>>(source8);
+  <Y extends self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>> = dynamic>() → void target8 = fsource8;
+  self::AinvCyclicBound<(self::A<dynamic>) → self::A<dynamic>, self::A<dynamic>> source9 = throw "";
+  <Y extends self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> = dynamic>() → void fsource10 = self::toF<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>>(source10);
+  <Y extends self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic> = dynamic>() → void target10 = fsource10;
+  <Y extends self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> = dynamic>() → void fsource11 = self::toF<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>>(source11);
+  <Y extends self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic> = dynamic>() → void target11 = fsource11;
+  self::AinvCyclicCoBound<((Never) → dynamic) → (Never) → dynamic, (Never) → dynamic> source12 = throw "";
+}
+static method testNested(self::B<self::Acov<() → dynamic, dynamic>> source1, self::B<self::Acon<(Never) → dynamic, dynamic>> source2, self::B<self::Ainv<(dynamic) → dynamic, dynamic>> source3, self::B<self::AcovBound<() → core::num, core::num>> source4, self::B<self::AconBound<(Never) → dynamic, core::num>> source5, self::B<self::AinvBound<(core::num) → core::num, core::num>> source6, self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> source7, self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> source8, self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> source10, self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> source11) → void {
+  <Y extends self::B<self::Acov<() → dynamic, dynamic>> = dynamic>() → void fsource1 = self::toF<self::B<self::Acov<() → dynamic, dynamic>>>(source1);
+  <Y extends self::B<self::Acov<() → dynamic, dynamic>> = dynamic>() → void target1 = fsource1;
+  <Y extends self::B<self::Acon<(Never) → dynamic, dynamic>> = dynamic>() → void fsource2 = self::toF<self::B<self::Acon<(Never) → dynamic, dynamic>>>(source2);
+  <Y extends self::B<self::Acon<(Never) → dynamic, dynamic>> = dynamic>() → void target2 = fsource2;
+  <Y extends self::B<self::Ainv<(dynamic) → dynamic, dynamic>> = dynamic>() → void fsource3 = self::toF<self::B<self::Ainv<(dynamic) → dynamic, dynamic>>>(source3);
+  <Y extends self::B<self::Ainv<(dynamic) → dynamic, dynamic>> = dynamic>() → void target3 = fsource3;
+  <Y extends self::B<self::AcovBound<() → core::num, core::num>> = dynamic>() → void fsource4 = self::toF<self::B<self::AcovBound<() → core::num, core::num>>>(source4);
+  <Y extends self::B<self::AcovBound<() → core::num, core::num>> = dynamic>() → void target4 = fsource4;
+  <Y extends self::B<self::AconBound<(Never) → dynamic, core::num>> = dynamic>() → void fsource5 = self::toF<self::B<self::AconBound<(Never) → dynamic, core::num>>>(source5);
+  <Y extends self::B<self::AconBound<(Never) → dynamic, core::num>> = dynamic>() → void target5 = fsource5;
+  <Y extends self::B<self::AinvBound<(core::num) → core::num, core::num>> = dynamic>() → void fsource6 = self::toF<self::B<self::AinvBound<(core::num) → core::num, core::num>>>(source6);
+  <Y extends self::B<self::AinvBound<(core::num) → core::num, core::num>> = dynamic>() → void target6 = fsource6;
+  <Y extends self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> = dynamic>() → void fsource7 = self::toF<self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>>>(source7);
+  <Y extends self::B<self::AcovCyclicBound<() → self::A<dynamic>, self::A<dynamic>>> = dynamic>() → void target7 = fsource7;
+  <Y extends self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> = dynamic>() → void fsource8 = self::toF<self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>>>(source8);
+  <Y extends self::B<self::AconCyclicBound<(Never) → dynamic, self::A<dynamic>>> = dynamic>() → void target8 = fsource8;
+  self::B<self::AinvCyclicBound<(self::A<dynamic>) → self::A<dynamic>, self::A<dynamic>>> source9 = throw "";
+  <Y extends self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> = dynamic>() → void fsource10 = self::toF<self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>>>(source10);
+  <Y extends self::B<self::AcovCyclicCoBound<() → (Never) → dynamic, (Never) → dynamic>> = dynamic>() → void target10 = fsource10;
+  <Y extends self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> = dynamic>() → void fsource11 = self::toF<self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>>>(source11);
+  <Y extends self::B<self::AconCyclicCoBound<(Never) → dynamic, (Never) → dynamic>> = dynamic>() → void target11 = fsource11;
+  self::B<self::AinvCyclicCoBound<((Never) → dynamic) → (Never) → dynamic, (Never) → dynamic>> source12 = throw "";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart b/pkg/front_end/testcases/general/no_such_method_forwarder.dart
index b2938fc..2d3319a 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart=2.9
-
 class X {
   void _foo() async {
     await null;
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.textual_outline.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.textual_outline.expect
index bf31270..1caa183 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class X {
   void _foo() async {}
   void foo() => _foo();
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.textual_outline_modelled.expect
index bf31270..1caa183 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class X {
   void _foo() async {}
   void foo() => _foo();
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect
index 2fd6b9d..c43b411 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
   method _foo() → void async {
@@ -11,42 +11,23 @@
     core::print("hello");
   }
   method foo() → void
-    return this.{self::X::_foo}(){() →* void};
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+    return this.{self::X::_foo}(){() → void};
 }
 class Y extends core::Object implements self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     : super core::Object::•()
     ;
-  method noSuchMethod(core::Invocation* _) → void {
+  method noSuchMethod(core::Invocation _) → void {
     core::print("Hello from noSuchMethod");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → void};
   no-such-method-forwarder method foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → void};
 }
 static method main() → dynamic {
-  self::Y* y = new self::Y::•();
-  y.{self::X::foo}(){() →* void};
+  self::Y y = new self::Y::•();
+  y.{self::X::foo}(){() → void};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.modular.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.modular.expect
index 2fd6b9d..c43b411 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.modular.expect
@@ -1,9 +1,9 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
   method _foo() → void async {
@@ -11,42 +11,23 @@
     core::print("hello");
   }
   method foo() → void
-    return this.{self::X::_foo}(){() →* void};
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+    return this.{self::X::_foo}(){() → void};
 }
 class Y extends core::Object implements self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     : super core::Object::•()
     ;
-  method noSuchMethod(core::Invocation* _) → void {
+  method noSuchMethod(core::Invocation _) → void {
     core::print("Hello from noSuchMethod");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → void};
   no-such-method-forwarder method foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → void};
 }
 static method main() → dynamic {
-  self::Y* y = new self::Y::•();
-  y.{self::X::foo}(){() →* void};
+  self::Y y = new self::Y::•();
+  y.{self::X::foo}(){() → void};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect
index a58f8ef..d466ed3 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.outline.expect
@@ -1,55 +1,36 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     ;
   method _foo() → void async 
     ;
   method foo() → void
     ;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 class Y extends core::Object implements self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     ;
-  method noSuchMethod(core::Invocation* _) → void
+  method noSuchMethod(core::Invocation _) → 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 get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#_foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → void};
   no-such-method-forwarder method foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#foo, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → void};
 }
 static method main() → dynamic
   ;
 
 
 Extra constant evaluation status:
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:8:8 -> SymbolConstant(#_foo)
-Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:8:8 -> ListConstant(const <Type*>[])
-Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:8:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:8:8 -> MapConstant(const <Symbol*, dynamic>{})
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:13:8 -> SymbolConstant(#foo)
-Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:13:8 -> ListConstant(const <Type*>[])
-Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:13:8 -> ListConstant(const <dynamic>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:13:8 -> MapConstant(const <Symbol*, dynamic>{})
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:6:8 -> SymbolConstant(#_foo)
+Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:6:8 -> ListConstant(const <Type*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:6:8 -> ListConstant(const <dynamic>[])
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:6:8 -> MapConstant(const <Symbol*, dynamic>{})
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:11:8 -> SymbolConstant(#foo)
+Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:11:8 -> ListConstant(const <Type*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:11:8 -> ListConstant(const <dynamic>[])
+Evaluated: MapLiteral @ org-dartlang-testcase:///no_such_method_forwarder.dart:11:8 -> MapConstant(const <Symbol*, dynamic>{})
 Extra constant evaluation: evaluated: 16, effectively constant: 8
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
index ad020a3..f1d1f67 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
@@ -1,20 +1,20 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "dart:async" as asy;
 import "dart:_internal" as _in;
 
 class X extends core::Object {
-  synthetic constructor •() → self::X*
+  synthetic constructor •() → self::X
     : super core::Object::•()
     ;
   method _foo() → void /* originally async */ {
-    final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
+    final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
     core::bool* :is_sync = false;
     dynamic :return_value;
-    (dynamic) →* dynamic :async_op_then;
-    (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
-    core::int* :await_jump_var = 0;
+    (dynamic) → dynamic :async_op_then;
+    (core::Object, core::StackTrace) → dynamic :async_op_error;
+    core::int :await_jump_var = 0;
     dynamic :await_ctx_var;
     dynamic :saved_try_context_var0;
     function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding 
@@ -28,52 +28,33 @@
         asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
         return;
       }
-      on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
+      on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
         asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
       }
     :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
     :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
-    :async_op(null, null){() →* dynamic};
+    :async_op(null, null){() → dynamic};
     :is_sync = true;
     return :async_future;
   }
   method foo() → void
-    return this.{self::X::_foo}(){() →* void};
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+    return this.{self::X::_foo}(){() → void};
 }
 class Y extends core::Object implements self::X {
-  synthetic constructor •() → self::Y*
+  synthetic constructor •() → self::Y
     : super core::Object::•()
     ;
-  method noSuchMethod(core::Invocation* _) → void {
+  method noSuchMethod(core::Invocation _) → void {
     core::print("Hello from noSuchMethod");
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
   no-such-method-forwarder method _foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → void};
   no-such-method-forwarder method foo() → void
-    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* void};
+    return this.{self::Y::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 0, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → void};
 }
 static method main() → dynamic {
-  self::Y* y = new self::Y::•();
-  y.{self::X::foo}(){() →* void};
+  self::Y y = new self::Y::•();
+  y.{self::X::foo}(){() → void};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart b/pkg/front_end/testcases/general/no_such_method_private_setter.dart
index 88c4614..9d026b5 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 import './no_such_method_private_setter_lib.dart';
 
 // `Bar' contains a private setter `_x'. The generated Kernel code for `Foo'
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.textual_outline.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.textual_outline.expect
index b9a6d13..8aa3b3b 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import './no_such_method_private_setter_lib.dart';
 
 class Foo implements Bar {}
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.textual_outline_modelled.expect
index b9a6d13..8aa3b3b 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import './no_such_method_private_setter_lib.dart';
 
 class Foo implements Bar {}
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect
index 180ea5a..ad96a5d 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "no_such_method_private_setter_lib.dart" as no_;
@@ -6,49 +6,36 @@
 import "org-dartlang-testcase:///no_such_method_private_setter_lib.dart";
 
 class Foo extends core::Object implements no_::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
-  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
 }
 
-library;
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/no_such_method_private_setter_lib.dart:8:7: Error: Field '_x' should be initialized because its type 'int' doesn't allow null.
+//   int _x;
+//       ^^
+//
 import self as no_;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  field core::int* _x = null;
-  synthetic constructor •() → no_::Bar*
+  field core::int _x = null;
+  synthetic constructor •() → no_::Bar
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(no_::Bar* bar) → void {
+static method baz(no_::Bar bar) → void {
   return;
 }
 
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.modular.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.modular.expect
index 180ea5a..ad96a5d 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.modular.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "no_such_method_private_setter_lib.dart" as no_;
@@ -6,49 +6,36 @@
 import "org-dartlang-testcase:///no_such_method_private_setter_lib.dart";
 
 class Foo extends core::Object implements no_::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
-  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
 }
 
-library;
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/no_such_method_private_setter_lib.dart:8:7: Error: Field '_x' should be initialized because its type 'int' doesn't allow null.
+//   int _x;
+//       ^^
+//
 import self as no_;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  field core::int* _x = null;
-  synthetic constructor •() → no_::Bar*
+  field core::int _x = null;
+  synthetic constructor •() → no_::Bar
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(no_::Bar* bar) → void {
+static method baz(no_::Bar bar) → void {
   return;
 }
 
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect
index 882f03b..9750dcc 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.outline.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "no_such_method_private_setter_lib.dart" as no_;
@@ -6,46 +6,26 @@
 import "org-dartlang-testcase:///no_such_method_private_setter_lib.dart";
 
 class Foo extends core::Object implements no_::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
-  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x, 1, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#_x=, 2, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic
   ;
 
-library;
+library /*isNonNullableByDefault*/;
 import self as no_;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  field core::int* _x;
-  synthetic constructor •() → no_::Bar*
+  field core::int _x;
+  synthetic constructor •() → no_::Bar
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(no_::Bar* bar) → void
+static method baz(no_::Bar bar) → void
   ;
 
 
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect
index bc8c75f..48b88df 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter.dart.weak.transformed.expect
@@ -1,4 +1,4 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "no_such_method_private_setter_lib.dart" as no_;
@@ -6,49 +6,36 @@
 import "org-dartlang-testcase:///no_such_method_private_setter_lib.dart";
 
 class Foo extends core::Object implements no_::Bar {
-  synthetic constructor •() → self::Foo*
+  synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int*
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} core::int*;
-  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int* value) → void
-    return this.{self::Foo::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C1, 1, #C2, #C3, core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withType(#C5, 2, #C2, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(value)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C4))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {
   no_::baz(new self::Foo::•());
 }
 
-library;
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/no_such_method_private_setter_lib.dart:8:7: Error: Field '_x' should be initialized because its type 'int' doesn't allow null.
+//   int _x;
+//       ^^
+//
 import self as no_;
 import "dart:core" as core;
 
 class Bar extends core::Object {
-  field core::int* _x = null;
-  synthetic constructor •() → no_::Bar*
+  field core::int _x = null;
+  synthetic constructor •() → no_::Bar
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-static method baz(no_::Bar* bar) → void {
+static method baz(no_::Bar bar) → void {
   return;
 }
 
diff --git a/pkg/front_end/testcases/general/no_such_method_private_setter_lib.dart b/pkg/front_end/testcases/general/no_such_method_private_setter_lib.dart
index c2d04f0..b4f3e2c 100644
--- a/pkg/front_end/testcases/general/no_such_method_private_setter_lib.dart
+++ b/pkg/front_end/testcases/general/no_such_method_private_setter_lib.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 // Companion library to no_such_method_private_setter.dart.
 
 class Bar {
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart b/pkg/front_end/testcases/general/non_covariant_checks.dart
index 17c1225..a46e84f 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart
+++ b/pkg/front_end/testcases/general/non_covariant_checks.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
+
 /*@testedFeatures=checks*/
 
 class C<T> {
@@ -16,7 +16,7 @@
         field9 = ((void Function(T) f) => field1),
         field10 = ((T Function(T) f) {}),
         field11 = ((T Function(T) f) => field1),
-        field12 = <S extends T>() => null,
+        field12 = <S extends T>() => throw '',
         field13 = <S extends T>(S s) {},
         field14 = <S extends T>(S s) => s,
         field15 = ((S Function<S extends T>() f) {});
@@ -185,26 +185,26 @@
   c.field1;
   c.field2;
   try {
-    c. /*@ checkReturn=(num*) ->* void */ field3;
+    c. /*@checkReturn=(num) -> void*/ field3;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=(num*) ->* num* */ field4;
+    c. /*@checkReturn=(num) -> num*/ field4;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   c.field5;
   try {
-    c. /*@ checkReturn=(() ->* num*) ->* void */ field6;
+    c. /*@checkReturn=(() -> num) -> void*/ field6;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=(() ->* num*) ->* num* */ field7;
+    c. /*@checkReturn=(() -> num) -> num*/ field7;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
@@ -212,37 +212,37 @@
   c.field8;
   c.field9;
   try {
-    c. /*@ checkReturn=((num*) ->* num*) ->* void */ field10;
+    c. /*@checkReturn=((num) -> num) -> void*/ field10;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=((num*) ->* num*) ->* num* */ field11;
+    c. /*@checkReturn=((num) -> num) -> num*/ field11;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=<S extends num* = dynamic>() ->* S* */ field12;
+    c. /*@checkReturn=<S extends num = dynamic>() -> S*/ field12;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=<S extends num* = dynamic>(S*) ->* void */ field13;
+    c. /*@checkReturn=<S extends num = dynamic>(S) -> void*/ field13;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=<S extends num* = dynamic>(S*) ->* S* */ field14;
+    c. /*@checkReturn=<S extends num = dynamic>(S) -> S*/ field14;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=(<S extends num* = dynamic>() ->* S*) ->* void */ field15;
+    c. /*@checkReturn=(<S extends num = dynamic>() -> S) -> void*/ field15;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
@@ -251,26 +251,26 @@
   c.getter1;
   c.getter2;
   try {
-    c. /*@ checkReturn=(num*) ->* void */ getter3;
+    c. /*@checkReturn=(num) -> void*/ getter3;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=(num*) ->* num* */ getter4;
+    c. /*@checkReturn=(num) -> num*/ getter4;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   c.getter5;
   try {
-    c. /*@ checkReturn=(() ->* num*) ->* void */ getter6;
+    c. /*@checkReturn=(() -> num) -> void*/ getter6;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=(() ->* num*) ->* num* */ getter7;
+    c. /*@checkReturn=(() -> num) -> num*/ getter7;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
@@ -278,37 +278,37 @@
   c.getter8;
   c.getter9;
   try {
-    c. /*@ checkReturn=((num*) ->* num*) ->* void */ getter10;
+    c. /*@checkReturn=((num) -> num) -> void*/ getter10;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=((num*) ->* num*) ->* num* */ getter11;
+    c. /*@checkReturn=((num) -> num) -> num*/ getter11;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=<S extends num* = dynamic>() ->* S* */ getter12;
+    c. /*@checkReturn=<S extends num = dynamic>() -> S*/ getter12;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=<S extends num* = dynamic>(S*) ->* void */ getter13;
+    c. /*@checkReturn=<S extends num = dynamic>(S) -> void*/ getter13;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=<S extends num* = dynamic>(S*) ->* S* */ getter14;
+    c. /*@checkReturn=<S extends num = dynamic>(S) -> S*/ getter14;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
   }
   try {
-    c. /*@ checkReturn=(<S extends num* = dynamic>() ->* S*) ->* void */ getter15;
+    c. /*@checkReturn=(<S extends num = dynamic>() -> S) -> void*/ getter15;
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
@@ -371,7 +371,7 @@
     print(e);
   }
   try {
-    c.setter12 = <S extends num>() => null;
+    c.setter12 = <S extends num>() => throw '';
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
@@ -452,7 +452,7 @@
     print(e);
   }
   try {
-    c.method12(<S extends num>() => null);
+    c.method12(<S extends num>() => throw '');
     throw 'TypeError expected';
   } on TypeError catch (e) {
     print(e);
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.textual_outline.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.textual_outline.expect
index e25dc03..9c7f737 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C<T> {
   C(this.field1)
       : field2 = (() => field1),
@@ -11,7 +10,7 @@
         field9 = ((void Function(T) f) => field1),
         field10 = ((T Function(T) f) {}),
         field11 = ((T Function(T) f) => field1),
-        field12 = <S extends T>() => null,
+        field12 = <S extends T>() => throw '',
         field13 = <S extends T>(S s) {},
         field14 = <S extends T>(S s) => s,
         field15 = ((S Function<S extends T>() f) {});
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.textual_outline_modelled.expect
index 506de49..f9b68a1 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class C<T> {
   C(this.field1)
       : field2 = (() => field1),
@@ -11,7 +10,7 @@
         field9 = ((void Function(T) f) => field1),
         field10 = ((T Function(T) f) {}),
         field11 = ((T Function(T) f) => field1),
-        field12 = <S extends T>() => null,
+        field12 = <S extends T>() => throw '',
         field13 = <S extends T>(S s) {},
         field14 = <S extends T>(S s) => s,
         field15 = ((S Function<S extends T>() f) {});
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.expect
index 5f06498..f80ffa1 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.expect
@@ -1,493 +1,483 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::C::T* field1;
-  covariant-by-class field () →* self::C::T* field2;
-  field (self::C::T*) →* void field3;
-  covariant-by-class field (self::C::T*) →* self::C::T* field4;
-  covariant-by-class field () →* () →* self::C::T* field5;
-  field (() →* self::C::T*) →* void field6;
-  covariant-by-class field (() →* self::C::T*) →* self::C::T* field7;
-  covariant-by-class field ((self::C::T*) →* void) →* void field8;
-  covariant-by-class field ((self::C::T*) →* void) →* self::C::T* field9;
-  covariant-by-class field ((self::C::T*) →* self::C::T*) →* void field10;
-  covariant-by-class field ((self::C::T*) →* self::C::T*) →* self::C::T* field11;
-  covariant-by-class field <S extends self::C::T* = dynamic>() →* S* field12;
-  covariant-by-class field <S extends self::C::T* = dynamic>(S*) →* void field13;
-  covariant-by-class field <S extends self::C::T* = dynamic>(S*) →* S* field14;
-  covariant-by-class field (<S extends self::C::T* = dynamic>() →* S*) →* void field15;
-  constructor •(self::C::T* field1) → self::C<self::C::T*>*
-    : self::C::field1 = field1, self::C::field2 = () → self::C::T* => field1, self::C::field3 = (self::C::T* t) → Null {}, self::C::field4 = (self::C::T* t) → self::C::T* => t, self::C::field5 = () → () →* self::C::T* => () → self::C::T* => field1, self::C::field6 = (() →* self::C::T* f) → Null {}, self::C::field7 = (() →* self::C::T* f) → self::C::T* => field1, self::C::field8 = ((self::C::T*) →* void f) → Null {}, self::C::field9 = ((self::C::T*) →* void f) → self::C::T* => field1, self::C::field10 = ((self::C::T*) →* self::C::T* f) → Null {}, self::C::field11 = ((self::C::T*) →* self::C::T* f) → self::C::T* => field1, self::C::field12 = <S extends self::C::T*>() → Null => null, self::C::field13 = <S extends self::C::T*>(S* s) → Null {}, self::C::field14 = <S extends self::C::T*>(S* s) → S* => s, self::C::field15 = (<S extends self::C::T*>() →* S* f) → Null {}, super core::Object::•()
+class C<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::C::T% field1;
+  covariant-by-class field () → self::C::T% field2;
+  field (self::C::T%) → void field3;
+  covariant-by-class field (self::C::T%) → self::C::T% field4;
+  covariant-by-class field () → () → self::C::T% field5;
+  field (() → self::C::T%) → void field6;
+  covariant-by-class field (() → self::C::T%) → self::C::T% field7;
+  covariant-by-class field ((self::C::T%) → void) → void field8;
+  covariant-by-class field ((self::C::T%) → void) → self::C::T% field9;
+  covariant-by-class field ((self::C::T%) → self::C::T%) → void field10;
+  covariant-by-class field ((self::C::T%) → self::C::T%) → self::C::T% field11;
+  covariant-by-class field <S extends self::C::T% = dynamic>() → S% field12;
+  covariant-by-class field <S extends self::C::T% = dynamic>(S%) → void field13;
+  covariant-by-class field <S extends self::C::T% = dynamic>(S%) → S% field14;
+  covariant-by-class field (<S extends self::C::T% = dynamic>() → S%) → void field15;
+  constructor •(self::C::T% field1) → self::C<self::C::T%>
+    : self::C::field1 = field1, self::C::field2 = () → self::C::T% => field1, self::C::field3 = (self::C::T% t) → void {}, self::C::field4 = (self::C::T% t) → self::C::T% => t, self::C::field5 = () → () → self::C::T% => () → self::C::T% => field1, self::C::field6 = (() → self::C::T% f) → void {}, self::C::field7 = (() → self::C::T% f) → self::C::T% => field1, self::C::field8 = ((self::C::T%) → void f) → void {}, self::C::field9 = ((self::C::T%) → void f) → self::C::T% => field1, self::C::field10 = ((self::C::T%) → self::C::T% f) → void {}, self::C::field11 = ((self::C::T%) → self::C::T% f) → self::C::T% => field1, self::C::field12 = <S extends self::C::T%>() → Never => throw "", self::C::field13 = <S extends self::C::T%>(S% s) → void {}, self::C::field14 = <S extends self::C::T%>(S% s) → S% => s, self::C::field15 = (<S extends self::C::T%>() → S% f) → void {}, super core::Object::•()
     ;
-  get getter1() → self::C::T*
-    return this.{self::C::field1}{self::C::T*};
-  get getter2() → () →* self::C::T*
-    return this.{self::C::field2}{() →* self::C::T*};
-  get getter3() → (self::C::T*) →* void
-    return this.{self::C::field3}{(self::C::T*) →* void};
-  get getter4() → (self::C::T*) →* self::C::T*
-    return this.{self::C::field4}{(self::C::T*) →* self::C::T*};
-  get getter5() → () →* () →* self::C::T*
-    return this.{self::C::field5}{() →* () →* self::C::T*};
-  get getter6() → (() →* self::C::T*) →* void
-    return this.{self::C::field6}{(() →* self::C::T*) →* void};
-  get getter7() → (() →* self::C::T*) →* self::C::T*
-    return this.{self::C::field7}{(() →* self::C::T*) →* self::C::T*};
-  get getter8() → ((self::C::T*) →* void) →* void
-    return this.{self::C::field8}{((self::C::T*) →* void) →* void};
-  get getter9() → ((self::C::T*) →* void) →* self::C::T*
-    return this.{self::C::field9}{((self::C::T*) →* void) →* self::C::T*};
-  get getter10() → ((self::C::T*) →* self::C::T*) →* void
-    return this.{self::C::field10}{((self::C::T*) →* self::C::T*) →* void};
-  get getter11() → ((self::C::T*) →* self::C::T*) →* self::C::T*
-    return this.{self::C::field11}{((self::C::T*) →* self::C::T*) →* self::C::T*};
-  get getter12() → <S extends self::C::T* = dynamic>() →* S*
-    return this.{self::C::field12}{<S extends self::C::T* = dynamic>() →* S*};
-  get getter13() → <S extends self::C::T* = dynamic>(S*) →* void
-    return this.{self::C::field13}{<S extends self::C::T* = dynamic>(S*) →* void};
-  get getter14() → <S extends self::C::T* = dynamic>(S*) →* S*
-    return this.{self::C::field14}{<S extends self::C::T* = dynamic>(S*) →* S*};
-  get getter15() → (<S extends self::C::T* = dynamic>() →* S*) →* void
-    return this.{self::C::field15}{(<S extends self::C::T* = dynamic>() →* S*) →* void};
-  set setter1(covariant-by-class self::C::T* value) → void {
+  get getter1() → self::C::T%
+    return this.{self::C::field1}{self::C::T%};
+  get getter2() → () → self::C::T%
+    return this.{self::C::field2}{() → self::C::T%};
+  get getter3() → (self::C::T%) → void
+    return this.{self::C::field3}{(self::C::T%) → void};
+  get getter4() → (self::C::T%) → self::C::T%
+    return this.{self::C::field4}{(self::C::T%) → self::C::T%};
+  get getter5() → () → () → self::C::T%
+    return this.{self::C::field5}{() → () → self::C::T%};
+  get getter6() → (() → self::C::T%) → void
+    return this.{self::C::field6}{(() → self::C::T%) → void};
+  get getter7() → (() → self::C::T%) → self::C::T%
+    return this.{self::C::field7}{(() → self::C::T%) → self::C::T%};
+  get getter8() → ((self::C::T%) → void) → void
+    return this.{self::C::field8}{((self::C::T%) → void) → void};
+  get getter9() → ((self::C::T%) → void) → self::C::T%
+    return this.{self::C::field9}{((self::C::T%) → void) → self::C::T%};
+  get getter10() → ((self::C::T%) → self::C::T%) → void
+    return this.{self::C::field10}{((self::C::T%) → self::C::T%) → void};
+  get getter11() → ((self::C::T%) → self::C::T%) → self::C::T%
+    return this.{self::C::field11}{((self::C::T%) → self::C::T%) → self::C::T%};
+  get getter12() → <S extends self::C::T% = dynamic>() → S%
+    return this.{self::C::field12}{<S extends self::C::T% = dynamic>() → S%};
+  get getter13() → <S extends self::C::T% = dynamic>(S%) → void
+    return this.{self::C::field13}{<S extends self::C::T% = dynamic>(S%) → void};
+  get getter14() → <S extends self::C::T% = dynamic>(S%) → S%
+    return this.{self::C::field14}{<S extends self::C::T% = dynamic>(S%) → S%};
+  get getter15() → (<S extends self::C::T% = dynamic>() → S%) → void
+    return this.{self::C::field15}{(<S extends self::C::T% = dynamic>() → S%) → void};
+  set setter1(covariant-by-class self::C::T% value) → void {
     this.{self::C::field1} = value;
   }
-  set setter2(covariant-by-class () →* self::C::T* value) → void {
+  set setter2(covariant-by-class () → self::C::T% value) → void {
     this.{self::C::field2} = value;
   }
-  set setter3((self::C::T*) →* void value) → void {
+  set setter3((self::C::T%) → void value) → void {
     this.{self::C::field3} = value;
   }
-  set setter4(covariant-by-class (self::C::T*) →* self::C::T* value) → void {
+  set setter4(covariant-by-class (self::C::T%) → self::C::T% value) → void {
     this.{self::C::field4} = value;
   }
-  set setter5(covariant-by-class () →* () →* self::C::T* value) → void {
+  set setter5(covariant-by-class () → () → self::C::T% value) → void {
     this.{self::C::field5} = value;
   }
-  set setter6((() →* self::C::T*) →* void value) → void {
+  set setter6((() → self::C::T%) → void value) → void {
     this.{self::C::field6} = value;
   }
-  set setter7(covariant-by-class (() →* self::C::T*) →* self::C::T* value) → void {
+  set setter7(covariant-by-class (() → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field7} = value;
   }
-  set setter8(covariant-by-class ((self::C::T*) →* void) →* void value) → void {
+  set setter8(covariant-by-class ((self::C::T%) → void) → void value) → void {
     this.{self::C::field8} = value;
   }
-  set setter9(covariant-by-class ((self::C::T*) →* void) →* self::C::T* value) → void {
+  set setter9(covariant-by-class ((self::C::T%) → void) → self::C::T% value) → void {
     this.{self::C::field9} = value;
   }
-  set setter10(covariant-by-class ((self::C::T*) →* self::C::T*) →* void value) → void {
+  set setter10(covariant-by-class ((self::C::T%) → self::C::T%) → void value) → void {
     this.{self::C::field10} = value;
   }
-  set setter11(covariant-by-class ((self::C::T*) →* self::C::T*) →* self::C::T* value) → void {
+  set setter11(covariant-by-class ((self::C::T%) → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field11} = value;
   }
-  set setter12(covariant-by-class <S extends self::C::T* = dynamic>() →* S* value) → void {
+  set setter12(covariant-by-class <S extends self::C::T% = dynamic>() → S% value) → void {
     this.{self::C::field12} = value;
   }
-  set setter13(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* void value) → void {
+  set setter13(covariant-by-class <S extends self::C::T% = dynamic>(S%) → void value) → void {
     this.{self::C::field13} = value;
   }
-  set setter14(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* S* value) → void {
+  set setter14(covariant-by-class <S extends self::C::T% = dynamic>(S%) → S% value) → void {
     this.{self::C::field14} = value;
   }
-  set setter15(covariant-by-class (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
+  set setter15(covariant-by-class (<S extends self::C::T% = dynamic>() → S%) → void value) → void {
     this.{self::C::field15} = value;
   }
-  method method1(covariant-by-class self::C::T* value) → void {
+  method method1(covariant-by-class self::C::T% value) → void {
     this.{self::C::field1} = value;
   }
-  method method2(covariant-by-class () →* self::C::T* value) → void {
+  method method2(covariant-by-class () → self::C::T% value) → void {
     this.{self::C::field2} = value;
   }
-  method method3((self::C::T*) →* void value) → void {
+  method method3((self::C::T%) → void value) → void {
     this.{self::C::field3} = value;
   }
-  method method4(covariant-by-class (self::C::T*) →* self::C::T* value) → void {
+  method method4(covariant-by-class (self::C::T%) → self::C::T% value) → void {
     this.{self::C::field4} = value;
   }
-  method method5(covariant-by-class () →* () →* self::C::T* value) → void {
+  method method5(covariant-by-class () → () → self::C::T% value) → void {
     this.{self::C::field5} = value;
   }
-  method method6((() →* self::C::T*) →* void value) → void {
+  method method6((() → self::C::T%) → void value) → void {
     this.{self::C::field6} = value;
   }
-  method method7(covariant-by-class (() →* self::C::T*) →* self::C::T* value) → void {
+  method method7(covariant-by-class (() → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field7} = value;
   }
-  method method8(covariant-by-class ((self::C::T*) →* void) →* void value) → void {
+  method method8(covariant-by-class ((self::C::T%) → void) → void value) → void {
     this.{self::C::field8} = value;
   }
-  method method9(covariant-by-class ((self::C::T*) →* void) →* self::C::T* value) → void {
+  method method9(covariant-by-class ((self::C::T%) → void) → self::C::T% value) → void {
     this.{self::C::field9} = value;
   }
-  method method10(covariant-by-class ((self::C::T*) →* self::C::T*) →* void value) → void {
+  method method10(covariant-by-class ((self::C::T%) → self::C::T%) → void value) → void {
     this.{self::C::field10} = value;
   }
-  method method11(covariant-by-class ((self::C::T*) →* self::C::T*) →* self::C::T* value) → void {
+  method method11(covariant-by-class ((self::C::T%) → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field11} = value;
   }
-  method method12(covariant-by-class <S extends self::C::T* = dynamic>() →* S* value) → void {
+  method method12(covariant-by-class <S extends self::C::T% = dynamic>() → S% value) → void {
     this.{self::C::field12} = value;
   }
-  method method13(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* void value) → void {
+  method method13(covariant-by-class <S extends self::C::T% = dynamic>(S%) → void value) → void {
     this.{self::C::field13} = value;
   }
-  method method14(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* S* value) → void {
+  method method14(covariant-by-class <S extends self::C::T% = dynamic>(S%) → S% value) → void {
     this.{self::C::field14} = value;
   }
-  method method15(covariant-by-class (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
+  method method15(covariant-by-class (<S extends self::C::T% = dynamic>() → S%) → void value) → void {
     this.{self::C::field15} = value;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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::C<core::num*>* c = new self::C::•<core::int*>(0);
-  c.{self::C::field1}{core::num*};
-  c.{self::C::field2}{() →* core::num*};
+  self::C<core::num> c = new self::C::•<core::int>(0);
+  c.{self::C::field1}{core::num};
+  c.{self::C::field2}{() → core::num};
   try {
-    c.{self::C::field3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::field3}{(core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::field4}{(core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::field5}{() →* () →* core::num*};
+  c.{self::C::field5}{() → () → core::num};
   try {
-    c.{self::C::field6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::field6}{(() → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::field7}{(() → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::field8}{((core::num*) →* void) →* void};
-  c.{self::C::field9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::field8}{((core::num) → void) → void};
+  c.{self::C::field9}{((core::num) → void) → core::num};
   try {
-    c.{self::C::field10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::field10}{((core::num) → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::field11}{((core::num) → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::field12}{<S extends core::num = dynamic>() → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>() → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::field13}{<S extends core::num = dynamic>(S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::field14}{<S extends core::num = dynamic>(S) → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::field15}{(<S extends core::num = dynamic>() → S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (<S extends core::num = dynamic>() → S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::getter1}{core::num*};
-  c.{self::C::getter2}{() →* core::num*};
+  c.{self::C::getter1}{core::num};
+  c.{self::C::getter2}{() → core::num};
   try {
-    c.{self::C::getter3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::getter3}{(core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::getter4}{(core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::getter5}{() →* () →* core::num*};
+  c.{self::C::getter5}{() → () → core::num};
   try {
-    c.{self::C::getter6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::getter6}{(() → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::getter7}{(() → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::getter8}{((core::num*) →* void) →* void};
-  c.{self::C::getter9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::getter8}{((core::num) → void) → void};
+  c.{self::C::getter9}{((core::num) → void) → core::num};
   try {
-    c.{self::C::getter10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::getter10}{((core::num) → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::getter11}{((core::num) → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::getter12}{<S extends core::num = dynamic>() → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>() → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::getter13}{<S extends core::num = dynamic>(S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::getter14}{<S extends core::num = dynamic>(S) → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::getter15}{(<S extends core::num = dynamic>() → S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (<S extends core::num = dynamic>() → S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
     c.{self::C::setter1} = 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter2} = () → core::double* => 0.5;
+    c.{self::C::setter2} = () → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::setter3} = (core::num* n) → Null {};
+  c.{self::C::setter3} = (core::num n) → void {};
   try {
-    c.{self::C::setter4} = (core::num* n) → core::double* => 0.5;
+    c.{self::C::setter4} = (core::num n) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter5} = () → () →* core::double* => () → core::double* => 0.5;
+    c.{self::C::setter5} = () → () → core::double => () → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::setter6} = (() →* core::num* f) → Null {};
+  c.{self::C::setter6} = (() → core::num f) → void {};
   try {
-    c.{self::C::setter7} = (() →* core::num* f) → core::double* => 0.5;
+    c.{self::C::setter7} = (() → core::num f) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter8} = ((core::double*) →* void f) → Null {};
+    c.{self::C::setter8} = ((core::double) → void f) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter9} = ((core::double*) →* void f) → core::double* => 0.5;
+    c.{self::C::setter9} = ((core::double) → void f) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter10} = ((core::double*) →* core::num* f) → Null {};
+    c.{self::C::setter10} = ((core::double) → core::num f) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter11} = ((core::double*) →* core::num* f) → core::double* => 0.5;
+    c.{self::C::setter11} = ((core::double) → core::num f) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter12} = <S extends core::num*>() → Null => null;
+    c.{self::C::setter12} = <S extends core::num>() → Never => throw "";
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter13} = <S extends core::num*>(S* s) → Null {};
+    c.{self::C::setter13} = <S extends core::num>(S s) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter14} = <S extends core::num*>(S* s) → S* => s;
+    c.{self::C::setter14} = <S extends core::num>(S s) → S => s;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter15} = (<S extends core::num*>() →* S* f) → Null {};
+    c.{self::C::setter15} = (<S extends core::num>() → S f) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method1}(0.5){(core::num*) →* void};
+    c.{self::C::method1}(0.5){(core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method2}(() → core::double* => 0.5){(() →* core::num*) →* void};
+    c.{self::C::method2}(() → core::double => 0.5){(() → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::method3}((core::num* n) → Null {}){((core::num*) →* void) →* void};
+  c.{self::C::method3}((core::num n) → void {}){((core::num) → void) → void};
   try {
-    c.{self::C::method4}((core::num* n) → core::double* => 0.5){((core::num*) →* core::num*) →* void};
+    c.{self::C::method4}((core::num n) → core::double => 0.5){((core::num) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method5}(() → () →* core::double* => () → core::double* => 0.5){(() →* () →* core::num*) →* void};
+    c.{self::C::method5}(() → () → core::double => () → core::double => 0.5){(() → () → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::method6}((() →* core::num* f) → Null {}){((() →* core::num*) →* void) →* void};
+  c.{self::C::method6}((() → core::num f) → void {}){((() → core::num) → void) → void};
   try {
-    c.{self::C::method7}((() →* core::num* f) → core::double* => 0.5){((() →* core::num*) →* core::num*) →* void};
+    c.{self::C::method7}((() → core::num f) → core::double => 0.5){((() → core::num) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method8}(((core::double*) →* void f) → Null {}){(((core::num*) →* void) →* void) →* void};
+    c.{self::C::method8}(((core::double) → void f) → void {}){(((core::num) → void) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method9}(((core::double*) →* void f) → core::double* => 0.5){(((core::num*) →* void) →* core::num*) →* void};
+    c.{self::C::method9}(((core::double) → void f) → core::double => 0.5){(((core::num) → void) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method10}(((core::double*) →* core::num* f) → Null {}){(((core::num*) →* core::num*) →* void) →* void};
+    c.{self::C::method10}(((core::double) → core::num f) → void {}){(((core::num) → core::num) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method11}(((core::double*) →* core::num* f) → core::double* => 0.5){(((core::num*) →* core::num*) →* core::num*) →* void};
+    c.{self::C::method11}(((core::double) → core::num f) → core::double => 0.5){(((core::num) → core::num) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method12}(<S extends core::num*>() → Null => null){(<S extends core::num* = dynamic>() →* S*) →* void};
+    c.{self::C::method12}(<S extends core::num>() → Never => throw ""){(<S extends core::num = dynamic>() → S) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method13}(<S extends core::num*>(S* s) → Null {}){(<S extends core::num* = dynamic>(S*) →* void) →* void};
+    c.{self::C::method13}(<S extends core::num>(S s) → void {}){(<S extends core::num = dynamic>(S) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method14}(<S extends core::num*>(S* s) → S* => s){(<S extends core::num* = dynamic>(S*) →* S*) →* void};
+    c.{self::C::method14}(<S extends core::num>(S s) → S => s){(<S extends core::num = dynamic>(S) → S) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method15}((<S extends core::num*>() →* S* f) → Null {}){((<S extends core::num* = dynamic>() →* S*) →* void) →* void};
+    c.{self::C::method15}((<S extends core::num>() → S f) → void {}){((<S extends core::num = dynamic>() → S) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
 }
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.modular.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.modular.expect
index 5f06498..f80ffa1 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.modular.expect
@@ -1,493 +1,483 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::C::T* field1;
-  covariant-by-class field () →* self::C::T* field2;
-  field (self::C::T*) →* void field3;
-  covariant-by-class field (self::C::T*) →* self::C::T* field4;
-  covariant-by-class field () →* () →* self::C::T* field5;
-  field (() →* self::C::T*) →* void field6;
-  covariant-by-class field (() →* self::C::T*) →* self::C::T* field7;
-  covariant-by-class field ((self::C::T*) →* void) →* void field8;
-  covariant-by-class field ((self::C::T*) →* void) →* self::C::T* field9;
-  covariant-by-class field ((self::C::T*) →* self::C::T*) →* void field10;
-  covariant-by-class field ((self::C::T*) →* self::C::T*) →* self::C::T* field11;
-  covariant-by-class field <S extends self::C::T* = dynamic>() →* S* field12;
-  covariant-by-class field <S extends self::C::T* = dynamic>(S*) →* void field13;
-  covariant-by-class field <S extends self::C::T* = dynamic>(S*) →* S* field14;
-  covariant-by-class field (<S extends self::C::T* = dynamic>() →* S*) →* void field15;
-  constructor •(self::C::T* field1) → self::C<self::C::T*>*
-    : self::C::field1 = field1, self::C::field2 = () → self::C::T* => field1, self::C::field3 = (self::C::T* t) → Null {}, self::C::field4 = (self::C::T* t) → self::C::T* => t, self::C::field5 = () → () →* self::C::T* => () → self::C::T* => field1, self::C::field6 = (() →* self::C::T* f) → Null {}, self::C::field7 = (() →* self::C::T* f) → self::C::T* => field1, self::C::field8 = ((self::C::T*) →* void f) → Null {}, self::C::field9 = ((self::C::T*) →* void f) → self::C::T* => field1, self::C::field10 = ((self::C::T*) →* self::C::T* f) → Null {}, self::C::field11 = ((self::C::T*) →* self::C::T* f) → self::C::T* => field1, self::C::field12 = <S extends self::C::T*>() → Null => null, self::C::field13 = <S extends self::C::T*>(S* s) → Null {}, self::C::field14 = <S extends self::C::T*>(S* s) → S* => s, self::C::field15 = (<S extends self::C::T*>() →* S* f) → Null {}, super core::Object::•()
+class C<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::C::T% field1;
+  covariant-by-class field () → self::C::T% field2;
+  field (self::C::T%) → void field3;
+  covariant-by-class field (self::C::T%) → self::C::T% field4;
+  covariant-by-class field () → () → self::C::T% field5;
+  field (() → self::C::T%) → void field6;
+  covariant-by-class field (() → self::C::T%) → self::C::T% field7;
+  covariant-by-class field ((self::C::T%) → void) → void field8;
+  covariant-by-class field ((self::C::T%) → void) → self::C::T% field9;
+  covariant-by-class field ((self::C::T%) → self::C::T%) → void field10;
+  covariant-by-class field ((self::C::T%) → self::C::T%) → self::C::T% field11;
+  covariant-by-class field <S extends self::C::T% = dynamic>() → S% field12;
+  covariant-by-class field <S extends self::C::T% = dynamic>(S%) → void field13;
+  covariant-by-class field <S extends self::C::T% = dynamic>(S%) → S% field14;
+  covariant-by-class field (<S extends self::C::T% = dynamic>() → S%) → void field15;
+  constructor •(self::C::T% field1) → self::C<self::C::T%>
+    : self::C::field1 = field1, self::C::field2 = () → self::C::T% => field1, self::C::field3 = (self::C::T% t) → void {}, self::C::field4 = (self::C::T% t) → self::C::T% => t, self::C::field5 = () → () → self::C::T% => () → self::C::T% => field1, self::C::field6 = (() → self::C::T% f) → void {}, self::C::field7 = (() → self::C::T% f) → self::C::T% => field1, self::C::field8 = ((self::C::T%) → void f) → void {}, self::C::field9 = ((self::C::T%) → void f) → self::C::T% => field1, self::C::field10 = ((self::C::T%) → self::C::T% f) → void {}, self::C::field11 = ((self::C::T%) → self::C::T% f) → self::C::T% => field1, self::C::field12 = <S extends self::C::T%>() → Never => throw "", self::C::field13 = <S extends self::C::T%>(S% s) → void {}, self::C::field14 = <S extends self::C::T%>(S% s) → S% => s, self::C::field15 = (<S extends self::C::T%>() → S% f) → void {}, super core::Object::•()
     ;
-  get getter1() → self::C::T*
-    return this.{self::C::field1}{self::C::T*};
-  get getter2() → () →* self::C::T*
-    return this.{self::C::field2}{() →* self::C::T*};
-  get getter3() → (self::C::T*) →* void
-    return this.{self::C::field3}{(self::C::T*) →* void};
-  get getter4() → (self::C::T*) →* self::C::T*
-    return this.{self::C::field4}{(self::C::T*) →* self::C::T*};
-  get getter5() → () →* () →* self::C::T*
-    return this.{self::C::field5}{() →* () →* self::C::T*};
-  get getter6() → (() →* self::C::T*) →* void
-    return this.{self::C::field6}{(() →* self::C::T*) →* void};
-  get getter7() → (() →* self::C::T*) →* self::C::T*
-    return this.{self::C::field7}{(() →* self::C::T*) →* self::C::T*};
-  get getter8() → ((self::C::T*) →* void) →* void
-    return this.{self::C::field8}{((self::C::T*) →* void) →* void};
-  get getter9() → ((self::C::T*) →* void) →* self::C::T*
-    return this.{self::C::field9}{((self::C::T*) →* void) →* self::C::T*};
-  get getter10() → ((self::C::T*) →* self::C::T*) →* void
-    return this.{self::C::field10}{((self::C::T*) →* self::C::T*) →* void};
-  get getter11() → ((self::C::T*) →* self::C::T*) →* self::C::T*
-    return this.{self::C::field11}{((self::C::T*) →* self::C::T*) →* self::C::T*};
-  get getter12() → <S extends self::C::T* = dynamic>() →* S*
-    return this.{self::C::field12}{<S extends self::C::T* = dynamic>() →* S*};
-  get getter13() → <S extends self::C::T* = dynamic>(S*) →* void
-    return this.{self::C::field13}{<S extends self::C::T* = dynamic>(S*) →* void};
-  get getter14() → <S extends self::C::T* = dynamic>(S*) →* S*
-    return this.{self::C::field14}{<S extends self::C::T* = dynamic>(S*) →* S*};
-  get getter15() → (<S extends self::C::T* = dynamic>() →* S*) →* void
-    return this.{self::C::field15}{(<S extends self::C::T* = dynamic>() →* S*) →* void};
-  set setter1(covariant-by-class self::C::T* value) → void {
+  get getter1() → self::C::T%
+    return this.{self::C::field1}{self::C::T%};
+  get getter2() → () → self::C::T%
+    return this.{self::C::field2}{() → self::C::T%};
+  get getter3() → (self::C::T%) → void
+    return this.{self::C::field3}{(self::C::T%) → void};
+  get getter4() → (self::C::T%) → self::C::T%
+    return this.{self::C::field4}{(self::C::T%) → self::C::T%};
+  get getter5() → () → () → self::C::T%
+    return this.{self::C::field5}{() → () → self::C::T%};
+  get getter6() → (() → self::C::T%) → void
+    return this.{self::C::field6}{(() → self::C::T%) → void};
+  get getter7() → (() → self::C::T%) → self::C::T%
+    return this.{self::C::field7}{(() → self::C::T%) → self::C::T%};
+  get getter8() → ((self::C::T%) → void) → void
+    return this.{self::C::field8}{((self::C::T%) → void) → void};
+  get getter9() → ((self::C::T%) → void) → self::C::T%
+    return this.{self::C::field9}{((self::C::T%) → void) → self::C::T%};
+  get getter10() → ((self::C::T%) → self::C::T%) → void
+    return this.{self::C::field10}{((self::C::T%) → self::C::T%) → void};
+  get getter11() → ((self::C::T%) → self::C::T%) → self::C::T%
+    return this.{self::C::field11}{((self::C::T%) → self::C::T%) → self::C::T%};
+  get getter12() → <S extends self::C::T% = dynamic>() → S%
+    return this.{self::C::field12}{<S extends self::C::T% = dynamic>() → S%};
+  get getter13() → <S extends self::C::T% = dynamic>(S%) → void
+    return this.{self::C::field13}{<S extends self::C::T% = dynamic>(S%) → void};
+  get getter14() → <S extends self::C::T% = dynamic>(S%) → S%
+    return this.{self::C::field14}{<S extends self::C::T% = dynamic>(S%) → S%};
+  get getter15() → (<S extends self::C::T% = dynamic>() → S%) → void
+    return this.{self::C::field15}{(<S extends self::C::T% = dynamic>() → S%) → void};
+  set setter1(covariant-by-class self::C::T% value) → void {
     this.{self::C::field1} = value;
   }
-  set setter2(covariant-by-class () →* self::C::T* value) → void {
+  set setter2(covariant-by-class () → self::C::T% value) → void {
     this.{self::C::field2} = value;
   }
-  set setter3((self::C::T*) →* void value) → void {
+  set setter3((self::C::T%) → void value) → void {
     this.{self::C::field3} = value;
   }
-  set setter4(covariant-by-class (self::C::T*) →* self::C::T* value) → void {
+  set setter4(covariant-by-class (self::C::T%) → self::C::T% value) → void {
     this.{self::C::field4} = value;
   }
-  set setter5(covariant-by-class () →* () →* self::C::T* value) → void {
+  set setter5(covariant-by-class () → () → self::C::T% value) → void {
     this.{self::C::field5} = value;
   }
-  set setter6((() →* self::C::T*) →* void value) → void {
+  set setter6((() → self::C::T%) → void value) → void {
     this.{self::C::field6} = value;
   }
-  set setter7(covariant-by-class (() →* self::C::T*) →* self::C::T* value) → void {
+  set setter7(covariant-by-class (() → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field7} = value;
   }
-  set setter8(covariant-by-class ((self::C::T*) →* void) →* void value) → void {
+  set setter8(covariant-by-class ((self::C::T%) → void) → void value) → void {
     this.{self::C::field8} = value;
   }
-  set setter9(covariant-by-class ((self::C::T*) →* void) →* self::C::T* value) → void {
+  set setter9(covariant-by-class ((self::C::T%) → void) → self::C::T% value) → void {
     this.{self::C::field9} = value;
   }
-  set setter10(covariant-by-class ((self::C::T*) →* self::C::T*) →* void value) → void {
+  set setter10(covariant-by-class ((self::C::T%) → self::C::T%) → void value) → void {
     this.{self::C::field10} = value;
   }
-  set setter11(covariant-by-class ((self::C::T*) →* self::C::T*) →* self::C::T* value) → void {
+  set setter11(covariant-by-class ((self::C::T%) → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field11} = value;
   }
-  set setter12(covariant-by-class <S extends self::C::T* = dynamic>() →* S* value) → void {
+  set setter12(covariant-by-class <S extends self::C::T% = dynamic>() → S% value) → void {
     this.{self::C::field12} = value;
   }
-  set setter13(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* void value) → void {
+  set setter13(covariant-by-class <S extends self::C::T% = dynamic>(S%) → void value) → void {
     this.{self::C::field13} = value;
   }
-  set setter14(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* S* value) → void {
+  set setter14(covariant-by-class <S extends self::C::T% = dynamic>(S%) → S% value) → void {
     this.{self::C::field14} = value;
   }
-  set setter15(covariant-by-class (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
+  set setter15(covariant-by-class (<S extends self::C::T% = dynamic>() → S%) → void value) → void {
     this.{self::C::field15} = value;
   }
-  method method1(covariant-by-class self::C::T* value) → void {
+  method method1(covariant-by-class self::C::T% value) → void {
     this.{self::C::field1} = value;
   }
-  method method2(covariant-by-class () →* self::C::T* value) → void {
+  method method2(covariant-by-class () → self::C::T% value) → void {
     this.{self::C::field2} = value;
   }
-  method method3((self::C::T*) →* void value) → void {
+  method method3((self::C::T%) → void value) → void {
     this.{self::C::field3} = value;
   }
-  method method4(covariant-by-class (self::C::T*) →* self::C::T* value) → void {
+  method method4(covariant-by-class (self::C::T%) → self::C::T% value) → void {
     this.{self::C::field4} = value;
   }
-  method method5(covariant-by-class () →* () →* self::C::T* value) → void {
+  method method5(covariant-by-class () → () → self::C::T% value) → void {
     this.{self::C::field5} = value;
   }
-  method method6((() →* self::C::T*) →* void value) → void {
+  method method6((() → self::C::T%) → void value) → void {
     this.{self::C::field6} = value;
   }
-  method method7(covariant-by-class (() →* self::C::T*) →* self::C::T* value) → void {
+  method method7(covariant-by-class (() → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field7} = value;
   }
-  method method8(covariant-by-class ((self::C::T*) →* void) →* void value) → void {
+  method method8(covariant-by-class ((self::C::T%) → void) → void value) → void {
     this.{self::C::field8} = value;
   }
-  method method9(covariant-by-class ((self::C::T*) →* void) →* self::C::T* value) → void {
+  method method9(covariant-by-class ((self::C::T%) → void) → self::C::T% value) → void {
     this.{self::C::field9} = value;
   }
-  method method10(covariant-by-class ((self::C::T*) →* self::C::T*) →* void value) → void {
+  method method10(covariant-by-class ((self::C::T%) → self::C::T%) → void value) → void {
     this.{self::C::field10} = value;
   }
-  method method11(covariant-by-class ((self::C::T*) →* self::C::T*) →* self::C::T* value) → void {
+  method method11(covariant-by-class ((self::C::T%) → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field11} = value;
   }
-  method method12(covariant-by-class <S extends self::C::T* = dynamic>() →* S* value) → void {
+  method method12(covariant-by-class <S extends self::C::T% = dynamic>() → S% value) → void {
     this.{self::C::field12} = value;
   }
-  method method13(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* void value) → void {
+  method method13(covariant-by-class <S extends self::C::T% = dynamic>(S%) → void value) → void {
     this.{self::C::field13} = value;
   }
-  method method14(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* S* value) → void {
+  method method14(covariant-by-class <S extends self::C::T% = dynamic>(S%) → S% value) → void {
     this.{self::C::field14} = value;
   }
-  method method15(covariant-by-class (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
+  method method15(covariant-by-class (<S extends self::C::T% = dynamic>() → S%) → void value) → void {
     this.{self::C::field15} = value;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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::C<core::num*>* c = new self::C::•<core::int*>(0);
-  c.{self::C::field1}{core::num*};
-  c.{self::C::field2}{() →* core::num*};
+  self::C<core::num> c = new self::C::•<core::int>(0);
+  c.{self::C::field1}{core::num};
+  c.{self::C::field2}{() → core::num};
   try {
-    c.{self::C::field3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::field3}{(core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::field4}{(core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::field5}{() →* () →* core::num*};
+  c.{self::C::field5}{() → () → core::num};
   try {
-    c.{self::C::field6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::field6}{(() → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::field7}{(() → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::field8}{((core::num*) →* void) →* void};
-  c.{self::C::field9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::field8}{((core::num) → void) → void};
+  c.{self::C::field9}{((core::num) → void) → core::num};
   try {
-    c.{self::C::field10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::field10}{((core::num) → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::field11}{((core::num) → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::field12}{<S extends core::num = dynamic>() → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>() → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::field13}{<S extends core::num = dynamic>(S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::field14}{<S extends core::num = dynamic>(S) → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::field15}{(<S extends core::num = dynamic>() → S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (<S extends core::num = dynamic>() → S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::getter1}{core::num*};
-  c.{self::C::getter2}{() →* core::num*};
+  c.{self::C::getter1}{core::num};
+  c.{self::C::getter2}{() → core::num};
   try {
-    c.{self::C::getter3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::getter3}{(core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::getter4}{(core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::getter5}{() →* () →* core::num*};
+  c.{self::C::getter5}{() → () → core::num};
   try {
-    c.{self::C::getter6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::getter6}{(() → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::getter7}{(() → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::getter8}{((core::num*) →* void) →* void};
-  c.{self::C::getter9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::getter8}{((core::num) → void) → void};
+  c.{self::C::getter9}{((core::num) → void) → core::num};
   try {
-    c.{self::C::getter10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::getter10}{((core::num) → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::getter11}{((core::num) → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::getter12}{<S extends core::num = dynamic>() → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>() → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::getter13}{<S extends core::num = dynamic>(S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::getter14}{<S extends core::num = dynamic>(S) → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::getter15}{(<S extends core::num = dynamic>() → S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (<S extends core::num = dynamic>() → S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
     c.{self::C::setter1} = 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter2} = () → core::double* => 0.5;
+    c.{self::C::setter2} = () → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::setter3} = (core::num* n) → Null {};
+  c.{self::C::setter3} = (core::num n) → void {};
   try {
-    c.{self::C::setter4} = (core::num* n) → core::double* => 0.5;
+    c.{self::C::setter4} = (core::num n) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter5} = () → () →* core::double* => () → core::double* => 0.5;
+    c.{self::C::setter5} = () → () → core::double => () → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::setter6} = (() →* core::num* f) → Null {};
+  c.{self::C::setter6} = (() → core::num f) → void {};
   try {
-    c.{self::C::setter7} = (() →* core::num* f) → core::double* => 0.5;
+    c.{self::C::setter7} = (() → core::num f) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter8} = ((core::double*) →* void f) → Null {};
+    c.{self::C::setter8} = ((core::double) → void f) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter9} = ((core::double*) →* void f) → core::double* => 0.5;
+    c.{self::C::setter9} = ((core::double) → void f) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter10} = ((core::double*) →* core::num* f) → Null {};
+    c.{self::C::setter10} = ((core::double) → core::num f) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter11} = ((core::double*) →* core::num* f) → core::double* => 0.5;
+    c.{self::C::setter11} = ((core::double) → core::num f) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter12} = <S extends core::num*>() → Null => null;
+    c.{self::C::setter12} = <S extends core::num>() → Never => throw "";
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter13} = <S extends core::num*>(S* s) → Null {};
+    c.{self::C::setter13} = <S extends core::num>(S s) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter14} = <S extends core::num*>(S* s) → S* => s;
+    c.{self::C::setter14} = <S extends core::num>(S s) → S => s;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter15} = (<S extends core::num*>() →* S* f) → Null {};
+    c.{self::C::setter15} = (<S extends core::num>() → S f) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method1}(0.5){(core::num*) →* void};
+    c.{self::C::method1}(0.5){(core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method2}(() → core::double* => 0.5){(() →* core::num*) →* void};
+    c.{self::C::method2}(() → core::double => 0.5){(() → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::method3}((core::num* n) → Null {}){((core::num*) →* void) →* void};
+  c.{self::C::method3}((core::num n) → void {}){((core::num) → void) → void};
   try {
-    c.{self::C::method4}((core::num* n) → core::double* => 0.5){((core::num*) →* core::num*) →* void};
+    c.{self::C::method4}((core::num n) → core::double => 0.5){((core::num) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method5}(() → () →* core::double* => () → core::double* => 0.5){(() →* () →* core::num*) →* void};
+    c.{self::C::method5}(() → () → core::double => () → core::double => 0.5){(() → () → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::method6}((() →* core::num* f) → Null {}){((() →* core::num*) →* void) →* void};
+  c.{self::C::method6}((() → core::num f) → void {}){((() → core::num) → void) → void};
   try {
-    c.{self::C::method7}((() →* core::num* f) → core::double* => 0.5){((() →* core::num*) →* core::num*) →* void};
+    c.{self::C::method7}((() → core::num f) → core::double => 0.5){((() → core::num) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method8}(((core::double*) →* void f) → Null {}){(((core::num*) →* void) →* void) →* void};
+    c.{self::C::method8}(((core::double) → void f) → void {}){(((core::num) → void) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method9}(((core::double*) →* void f) → core::double* => 0.5){(((core::num*) →* void) →* core::num*) →* void};
+    c.{self::C::method9}(((core::double) → void f) → core::double => 0.5){(((core::num) → void) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method10}(((core::double*) →* core::num* f) → Null {}){(((core::num*) →* core::num*) →* void) →* void};
+    c.{self::C::method10}(((core::double) → core::num f) → void {}){(((core::num) → core::num) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method11}(((core::double*) →* core::num* f) → core::double* => 0.5){(((core::num*) →* core::num*) →* core::num*) →* void};
+    c.{self::C::method11}(((core::double) → core::num f) → core::double => 0.5){(((core::num) → core::num) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method12}(<S extends core::num*>() → Null => null){(<S extends core::num* = dynamic>() →* S*) →* void};
+    c.{self::C::method12}(<S extends core::num>() → Never => throw ""){(<S extends core::num = dynamic>() → S) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method13}(<S extends core::num*>(S* s) → Null {}){(<S extends core::num* = dynamic>(S*) →* void) →* void};
+    c.{self::C::method13}(<S extends core::num>(S s) → void {}){(<S extends core::num = dynamic>(S) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method14}(<S extends core::num*>(S* s) → S* => s){(<S extends core::num* = dynamic>(S*) →* S*) →* void};
+    c.{self::C::method14}(<S extends core::num>(S s) → S => s){(<S extends core::num = dynamic>(S) → S) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method15}((<S extends core::num*>() →* S* f) → Null {}){((<S extends core::num* = dynamic>() →* S*) →* void) →* void};
+    c.{self::C::method15}((<S extends core::num>() → S f) → void {}){((<S extends core::num = dynamic>() → S) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
 }
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.outline.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.outline.expect
index 0280a26..f9f7a84 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.outline.expect
@@ -1,125 +1,115 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::C::T* field1;
-  covariant-by-class field () →* self::C::T* field2;
-  field (self::C::T*) →* void field3;
-  covariant-by-class field (self::C::T*) →* self::C::T* field4;
-  covariant-by-class field () →* () →* self::C::T* field5;
-  field (() →* self::C::T*) →* void field6;
-  covariant-by-class field (() →* self::C::T*) →* self::C::T* field7;
-  covariant-by-class field ((self::C::T*) →* void) →* void field8;
-  covariant-by-class field ((self::C::T*) →* void) →* self::C::T* field9;
-  covariant-by-class field ((self::C::T*) →* self::C::T*) →* void field10;
-  covariant-by-class field ((self::C::T*) →* self::C::T*) →* self::C::T* field11;
-  covariant-by-class field <S extends self::C::T* = dynamic>() →* S* field12;
-  covariant-by-class field <S extends self::C::T* = dynamic>(S*) →* void field13;
-  covariant-by-class field <S extends self::C::T* = dynamic>(S*) →* S* field14;
-  covariant-by-class field (<S extends self::C::T* = dynamic>() →* S*) →* void field15;
-  constructor •(self::C::T* field1) → self::C<self::C::T*>*
+class C<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::C::T% field1;
+  covariant-by-class field () → self::C::T% field2;
+  field (self::C::T%) → void field3;
+  covariant-by-class field (self::C::T%) → self::C::T% field4;
+  covariant-by-class field () → () → self::C::T% field5;
+  field (() → self::C::T%) → void field6;
+  covariant-by-class field (() → self::C::T%) → self::C::T% field7;
+  covariant-by-class field ((self::C::T%) → void) → void field8;
+  covariant-by-class field ((self::C::T%) → void) → self::C::T% field9;
+  covariant-by-class field ((self::C::T%) → self::C::T%) → void field10;
+  covariant-by-class field ((self::C::T%) → self::C::T%) → self::C::T% field11;
+  covariant-by-class field <S extends self::C::T% = dynamic>() → S% field12;
+  covariant-by-class field <S extends self::C::T% = dynamic>(S%) → void field13;
+  covariant-by-class field <S extends self::C::T% = dynamic>(S%) → S% field14;
+  covariant-by-class field (<S extends self::C::T% = dynamic>() → S%) → void field15;
+  constructor •(self::C::T% field1) → self::C<self::C::T%>
     ;
-  get getter1() → self::C::T*
+  get getter1() → self::C::T%
     ;
-  get getter2() → () →* self::C::T*
+  get getter2() → () → self::C::T%
     ;
-  get getter3() → (self::C::T*) →* void
+  get getter3() → (self::C::T%) → void
     ;
-  get getter4() → (self::C::T*) →* self::C::T*
+  get getter4() → (self::C::T%) → self::C::T%
     ;
-  get getter5() → () →* () →* self::C::T*
+  get getter5() → () → () → self::C::T%
     ;
-  get getter6() → (() →* self::C::T*) →* void
+  get getter6() → (() → self::C::T%) → void
     ;
-  get getter7() → (() →* self::C::T*) →* self::C::T*
+  get getter7() → (() → self::C::T%) → self::C::T%
     ;
-  get getter8() → ((self::C::T*) →* void) →* void
+  get getter8() → ((self::C::T%) → void) → void
     ;
-  get getter9() → ((self::C::T*) →* void) →* self::C::T*
+  get getter9() → ((self::C::T%) → void) → self::C::T%
     ;
-  get getter10() → ((self::C::T*) →* self::C::T*) →* void
+  get getter10() → ((self::C::T%) → self::C::T%) → void
     ;
-  get getter11() → ((self::C::T*) →* self::C::T*) →* self::C::T*
+  get getter11() → ((self::C::T%) → self::C::T%) → self::C::T%
     ;
-  get getter12() → <S extends self::C::T* = dynamic>() →* S*
+  get getter12() → <S extends self::C::T% = dynamic>() → S%
     ;
-  get getter13() → <S extends self::C::T* = dynamic>(S*) →* void
+  get getter13() → <S extends self::C::T% = dynamic>(S%) → void
     ;
-  get getter14() → <S extends self::C::T* = dynamic>(S*) →* S*
+  get getter14() → <S extends self::C::T% = dynamic>(S%) → S%
     ;
-  get getter15() → (<S extends self::C::T* = dynamic>() →* S*) →* void
+  get getter15() → (<S extends self::C::T% = dynamic>() → S%) → void
     ;
-  set setter1(covariant-by-class self::C::T* value) → void
+  set setter1(covariant-by-class self::C::T% value) → void
     ;
-  set setter2(covariant-by-class () →* self::C::T* value) → void
+  set setter2(covariant-by-class () → self::C::T% value) → void
     ;
-  set setter3((self::C::T*) →* void value) → void
+  set setter3((self::C::T%) → void value) → void
     ;
-  set setter4(covariant-by-class (self::C::T*) →* self::C::T* value) → void
+  set setter4(covariant-by-class (self::C::T%) → self::C::T% value) → void
     ;
-  set setter5(covariant-by-class () →* () →* self::C::T* value) → void
+  set setter5(covariant-by-class () → () → self::C::T% value) → void
     ;
-  set setter6((() →* self::C::T*) →* void value) → void
+  set setter6((() → self::C::T%) → void value) → void
     ;
-  set setter7(covariant-by-class (() →* self::C::T*) →* self::C::T* value) → void
+  set setter7(covariant-by-class (() → self::C::T%) → self::C::T% value) → void
     ;
-  set setter8(covariant-by-class ((self::C::T*) →* void) →* void value) → void
+  set setter8(covariant-by-class ((self::C::T%) → void) → void value) → void
     ;
-  set setter9(covariant-by-class ((self::C::T*) →* void) →* self::C::T* value) → void
+  set setter9(covariant-by-class ((self::C::T%) → void) → self::C::T% value) → void
     ;
-  set setter10(covariant-by-class ((self::C::T*) →* self::C::T*) →* void value) → void
+  set setter10(covariant-by-class ((self::C::T%) → self::C::T%) → void value) → void
     ;
-  set setter11(covariant-by-class ((self::C::T*) →* self::C::T*) →* self::C::T* value) → void
+  set setter11(covariant-by-class ((self::C::T%) → self::C::T%) → self::C::T% value) → void
     ;
-  set setter12(covariant-by-class <S extends self::C::T* = dynamic>() →* S* value) → void
+  set setter12(covariant-by-class <S extends self::C::T% = dynamic>() → S% value) → void
     ;
-  set setter13(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* void value) → void
+  set setter13(covariant-by-class <S extends self::C::T% = dynamic>(S%) → void value) → void
     ;
-  set setter14(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* S* value) → void
+  set setter14(covariant-by-class <S extends self::C::T% = dynamic>(S%) → S% value) → void
     ;
-  set setter15(covariant-by-class (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void
+  set setter15(covariant-by-class (<S extends self::C::T% = dynamic>() → S%) → void value) → void
     ;
-  method method1(covariant-by-class self::C::T* value) → void
+  method method1(covariant-by-class self::C::T% value) → void
     ;
-  method method2(covariant-by-class () →* self::C::T* value) → void
+  method method2(covariant-by-class () → self::C::T% value) → void
     ;
-  method method3((self::C::T*) →* void value) → void
+  method method3((self::C::T%) → void value) → void
     ;
-  method method4(covariant-by-class (self::C::T*) →* self::C::T* value) → void
+  method method4(covariant-by-class (self::C::T%) → self::C::T% value) → void
     ;
-  method method5(covariant-by-class () →* () →* self::C::T* value) → void
+  method method5(covariant-by-class () → () → self::C::T% value) → void
     ;
-  method method6((() →* self::C::T*) →* void value) → void
+  method method6((() → self::C::T%) → void value) → void
     ;
-  method method7(covariant-by-class (() →* self::C::T*) →* self::C::T* value) → void
+  method method7(covariant-by-class (() → self::C::T%) → self::C::T% value) → void
     ;
-  method method8(covariant-by-class ((self::C::T*) →* void) →* void value) → void
+  method method8(covariant-by-class ((self::C::T%) → void) → void value) → void
     ;
-  method method9(covariant-by-class ((self::C::T*) →* void) →* self::C::T* value) → void
+  method method9(covariant-by-class ((self::C::T%) → void) → self::C::T% value) → void
     ;
-  method method10(covariant-by-class ((self::C::T*) →* self::C::T*) →* void value) → void
+  method method10(covariant-by-class ((self::C::T%) → self::C::T%) → void value) → void
     ;
-  method method11(covariant-by-class ((self::C::T*) →* self::C::T*) →* self::C::T* value) → void
+  method method11(covariant-by-class ((self::C::T%) → self::C::T%) → self::C::T% value) → void
     ;
-  method method12(covariant-by-class <S extends self::C::T* = dynamic>() →* S* value) → void
+  method method12(covariant-by-class <S extends self::C::T% = dynamic>() → S% value) → void
     ;
-  method method13(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* void value) → void
+  method method13(covariant-by-class <S extends self::C::T% = dynamic>(S%) → void value) → void
     ;
-  method method14(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* S* value) → void
+  method method14(covariant-by-class <S extends self::C::T% = dynamic>(S%) → S% value) → void
     ;
-  method method15(covariant-by-class (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void
+  method method15(covariant-by-class (<S extends self::C::T% = dynamic>() → S%) → void 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 main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.transformed.expect
index 5f06498..f80ffa1 100644
--- a/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/non_covariant_checks.dart.weak.transformed.expect
@@ -1,493 +1,483 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
-class C<T extends core::Object* = dynamic> extends core::Object {
-  covariant-by-class field self::C::T* field1;
-  covariant-by-class field () →* self::C::T* field2;
-  field (self::C::T*) →* void field3;
-  covariant-by-class field (self::C::T*) →* self::C::T* field4;
-  covariant-by-class field () →* () →* self::C::T* field5;
-  field (() →* self::C::T*) →* void field6;
-  covariant-by-class field (() →* self::C::T*) →* self::C::T* field7;
-  covariant-by-class field ((self::C::T*) →* void) →* void field8;
-  covariant-by-class field ((self::C::T*) →* void) →* self::C::T* field9;
-  covariant-by-class field ((self::C::T*) →* self::C::T*) →* void field10;
-  covariant-by-class field ((self::C::T*) →* self::C::T*) →* self::C::T* field11;
-  covariant-by-class field <S extends self::C::T* = dynamic>() →* S* field12;
-  covariant-by-class field <S extends self::C::T* = dynamic>(S*) →* void field13;
-  covariant-by-class field <S extends self::C::T* = dynamic>(S*) →* S* field14;
-  covariant-by-class field (<S extends self::C::T* = dynamic>() →* S*) →* void field15;
-  constructor •(self::C::T* field1) → self::C<self::C::T*>*
-    : self::C::field1 = field1, self::C::field2 = () → self::C::T* => field1, self::C::field3 = (self::C::T* t) → Null {}, self::C::field4 = (self::C::T* t) → self::C::T* => t, self::C::field5 = () → () →* self::C::T* => () → self::C::T* => field1, self::C::field6 = (() →* self::C::T* f) → Null {}, self::C::field7 = (() →* self::C::T* f) → self::C::T* => field1, self::C::field8 = ((self::C::T*) →* void f) → Null {}, self::C::field9 = ((self::C::T*) →* void f) → self::C::T* => field1, self::C::field10 = ((self::C::T*) →* self::C::T* f) → Null {}, self::C::field11 = ((self::C::T*) →* self::C::T* f) → self::C::T* => field1, self::C::field12 = <S extends self::C::T*>() → Null => null, self::C::field13 = <S extends self::C::T*>(S* s) → Null {}, self::C::field14 = <S extends self::C::T*>(S* s) → S* => s, self::C::field15 = (<S extends self::C::T*>() →* S* f) → Null {}, super core::Object::•()
+class C<T extends core::Object? = dynamic> extends core::Object {
+  covariant-by-class field self::C::T% field1;
+  covariant-by-class field () → self::C::T% field2;
+  field (self::C::T%) → void field3;
+  covariant-by-class field (self::C::T%) → self::C::T% field4;
+  covariant-by-class field () → () → self::C::T% field5;
+  field (() → self::C::T%) → void field6;
+  covariant-by-class field (() → self::C::T%) → self::C::T% field7;
+  covariant-by-class field ((self::C::T%) → void) → void field8;
+  covariant-by-class field ((self::C::T%) → void) → self::C::T% field9;
+  covariant-by-class field ((self::C::T%) → self::C::T%) → void field10;
+  covariant-by-class field ((self::C::T%) → self::C::T%) → self::C::T% field11;
+  covariant-by-class field <S extends self::C::T% = dynamic>() → S% field12;
+  covariant-by-class field <S extends self::C::T% = dynamic>(S%) → void field13;
+  covariant-by-class field <S extends self::C::T% = dynamic>(S%) → S% field14;
+  covariant-by-class field (<S extends self::C::T% = dynamic>() → S%) → void field15;
+  constructor •(self::C::T% field1) → self::C<self::C::T%>
+    : self::C::field1 = field1, self::C::field2 = () → self::C::T% => field1, self::C::field3 = (self::C::T% t) → void {}, self::C::field4 = (self::C::T% t) → self::C::T% => t, self::C::field5 = () → () → self::C::T% => () → self::C::T% => field1, self::C::field6 = (() → self::C::T% f) → void {}, self::C::field7 = (() → self::C::T% f) → self::C::T% => field1, self::C::field8 = ((self::C::T%) → void f) → void {}, self::C::field9 = ((self::C::T%) → void f) → self::C::T% => field1, self::C::field10 = ((self::C::T%) → self::C::T% f) → void {}, self::C::field11 = ((self::C::T%) → self::C::T% f) → self::C::T% => field1, self::C::field12 = <S extends self::C::T%>() → Never => throw "", self::C::field13 = <S extends self::C::T%>(S% s) → void {}, self::C::field14 = <S extends self::C::T%>(S% s) → S% => s, self::C::field15 = (<S extends self::C::T%>() → S% f) → void {}, super core::Object::•()
     ;
-  get getter1() → self::C::T*
-    return this.{self::C::field1}{self::C::T*};
-  get getter2() → () →* self::C::T*
-    return this.{self::C::field2}{() →* self::C::T*};
-  get getter3() → (self::C::T*) →* void
-    return this.{self::C::field3}{(self::C::T*) →* void};
-  get getter4() → (self::C::T*) →* self::C::T*
-    return this.{self::C::field4}{(self::C::T*) →* self::C::T*};
-  get getter5() → () →* () →* self::C::T*
-    return this.{self::C::field5}{() →* () →* self::C::T*};
-  get getter6() → (() →* self::C::T*) →* void
-    return this.{self::C::field6}{(() →* self::C::T*) →* void};
-  get getter7() → (() →* self::C::T*) →* self::C::T*
-    return this.{self::C::field7}{(() →* self::C::T*) →* self::C::T*};
-  get getter8() → ((self::C::T*) →* void) →* void
-    return this.{self::C::field8}{((self::C::T*) →* void) →* void};
-  get getter9() → ((self::C::T*) →* void) →* self::C::T*
-    return this.{self::C::field9}{((self::C::T*) →* void) →* self::C::T*};
-  get getter10() → ((self::C::T*) →* self::C::T*) →* void
-    return this.{self::C::field10}{((self::C::T*) →* self::C::T*) →* void};
-  get getter11() → ((self::C::T*) →* self::C::T*) →* self::C::T*
-    return this.{self::C::field11}{((self::C::T*) →* self::C::T*) →* self::C::T*};
-  get getter12() → <S extends self::C::T* = dynamic>() →* S*
-    return this.{self::C::field12}{<S extends self::C::T* = dynamic>() →* S*};
-  get getter13() → <S extends self::C::T* = dynamic>(S*) →* void
-    return this.{self::C::field13}{<S extends self::C::T* = dynamic>(S*) →* void};
-  get getter14() → <S extends self::C::T* = dynamic>(S*) →* S*
-    return this.{self::C::field14}{<S extends self::C::T* = dynamic>(S*) →* S*};
-  get getter15() → (<S extends self::C::T* = dynamic>() →* S*) →* void
-    return this.{self::C::field15}{(<S extends self::C::T* = dynamic>() →* S*) →* void};
-  set setter1(covariant-by-class self::C::T* value) → void {
+  get getter1() → self::C::T%
+    return this.{self::C::field1}{self::C::T%};
+  get getter2() → () → self::C::T%
+    return this.{self::C::field2}{() → self::C::T%};
+  get getter3() → (self::C::T%) → void
+    return this.{self::C::field3}{(self::C::T%) → void};
+  get getter4() → (self::C::T%) → self::C::T%
+    return this.{self::C::field4}{(self::C::T%) → self::C::T%};
+  get getter5() → () → () → self::C::T%
+    return this.{self::C::field5}{() → () → self::C::T%};
+  get getter6() → (() → self::C::T%) → void
+    return this.{self::C::field6}{(() → self::C::T%) → void};
+  get getter7() → (() → self::C::T%) → self::C::T%
+    return this.{self::C::field7}{(() → self::C::T%) → self::C::T%};
+  get getter8() → ((self::C::T%) → void) → void
+    return this.{self::C::field8}{((self::C::T%) → void) → void};
+  get getter9() → ((self::C::T%) → void) → self::C::T%
+    return this.{self::C::field9}{((self::C::T%) → void) → self::C::T%};
+  get getter10() → ((self::C::T%) → self::C::T%) → void
+    return this.{self::C::field10}{((self::C::T%) → self::C::T%) → void};
+  get getter11() → ((self::C::T%) → self::C::T%) → self::C::T%
+    return this.{self::C::field11}{((self::C::T%) → self::C::T%) → self::C::T%};
+  get getter12() → <S extends self::C::T% = dynamic>() → S%
+    return this.{self::C::field12}{<S extends self::C::T% = dynamic>() → S%};
+  get getter13() → <S extends self::C::T% = dynamic>(S%) → void
+    return this.{self::C::field13}{<S extends self::C::T% = dynamic>(S%) → void};
+  get getter14() → <S extends self::C::T% = dynamic>(S%) → S%
+    return this.{self::C::field14}{<S extends self::C::T% = dynamic>(S%) → S%};
+  get getter15() → (<S extends self::C::T% = dynamic>() → S%) → void
+    return this.{self::C::field15}{(<S extends self::C::T% = dynamic>() → S%) → void};
+  set setter1(covariant-by-class self::C::T% value) → void {
     this.{self::C::field1} = value;
   }
-  set setter2(covariant-by-class () →* self::C::T* value) → void {
+  set setter2(covariant-by-class () → self::C::T% value) → void {
     this.{self::C::field2} = value;
   }
-  set setter3((self::C::T*) →* void value) → void {
+  set setter3((self::C::T%) → void value) → void {
     this.{self::C::field3} = value;
   }
-  set setter4(covariant-by-class (self::C::T*) →* self::C::T* value) → void {
+  set setter4(covariant-by-class (self::C::T%) → self::C::T% value) → void {
     this.{self::C::field4} = value;
   }
-  set setter5(covariant-by-class () →* () →* self::C::T* value) → void {
+  set setter5(covariant-by-class () → () → self::C::T% value) → void {
     this.{self::C::field5} = value;
   }
-  set setter6((() →* self::C::T*) →* void value) → void {
+  set setter6((() → self::C::T%) → void value) → void {
     this.{self::C::field6} = value;
   }
-  set setter7(covariant-by-class (() →* self::C::T*) →* self::C::T* value) → void {
+  set setter7(covariant-by-class (() → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field7} = value;
   }
-  set setter8(covariant-by-class ((self::C::T*) →* void) →* void value) → void {
+  set setter8(covariant-by-class ((self::C::T%) → void) → void value) → void {
     this.{self::C::field8} = value;
   }
-  set setter9(covariant-by-class ((self::C::T*) →* void) →* self::C::T* value) → void {
+  set setter9(covariant-by-class ((self::C::T%) → void) → self::C::T% value) → void {
     this.{self::C::field9} = value;
   }
-  set setter10(covariant-by-class ((self::C::T*) →* self::C::T*) →* void value) → void {
+  set setter10(covariant-by-class ((self::C::T%) → self::C::T%) → void value) → void {
     this.{self::C::field10} = value;
   }
-  set setter11(covariant-by-class ((self::C::T*) →* self::C::T*) →* self::C::T* value) → void {
+  set setter11(covariant-by-class ((self::C::T%) → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field11} = value;
   }
-  set setter12(covariant-by-class <S extends self::C::T* = dynamic>() →* S* value) → void {
+  set setter12(covariant-by-class <S extends self::C::T% = dynamic>() → S% value) → void {
     this.{self::C::field12} = value;
   }
-  set setter13(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* void value) → void {
+  set setter13(covariant-by-class <S extends self::C::T% = dynamic>(S%) → void value) → void {
     this.{self::C::field13} = value;
   }
-  set setter14(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* S* value) → void {
+  set setter14(covariant-by-class <S extends self::C::T% = dynamic>(S%) → S% value) → void {
     this.{self::C::field14} = value;
   }
-  set setter15(covariant-by-class (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
+  set setter15(covariant-by-class (<S extends self::C::T% = dynamic>() → S%) → void value) → void {
     this.{self::C::field15} = value;
   }
-  method method1(covariant-by-class self::C::T* value) → void {
+  method method1(covariant-by-class self::C::T% value) → void {
     this.{self::C::field1} = value;
   }
-  method method2(covariant-by-class () →* self::C::T* value) → void {
+  method method2(covariant-by-class () → self::C::T% value) → void {
     this.{self::C::field2} = value;
   }
-  method method3((self::C::T*) →* void value) → void {
+  method method3((self::C::T%) → void value) → void {
     this.{self::C::field3} = value;
   }
-  method method4(covariant-by-class (self::C::T*) →* self::C::T* value) → void {
+  method method4(covariant-by-class (self::C::T%) → self::C::T% value) → void {
     this.{self::C::field4} = value;
   }
-  method method5(covariant-by-class () →* () →* self::C::T* value) → void {
+  method method5(covariant-by-class () → () → self::C::T% value) → void {
     this.{self::C::field5} = value;
   }
-  method method6((() →* self::C::T*) →* void value) → void {
+  method method6((() → self::C::T%) → void value) → void {
     this.{self::C::field6} = value;
   }
-  method method7(covariant-by-class (() →* self::C::T*) →* self::C::T* value) → void {
+  method method7(covariant-by-class (() → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field7} = value;
   }
-  method method8(covariant-by-class ((self::C::T*) →* void) →* void value) → void {
+  method method8(covariant-by-class ((self::C::T%) → void) → void value) → void {
     this.{self::C::field8} = value;
   }
-  method method9(covariant-by-class ((self::C::T*) →* void) →* self::C::T* value) → void {
+  method method9(covariant-by-class ((self::C::T%) → void) → self::C::T% value) → void {
     this.{self::C::field9} = value;
   }
-  method method10(covariant-by-class ((self::C::T*) →* self::C::T*) →* void value) → void {
+  method method10(covariant-by-class ((self::C::T%) → self::C::T%) → void value) → void {
     this.{self::C::field10} = value;
   }
-  method method11(covariant-by-class ((self::C::T*) →* self::C::T*) →* self::C::T* value) → void {
+  method method11(covariant-by-class ((self::C::T%) → self::C::T%) → self::C::T% value) → void {
     this.{self::C::field11} = value;
   }
-  method method12(covariant-by-class <S extends self::C::T* = dynamic>() →* S* value) → void {
+  method method12(covariant-by-class <S extends self::C::T% = dynamic>() → S% value) → void {
     this.{self::C::field12} = value;
   }
-  method method13(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* void value) → void {
+  method method13(covariant-by-class <S extends self::C::T% = dynamic>(S%) → void value) → void {
     this.{self::C::field13} = value;
   }
-  method method14(covariant-by-class <S extends self::C::T* = dynamic>(S*) →* S* value) → void {
+  method method14(covariant-by-class <S extends self::C::T% = dynamic>(S%) → S% value) → void {
     this.{self::C::field14} = value;
   }
-  method method15(covariant-by-class (<S extends self::C::T* = dynamic>() →* S*) →* void value) → void {
+  method method15(covariant-by-class (<S extends self::C::T% = dynamic>() → S%) → void value) → void {
     this.{self::C::field15} = value;
   }
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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::C<core::num*>* c = new self::C::•<core::int*>(0);
-  c.{self::C::field1}{core::num*};
-  c.{self::C::field2}{() →* core::num*};
+  self::C<core::num> c = new self::C::•<core::int>(0);
+  c.{self::C::field1}{core::num};
+  c.{self::C::field2}{() → core::num};
   try {
-    c.{self::C::field3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::field3}{(core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::field4}{(core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::field5}{() →* () →* core::num*};
+  c.{self::C::field5}{() → () → core::num};
   try {
-    c.{self::C::field6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::field6}{(() → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::field7}{(() → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::field8}{((core::num*) →* void) →* void};
-  c.{self::C::field9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::field8}{((core::num) → void) → void};
+  c.{self::C::field9}{((core::num) → void) → core::num};
   try {
-    c.{self::C::field10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::field10}{((core::num) → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::field11}{((core::num) → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::field12}{<S extends core::num = dynamic>() → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>() → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::field13}{<S extends core::num = dynamic>(S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::field14}{<S extends core::num = dynamic>(S) → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::field15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::field15}{(<S extends core::num = dynamic>() → S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (<S extends core::num = dynamic>() → S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::getter1}{core::num*};
-  c.{self::C::getter2}{() →* core::num*};
+  c.{self::C::getter1}{core::num};
+  c.{self::C::getter2}{() → core::num};
   try {
-    c.{self::C::getter3}{(core::num*) →* void} as{TypeError,CovarianceCheck} (core::num*) →* void;
+    c.{self::C::getter3}{(core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter4}{(core::num*) →* core::num*} as{TypeError,CovarianceCheck} (core::num*) →* core::num*;
+    c.{self::C::getter4}{(core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::getter5}{() →* () →* core::num*};
+  c.{self::C::getter5}{() → () → core::num};
   try {
-    c.{self::C::getter6}{(() →* core::num*) →* void} as{TypeError,CovarianceCheck} (() →* core::num*) →* void;
+    c.{self::C::getter6}{(() → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter7}{(() →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} (() →* core::num*) →* core::num*;
+    c.{self::C::getter7}{(() → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (() → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::getter8}{((core::num*) →* void) →* void};
-  c.{self::C::getter9}{((core::num*) →* void) →* core::num*};
+  c.{self::C::getter8}{((core::num) → void) → void};
+  c.{self::C::getter9}{((core::num) → void) → core::num};
   try {
-    c.{self::C::getter10}{((core::num*) →* core::num*) →* void} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* void;
+    c.{self::C::getter10}{((core::num) → core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter11}{((core::num*) →* core::num*) →* core::num*} as{TypeError,CovarianceCheck} ((core::num*) →* core::num*) →* core::num*;
+    c.{self::C::getter11}{((core::num) → core::num) → core::num} as{TypeError,CovarianceCheck,ForNonNullableByDefault} ((core::num) → core::num) → core::num;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter12}{<S extends core::num* = dynamic>() →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>() →* S*;
+    c.{self::C::getter12}{<S extends core::num = dynamic>() → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>() → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter13}{<S extends core::num* = dynamic>(S*) →* void} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* void;
+    c.{self::C::getter13}{<S extends core::num = dynamic>(S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter14}{<S extends core::num* = dynamic>(S*) →* S*} as{TypeError,CovarianceCheck} <S extends core::num* = dynamic>(S*) →* S*;
+    c.{self::C::getter14}{<S extends core::num = dynamic>(S) → S} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → S;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::getter15}{(<S extends core::num* = dynamic>() →* S*) →* void} as{TypeError,CovarianceCheck} (<S extends core::num* = dynamic>() →* S*) →* void;
+    c.{self::C::getter15}{(<S extends core::num = dynamic>() → S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (<S extends core::num = dynamic>() → S) → void;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
     c.{self::C::setter1} = 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter2} = () → core::double* => 0.5;
+    c.{self::C::setter2} = () → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::setter3} = (core::num* n) → Null {};
+  c.{self::C::setter3} = (core::num n) → void {};
   try {
-    c.{self::C::setter4} = (core::num* n) → core::double* => 0.5;
+    c.{self::C::setter4} = (core::num n) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter5} = () → () →* core::double* => () → core::double* => 0.5;
+    c.{self::C::setter5} = () → () → core::double => () → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::setter6} = (() →* core::num* f) → Null {};
+  c.{self::C::setter6} = (() → core::num f) → void {};
   try {
-    c.{self::C::setter7} = (() →* core::num* f) → core::double* => 0.5;
+    c.{self::C::setter7} = (() → core::num f) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter8} = ((core::double*) →* void f) → Null {};
+    c.{self::C::setter8} = ((core::double) → void f) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter9} = ((core::double*) →* void f) → core::double* => 0.5;
+    c.{self::C::setter9} = ((core::double) → void f) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter10} = ((core::double*) →* core::num* f) → Null {};
+    c.{self::C::setter10} = ((core::double) → core::num f) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter11} = ((core::double*) →* core::num* f) → core::double* => 0.5;
+    c.{self::C::setter11} = ((core::double) → core::num f) → core::double => 0.5;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter12} = <S extends core::num*>() → Null => null;
+    c.{self::C::setter12} = <S extends core::num>() → Never => throw "";
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter13} = <S extends core::num*>(S* s) → Null {};
+    c.{self::C::setter13} = <S extends core::num>(S s) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter14} = <S extends core::num*>(S* s) → S* => s;
+    c.{self::C::setter14} = <S extends core::num>(S s) → S => s;
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::setter15} = (<S extends core::num*>() →* S* f) → Null {};
+    c.{self::C::setter15} = (<S extends core::num>() → S f) → void {};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method1}(0.5){(core::num*) →* void};
+    c.{self::C::method1}(0.5){(core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method2}(() → core::double* => 0.5){(() →* core::num*) →* void};
+    c.{self::C::method2}(() → core::double => 0.5){(() → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::method3}((core::num* n) → Null {}){((core::num*) →* void) →* void};
+  c.{self::C::method3}((core::num n) → void {}){((core::num) → void) → void};
   try {
-    c.{self::C::method4}((core::num* n) → core::double* => 0.5){((core::num*) →* core::num*) →* void};
+    c.{self::C::method4}((core::num n) → core::double => 0.5){((core::num) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method5}(() → () →* core::double* => () → core::double* => 0.5){(() →* () →* core::num*) →* void};
+    c.{self::C::method5}(() → () → core::double => () → core::double => 0.5){(() → () → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
-  c.{self::C::method6}((() →* core::num* f) → Null {}){((() →* core::num*) →* void) →* void};
+  c.{self::C::method6}((() → core::num f) → void {}){((() → core::num) → void) → void};
   try {
-    c.{self::C::method7}((() →* core::num* f) → core::double* => 0.5){((() →* core::num*) →* core::num*) →* void};
+    c.{self::C::method7}((() → core::num f) → core::double => 0.5){((() → core::num) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method8}(((core::double*) →* void f) → Null {}){(((core::num*) →* void) →* void) →* void};
+    c.{self::C::method8}(((core::double) → void f) → void {}){(((core::num) → void) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method9}(((core::double*) →* void f) → core::double* => 0.5){(((core::num*) →* void) →* core::num*) →* void};
+    c.{self::C::method9}(((core::double) → void f) → core::double => 0.5){(((core::num) → void) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method10}(((core::double*) →* core::num* f) → Null {}){(((core::num*) →* core::num*) →* void) →* void};
+    c.{self::C::method10}(((core::double) → core::num f) → void {}){(((core::num) → core::num) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method11}(((core::double*) →* core::num* f) → core::double* => 0.5){(((core::num*) →* core::num*) →* core::num*) →* void};
+    c.{self::C::method11}(((core::double) → core::num f) → core::double => 0.5){(((core::num) → core::num) → core::num) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method12}(<S extends core::num*>() → Null => null){(<S extends core::num* = dynamic>() →* S*) →* void};
+    c.{self::C::method12}(<S extends core::num>() → Never => throw ""){(<S extends core::num = dynamic>() → S) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method13}(<S extends core::num*>(S* s) → Null {}){(<S extends core::num* = dynamic>(S*) →* void) →* void};
+    c.{self::C::method13}(<S extends core::num>(S s) → void {}){(<S extends core::num = dynamic>(S) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method14}(<S extends core::num*>(S* s) → S* => s){(<S extends core::num* = dynamic>(S*) →* S*) →* void};
+    c.{self::C::method14}(<S extends core::num>(S s) → S => s){(<S extends core::num = dynamic>(S) → S) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
   try {
-    c.{self::C::method15}((<S extends core::num*>() →* S* f) → Null {}){((<S extends core::num* = dynamic>() →* S*) →* void) →* void};
+    c.{self::C::method15}((<S extends core::num>() → S f) → void {}){((<S extends core::num = dynamic>() → S) → void) → void};
     throw "TypeError expected";
   }
-  on core::TypeError* catch(final core::TypeError* e) {
+  on core::TypeError catch(final core::TypeError e) {
     core::print(e);
   }
 }
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart b/pkg/front_end/testcases/general/nsm_covariance.dart
index 15b27f7..3ee3063 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart
+++ b/pkg/front_end/testcases/general/nsm_covariance.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 'nsm_covariance_lib.dart';
 
 abstract class D1 implements A<int>, B {}
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.textual_outline.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.textual_outline.expect
index fb21efe..9419fb3 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'nsm_covariance_lib.dart';
 
 abstract class D1 implements A<int>, B {}
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.textual_outline_modelled.expect
index fb21efe..9419fb3 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 import 'nsm_covariance_lib.dart';
 
 abstract class D1 implements A<int>, B {}
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
index ac4c6e4..5fc1606 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.expect
@@ -1,229 +1,133 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "nsm_covariance_lib.dart" as nsm;
 
 import "org-dartlang-testcase:///nsm_covariance_lib.dart";
 
-abstract class D1 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → self::D1*
+abstract class D1 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → self::D1
     : 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 forwarding-stub method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-abstract class D2 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → self::D2*
+abstract class D2 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → self::D2
     : 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 forwarding-stub method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-class D3 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → self::D3*
+class D3 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → self::D3
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
-class D4 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → self::D4*
+class D4 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → self::D4
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as nsm;
 import "dart:core" as core;
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → nsm::A<nsm::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → nsm::A<nsm::A::T%>
     : super core::Object::•()
     ;
-  abstract method _method1(core::int* a, core::int* b, covariant-by-class nsm::A::T* c, covariant-by-class nsm::A::T* d) → void;
-  abstract method _method2({core::int* a = #C1, core::int* b = #C1, covariant-by-class nsm::A::T* c = #C1, covariant-by-class nsm::A::T* d = #C1}) → void;
-  abstract method _method3(core::int* a, covariant-by-class nsm::A::T* b) → void;
-  abstract method _method4({core::int* a = #C1, covariant-by-class nsm::A::T* b = #C1}) → void;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method _method1(core::int a, core::int b, covariant-by-class nsm::A::T% c, covariant-by-class nsm::A::T% d) → void;
+  abstract method _method2({core::int a = #C1, core::int b = #C1, covariant-by-class nsm::A::T% c = #C1, covariant-by-class nsm::A::T% d = #C1}) → void;
+  abstract method _method3(core::int a, covariant-by-class nsm::A::T% b) → void;
+  abstract method _method4({core::int a = #C1, covariant-by-class nsm::A::T% b = #C1}) → void;
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → nsm::B*
+  synthetic constructor •() → nsm::B
     : super core::Object::•()
     ;
-  abstract method _method1(core::int* x, covariant-by-declaration core::int* y, core::int* z, covariant-by-declaration core::int* w) → void;
-  abstract method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, core::int* c = #C1, covariant-by-declaration core::int* d = #C1}) → void;
-  abstract method _method3(covariant-by-declaration core::int* x, core::int* y) → void;
-  abstract method _method4({covariant-by-declaration core::int* a = #C1, core::int* b = #C1}) → void;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method _method1(core::int x, covariant-by-declaration core::int y, core::int z, covariant-by-declaration core::int w) → void;
+  abstract method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, core::int c = #C1, covariant-by-declaration core::int d = #C1}) → void;
+  abstract method _method3(covariant-by-declaration core::int x, core::int y) → void;
+  abstract method _method4({covariant-by-declaration core::int a = #C1, core::int b = #C1}) → void;
 }
-abstract class C1 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → nsm::C1*
+abstract class C1 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → nsm::C1
     : 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 forwarding-stub method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-abstract class C2 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → nsm::C2*
+abstract class C2 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → nsm::C2
     : 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 forwarding-stub method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-class C3 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → nsm::C3*
+class C3 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → nsm::C3
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
-class C4 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → nsm::C4*
+class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → nsm::C4
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.modular.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.modular.expect
index ac4c6e4..5fc1606 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.modular.expect
@@ -1,229 +1,133 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "nsm_covariance_lib.dart" as nsm;
 
 import "org-dartlang-testcase:///nsm_covariance_lib.dart";
 
-abstract class D1 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → self::D1*
+abstract class D1 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → self::D1
     : 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 forwarding-stub method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-abstract class D2 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → self::D2*
+abstract class D2 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → self::D2
     : 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 forwarding-stub method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-class D3 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → self::D3*
+class D3 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → self::D3
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
-class D4 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → self::D4*
+class D4 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → self::D4
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as nsm;
 import "dart:core" as core;
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → nsm::A<nsm::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → nsm::A<nsm::A::T%>
     : super core::Object::•()
     ;
-  abstract method _method1(core::int* a, core::int* b, covariant-by-class nsm::A::T* c, covariant-by-class nsm::A::T* d) → void;
-  abstract method _method2({core::int* a = #C1, core::int* b = #C1, covariant-by-class nsm::A::T* c = #C1, covariant-by-class nsm::A::T* d = #C1}) → void;
-  abstract method _method3(core::int* a, covariant-by-class nsm::A::T* b) → void;
-  abstract method _method4({core::int* a = #C1, covariant-by-class nsm::A::T* b = #C1}) → void;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method _method1(core::int a, core::int b, covariant-by-class nsm::A::T% c, covariant-by-class nsm::A::T% d) → void;
+  abstract method _method2({core::int a = #C1, core::int b = #C1, covariant-by-class nsm::A::T% c = #C1, covariant-by-class nsm::A::T% d = #C1}) → void;
+  abstract method _method3(core::int a, covariant-by-class nsm::A::T% b) → void;
+  abstract method _method4({core::int a = #C1, covariant-by-class nsm::A::T% b = #C1}) → void;
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → nsm::B*
+  synthetic constructor •() → nsm::B
     : super core::Object::•()
     ;
-  abstract method _method1(core::int* x, covariant-by-declaration core::int* y, core::int* z, covariant-by-declaration core::int* w) → void;
-  abstract method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, core::int* c = #C1, covariant-by-declaration core::int* d = #C1}) → void;
-  abstract method _method3(covariant-by-declaration core::int* x, core::int* y) → void;
-  abstract method _method4({covariant-by-declaration core::int* a = #C1, core::int* b = #C1}) → void;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method _method1(core::int x, covariant-by-declaration core::int y, core::int z, covariant-by-declaration core::int w) → void;
+  abstract method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, core::int c = #C1, covariant-by-declaration core::int d = #C1}) → void;
+  abstract method _method3(covariant-by-declaration core::int x, core::int y) → void;
+  abstract method _method4({covariant-by-declaration core::int a = #C1, core::int b = #C1}) → void;
 }
-abstract class C1 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → nsm::C1*
+abstract class C1 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → nsm::C1
     : 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 forwarding-stub method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-abstract class C2 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → nsm::C2*
+abstract class C2 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → nsm::C2
     : 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 forwarding-stub method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-class C3 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → nsm::C3*
+class C3 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → nsm::C3
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
-class C4 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → nsm::C4*
+class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → nsm::C4
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
index 6352cee..6ab71bf 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.outline.expect
@@ -1,262 +1,166 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "nsm_covariance_lib.dart" as nsm;
 
 import "org-dartlang-testcase:///nsm_covariance_lib.dart";
 
-abstract class D1 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → self::D1*
+abstract class D1 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → self::D1
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 forwarding-stub method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void;
-  abstract forwarding-stub method _method2({core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a, covariant-by-class core::int* b}) → void;
+  abstract forwarding-stub method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void;
+  abstract forwarding-stub method _method2({core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a, covariant-by-class core::int b}) → void;
 }
-abstract class D2 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → self::D2*
+abstract class D2 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → self::D2
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 forwarding-stub method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void;
-  abstract forwarding-stub method _method2({core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a, covariant-by-class core::int* b}) → void;
+  abstract forwarding-stub method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void;
+  abstract forwarding-stub method _method2({core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a, covariant-by-class core::int b}) → void;
 }
-class D3 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → self::D3*
+class D3 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → self::D3
     ;
   @core::override
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a, covariant-by-class core::int* b}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a, covariant-by-class core::int b}) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation) → dynamic};
 }
-class D4 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → self::D4*
+class D4 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → self::D4
     ;
   @core::override
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a, covariant-by-class core::int* b}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a, covariant-by-class core::int b}) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic
   ;
 
-library;
+library /*isNonNullableByDefault*/;
 import self as nsm;
 import "dart:core" as core;
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → nsm::A<nsm::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → nsm::A<nsm::A::T%>
     ;
-  abstract method _method1(core::int* a, core::int* b, covariant-by-class nsm::A::T* c, covariant-by-class nsm::A::T* d) → void;
-  abstract method _method2({core::int* a, core::int* b, covariant-by-class nsm::A::T* c, covariant-by-class nsm::A::T* d}) → void;
-  abstract method _method3(core::int* a, covariant-by-class nsm::A::T* b) → void;
-  abstract method _method4({core::int* a, covariant-by-class nsm::A::T* b}) → void;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method _method1(core::int a, core::int b, covariant-by-class nsm::A::T% c, covariant-by-class nsm::A::T% d) → void;
+  abstract method _method2({core::int a, core::int b, covariant-by-class nsm::A::T% c, covariant-by-class nsm::A::T% d}) → void;
+  abstract method _method3(core::int a, covariant-by-class nsm::A::T% b) → void;
+  abstract method _method4({core::int a, covariant-by-class nsm::A::T% b}) → void;
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → nsm::B*
+  synthetic constructor •() → nsm::B
     ;
-  abstract method _method1(core::int* x, covariant-by-declaration core::int* y, core::int* z, covariant-by-declaration core::int* w) → void;
-  abstract method _method2({core::int* a, covariant-by-declaration core::int* b, core::int* c, covariant-by-declaration core::int* d}) → void;
-  abstract method _method3(covariant-by-declaration core::int* x, core::int* y) → void;
-  abstract method _method4({covariant-by-declaration core::int* a, core::int* b}) → void;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method _method1(core::int x, covariant-by-declaration core::int y, core::int z, covariant-by-declaration core::int w) → void;
+  abstract method _method2({core::int a, covariant-by-declaration core::int b, core::int c, covariant-by-declaration core::int d}) → void;
+  abstract method _method3(covariant-by-declaration core::int x, core::int y) → void;
+  abstract method _method4({covariant-by-declaration core::int a, core::int b}) → void;
 }
-abstract class C1 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → nsm::C1*
+abstract class C1 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → nsm::C1
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 forwarding-stub method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void;
-  abstract forwarding-stub method _method2({core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a, covariant-by-class core::int* b}) → void;
+  abstract forwarding-stub method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void;
+  abstract forwarding-stub method _method2({core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a, covariant-by-class core::int b}) → void;
 }
-abstract class C2 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → nsm::C2*
+abstract class C2 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → nsm::C2
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::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 forwarding-stub method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void;
-  abstract forwarding-stub method _method2({core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a, covariant-by-class core::int* b}) → void;
+  abstract forwarding-stub method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void;
+  abstract forwarding-stub method _method2({core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a, covariant-by-class core::int b}) → void;
 }
-class C3 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → nsm::C3*
+class C3 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → nsm::C3
     ;
   @core::override
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a, covariant-by-class core::int* b}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b, c, d]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[a, b]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a, covariant-by-class core::int b}) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation) → dynamic};
 }
-class C4 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → nsm::C4*
+class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → nsm::C4
     ;
   @core::override
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a, covariant-by-class core::int* b}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method1, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y, z, w]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d}) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method2, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b, #c: c, #d: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method3, 0, const <core::Type*>[], core::List::unmodifiable<dynamic>(<dynamic>[x, y]), core::Map::unmodifiable<core::Symbol*, dynamic>(const <core::Symbol*, dynamic>{}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a, covariant-by-class core::int b}) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#_method4, 0, const <core::Type*>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#a: a, #b: b}))){(core::Invocation) → dynamic};
 }
 
 
 Extra constant evaluation status:
-Evaluated: StaticGet @ org-dartlang-testcase:///nsm_covariance.dart:14:4 -> InstanceConstant(const _Override{})
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#_method1)
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#_method2)
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#a)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#b)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#c)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#d)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#_method3)
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> MapConstant(const <Symbol*, dynamic>{})
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#_method4)
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <Type*>[])
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> ListConstant(const <dynamic>[])
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#a)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:13:7 -> SymbolConstant(#b)
-Evaluated: StaticGet @ org-dartlang-testcase:///nsm_covariance.dart:19:4 -> InstanceConstant(const _Override{})
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#_method1)
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> MapConstant(const <Symbol*, dynamic>{})
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#_method2)
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <Type*>[])
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <dynamic>[])
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#a)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#b)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#c)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#d)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#_method3)
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <Type*>[])
-Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> MapConstant(const <Symbol*, dynamic>{})
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#_method4)
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <Type*>[])
-Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> ListConstant(const <dynamic>[])
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#a)
-Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:18:7 -> SymbolConstant(#b)
+Evaluated: StaticGet @ org-dartlang-testcase:///nsm_covariance.dart:12:4 -> InstanceConstant(const _Override{})
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#_method1)
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> ListConstant(const <Type*>[])
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> MapConstant(const <Symbol*, dynamic>{})
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#_method2)
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> ListConstant(const <Type*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> ListConstant(const <dynamic>[])
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#a)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#b)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#c)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#d)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#_method3)
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> ListConstant(const <Type*>[])
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> MapConstant(const <Symbol*, dynamic>{})
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#_method4)
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> ListConstant(const <Type*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> ListConstant(const <dynamic>[])
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#a)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:11:7 -> SymbolConstant(#b)
+Evaluated: StaticGet @ org-dartlang-testcase:///nsm_covariance.dart:17:4 -> InstanceConstant(const _Override{})
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#_method1)
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> ListConstant(const <Type*>[])
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> MapConstant(const <Symbol*, dynamic>{})
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#_method2)
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> ListConstant(const <Type*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> ListConstant(const <dynamic>[])
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#a)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#b)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#c)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#d)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#_method3)
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> ListConstant(const <Type*>[])
+Evaluated: MapLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> MapConstant(const <Symbol*, dynamic>{})
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#_method4)
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> ListConstant(const <Type*>[])
+Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> ListConstant(const <dynamic>[])
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#a)
+Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance.dart:16:7 -> SymbolConstant(#b)
 Evaluated: StaticGet @ org-dartlang-testcase:///nsm_covariance_lib.dart:24:4 -> InstanceConstant(const _Override{})
 Evaluated: SymbolLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> SymbolConstant(#_method1)
 Evaluated: ListLiteral @ org-dartlang-testcase:///nsm_covariance_lib.dart:23:7 -> ListConstant(const <Type*>[])
diff --git a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect
index 60a0535..7e269dc 100644
--- a/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/nsm_covariance.dart.weak.transformed.expect
@@ -1,229 +1,133 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 import "nsm_covariance_lib.dart" as nsm;
 
 import "org-dartlang-testcase:///nsm_covariance_lib.dart";
 
-abstract class D1 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → self::D1*
+abstract class D1 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → self::D1
     : 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 forwarding-stub method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-abstract class D2 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → self::D2*
+abstract class D2 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → self::D2
     : 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 forwarding-stub method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-class D3 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → self::D3*
+class D3 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → self::D3
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{self::D3::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
-class D4 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → self::D4*
+class D4 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → self::D4
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C3, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C6, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C12, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{self::D4::noSuchMethod}(new core::_InvocationMirror::_withType(#C13, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 static method main() → dynamic {}
 
-library;
+library /*isNonNullableByDefault*/;
 import self as nsm;
 import "dart:core" as core;
 
-abstract class A<T extends core::Object* = dynamic> extends core::Object {
-  synthetic constructor •() → nsm::A<nsm::A::T*>*
+abstract class A<T extends core::Object? = dynamic> extends core::Object {
+  synthetic constructor •() → nsm::A<nsm::A::T%>
     : super core::Object::•()
     ;
-  abstract method _method1(core::int* a, core::int* b, covariant-by-class nsm::A::T* c, covariant-by-class nsm::A::T* d) → void;
-  abstract method _method2({core::int* a = #C1, core::int* b = #C1, covariant-by-class nsm::A::T* c = #C1, covariant-by-class nsm::A::T* d = #C1}) → void;
-  abstract method _method3(core::int* a, covariant-by-class nsm::A::T* b) → void;
-  abstract method _method4({core::int* a = #C1, covariant-by-class nsm::A::T* b = #C1}) → void;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method _method1(core::int a, core::int b, covariant-by-class nsm::A::T% c, covariant-by-class nsm::A::T% d) → void;
+  abstract method _method2({core::int a = #C1, core::int b = #C1, covariant-by-class nsm::A::T% c = #C1, covariant-by-class nsm::A::T% d = #C1}) → void;
+  abstract method _method3(core::int a, covariant-by-class nsm::A::T% b) → void;
+  abstract method _method4({core::int a = #C1, covariant-by-class nsm::A::T% b = #C1}) → void;
 }
 abstract class B extends core::Object {
-  synthetic constructor •() → nsm::B*
+  synthetic constructor •() → nsm::B
     : super core::Object::•()
     ;
-  abstract method _method1(core::int* x, covariant-by-declaration core::int* y, core::int* z, covariant-by-declaration core::int* w) → void;
-  abstract method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, core::int* c = #C1, covariant-by-declaration core::int* d = #C1}) → void;
-  abstract method _method3(covariant-by-declaration core::int* x, core::int* y) → void;
-  abstract method _method4({covariant-by-declaration core::int* a = #C1, core::int* b = #C1}) → void;
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+  abstract method _method1(core::int x, covariant-by-declaration core::int y, core::int z, covariant-by-declaration core::int w) → void;
+  abstract method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, core::int c = #C1, covariant-by-declaration core::int d = #C1}) → void;
+  abstract method _method3(covariant-by-declaration core::int x, core::int y) → void;
+  abstract method _method4({covariant-by-declaration core::int a = #C1, core::int b = #C1}) → void;
 }
-abstract class C1 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → nsm::C1*
+abstract class C1 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → nsm::C1
     : 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 forwarding-stub method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-abstract class C2 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → nsm::C2*
+abstract class C2 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → nsm::C2
     : 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 forwarding-stub method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void;
-  abstract forwarding-stub method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void;
-  abstract forwarding-stub method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void;
-  abstract forwarding-stub method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void;
+  abstract forwarding-stub method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void;
+  abstract forwarding-stub method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void;
+  abstract forwarding-stub method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void;
+  abstract forwarding-stub method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void;
 }
-class C3 extends core::Object implements nsm::A<core::int*>, nsm::B {
-  synthetic constructor •() → nsm::C3*
+class C3 extends core::Object implements nsm::A<core::int>, nsm::B {
+  synthetic constructor •() → nsm::C3
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* a, covariant-by-declaration core::int* b, covariant-by-class core::int* c, covariant-by-declaration covariant-by-class core::int* d) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* a, covariant-by-class core::int* b) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int a, covariant-by-declaration core::int b, covariant-by-class core::int c, covariant-by-declaration covariant-by-class core::int d) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(a, b, c, d)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int a, covariant-by-class core::int b) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(a, b)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{nsm::C3::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
-class C4 extends core::Object implements nsm::B, nsm::A<core::int*> {
-  synthetic constructor •() → nsm::C4*
+class C4 extends core::Object implements nsm::B, nsm::A<core::int> {
+  synthetic constructor •() → nsm::C4
     : super core::Object::•()
     ;
   @#C2
-  method noSuchMethod(core::Invocation* invocation) → dynamic
+  method noSuchMethod(core::Invocation invocation) → dynamic
     return null;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
-  no-such-method-forwarder method _method1(core::int* x, covariant-by-declaration core::int* y, covariant-by-class core::int* z, covariant-by-declaration covariant-by-class core::int* w) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method2({core::int* a = #C1, covariant-by-declaration core::int* b = #C1, covariant-by-class core::int* c = #C1, covariant-by-declaration covariant-by-class core::int* d = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method3(covariant-by-declaration core::int* x, covariant-by-class core::int* y) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation*) →* dynamic};
-  no-such-method-forwarder method _method4({covariant-by-declaration core::int* a = #C1, covariant-by-class core::int* b = #C1}) → void
-    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation*) →* dynamic};
+  no-such-method-forwarder method _method1(core::int x, covariant-by-declaration core::int y, covariant-by-class core::int z, covariant-by-declaration covariant-by-class core::int w) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C14, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal4<dynamic>(x, y, z, w)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method2({core::int a = #C1, covariant-by-declaration core::int b = #C1, covariant-by-class core::int c = #C1, covariant-by-declaration covariant-by-class core::int d = #C1}) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C15, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b, #C10: c, #C11: d}))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method3(covariant-by-declaration core::int x, covariant-by-class core::int y) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C16, 0, #C4, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal2<dynamic>(x, y)), core::Map::unmodifiable<core::Symbol*, dynamic>(#C5))){(core::Invocation) → dynamic};
+  no-such-method-forwarder method _method4({covariant-by-declaration core::int a = #C1, covariant-by-class core::int b = #C1}) → void
+    return this.{nsm::C4::noSuchMethod}(new core::_InvocationMirror::_withType(#C17, 0, #C4, #C7, core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C8: a, #C9: b}))){(core::Invocation) → dynamic};
 }
 
 constants  {
diff --git a/pkg/front_end/testcases/general/nsm_covariance_lib.dart b/pkg/front_end/testcases/general/nsm_covariance_lib.dart
index 9f7f193..1afd545 100644
--- a/pkg/front_end/testcases/general/nsm_covariance_lib.dart
+++ b/pkg/front_end/testcases/general/nsm_covariance_lib.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
-// @dart=2.9
+
 abstract class A<T> {
   void _method1(int a, int b, T c, T d);
   void _method2({int a, int b, T c, T d});
diff --git a/pkg/front_end/testcases/general/null_aware.dart b/pkg/front_end/testcases/general/null_aware.dart
index 68064d0..332c09b 100644
--- a/pkg/front_end/testcases/general/null_aware.dart
+++ b/pkg/front_end/testcases/general/null_aware.dart
@@ -1,7 +1,9 @@
 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
 // for details. 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 {
   int field;
   static int staticField;
diff --git a/pkg/front_end/testcases/general/null_aware2.dart b/pkg/front_end/testcases/general/null_aware2.dart
new file mode 100644
index 0000000..466502d
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware2.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class Foo {
+  int field;
+  static int staticField;
+}
+
+test() {
+  Foo foo = new Foo();
+  foo?.field = 5;
+  Foo?.staticField = 5;
+  foo.field ??= 5;
+  Foo.staticField ??= 5;
+  foo?.field ??= 5;
+  Foo?.staticField ??= 5;
+
+  int intValue = foo.field ?? 6;
+  num numValue = foo.field ?? 4.5;
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/null_aware2.dart.textual_outline.expect b/pkg/front_end/testcases/general/null_aware2.dart.textual_outline.expect
new file mode 100644
index 0000000..a379924
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware2.dart.textual_outline.expect
@@ -0,0 +1,7 @@
+class Foo {
+  int field;
+  static int staticField;
+}
+
+test() {}
+main() {}
diff --git a/pkg/front_end/testcases/general/null_aware2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/null_aware2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..677ce23
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware2.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@
+class Foo {
+  int field;
+  static int staticField;
+}
+
+main() {}
+test() {}
diff --git a/pkg/front_end/testcases/general/null_aware2.dart.weak.expect b/pkg/front_end/testcases/general/null_aware2.dart.weak.expect
new file mode 100644
index 0000000..6e6083c
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware2.dart.weak.expect
@@ -0,0 +1,74 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware2.dart:7:14: Error: Field 'staticField' should be initialized because its type 'int' doesn't allow null.
+//   static int staticField;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:13:3: Warning: The class 'Foo' cannot be null.
+// Try replacing '?.' with '.'
+//   Foo?.staticField = 5;
+//   ^^^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:17:3: Warning: The class 'Foo' cannot be null.
+// Try replacing '?.' with '.'
+//   Foo?.staticField ??= 5;
+//   ^^^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:12:3: Warning: Operand of null-aware operation '?.' has type 'Foo' which excludes null.
+//  - 'Foo' is from 'pkg/front_end/testcases/general/null_aware2.dart'.
+//   foo?.field = 5;
+//   ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:14:7: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
+//   foo.field ??= 5;
+//       ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:15:7: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
+//   Foo.staticField ??= 5;
+//       ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:16:3: Warning: Operand of null-aware operation '?.' has type 'Foo' which excludes null.
+//  - 'Foo' is from 'pkg/front_end/testcases/general/null_aware2.dart'.
+//   foo?.field ??= 5;
+//   ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:17:8: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
+//   Foo?.staticField ??= 5;
+//        ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:19:22: Warning: Operand of null-aware operation '??' has type 'int' which excludes null.
+//   int intValue = foo.field ?? 6;
+//                      ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:20:22: Warning: Operand of null-aware operation '??' has type 'int' which excludes null.
+//   num numValue = foo.field ?? 4.5;
+//                      ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:6:7: Error: Field 'field' should be initialized because its type 'int' doesn't allow null.
+//   int field;
+//       ^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object {
+  field core::int field = null;
+  static field core::int staticField = null;
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  self::Foo foo = new self::Foo::•();
+  let final self::Foo #t1 = foo in #t1 == null ?{core::int?} null : #t1.{self::Foo::field} = 5;
+  self::Foo::staticField = 5;
+  let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int} #t2.{self::Foo::field} = 5 : null;
+  self::Foo::staticField == null ?{core::int} self::Foo::staticField = 5 : null;
+  let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int} #t3.{self::Foo::field} = 5 : null;
+  self::Foo::staticField == null ?{core::int} self::Foo::staticField = 5 : null;
+  core::int intValue = let final core::int #t4 = foo.{self::Foo::field}{core::int} in #t4 == null ?{core::int} 6 : #t4;
+  core::num numValue = let final core::int #t5 = foo.{self::Foo::field}{core::int} in #t5 == null ?{core::num} 4.5 : #t5;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_aware2.dart.weak.modular.expect b/pkg/front_end/testcases/general/null_aware2.dart.weak.modular.expect
new file mode 100644
index 0000000..6e6083c
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware2.dart.weak.modular.expect
@@ -0,0 +1,74 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware2.dart:7:14: Error: Field 'staticField' should be initialized because its type 'int' doesn't allow null.
+//   static int staticField;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:13:3: Warning: The class 'Foo' cannot be null.
+// Try replacing '?.' with '.'
+//   Foo?.staticField = 5;
+//   ^^^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:17:3: Warning: The class 'Foo' cannot be null.
+// Try replacing '?.' with '.'
+//   Foo?.staticField ??= 5;
+//   ^^^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:12:3: Warning: Operand of null-aware operation '?.' has type 'Foo' which excludes null.
+//  - 'Foo' is from 'pkg/front_end/testcases/general/null_aware2.dart'.
+//   foo?.field = 5;
+//   ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:14:7: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
+//   foo.field ??= 5;
+//       ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:15:7: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
+//   Foo.staticField ??= 5;
+//       ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:16:3: Warning: Operand of null-aware operation '?.' has type 'Foo' which excludes null.
+//  - 'Foo' is from 'pkg/front_end/testcases/general/null_aware2.dart'.
+//   foo?.field ??= 5;
+//   ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:17:8: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
+//   Foo?.staticField ??= 5;
+//        ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:19:22: Warning: Operand of null-aware operation '??' has type 'int' which excludes null.
+//   int intValue = foo.field ?? 6;
+//                      ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:20:22: Warning: Operand of null-aware operation '??' has type 'int' which excludes null.
+//   num numValue = foo.field ?? 4.5;
+//                      ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:6:7: Error: Field 'field' should be initialized because its type 'int' doesn't allow null.
+//   int field;
+//       ^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object {
+  field core::int field = null;
+  static field core::int staticField = null;
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  self::Foo foo = new self::Foo::•();
+  let final self::Foo #t1 = foo in #t1 == null ?{core::int?} null : #t1.{self::Foo::field} = 5;
+  self::Foo::staticField = 5;
+  let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int} #t2.{self::Foo::field} = 5 : null;
+  self::Foo::staticField == null ?{core::int} self::Foo::staticField = 5 : null;
+  let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int} #t3.{self::Foo::field} = 5 : null;
+  self::Foo::staticField == null ?{core::int} self::Foo::staticField = 5 : null;
+  core::int intValue = let final core::int #t4 = foo.{self::Foo::field}{core::int} in #t4 == null ?{core::int} 6 : #t4;
+  core::num numValue = let final core::int #t5 = foo.{self::Foo::field}{core::int} in #t5 == null ?{core::num} 4.5 : #t5;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_aware2.dart.weak.outline.expect b/pkg/front_end/testcases/general/null_aware2.dart.weak.outline.expect
new file mode 100644
index 0000000..4d37bab
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware2.dart.weak.outline.expect
@@ -0,0 +1,21 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware2.dart:7:14: Error: Field 'staticField' should be initialized because its type 'int' doesn't allow null.
+//   static int staticField;
+//              ^^^^^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object {
+  field core::int field;
+  static field core::int staticField;
+  synthetic constructor •() → self::Foo
+    ;
+}
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/null_aware2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware2.dart.weak.transformed.expect
new file mode 100644
index 0000000..6e6083c
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware2.dart.weak.transformed.expect
@@ -0,0 +1,74 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/null_aware2.dart:7:14: Error: Field 'staticField' should be initialized because its type 'int' doesn't allow null.
+//   static int staticField;
+//              ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:13:3: Warning: The class 'Foo' cannot be null.
+// Try replacing '?.' with '.'
+//   Foo?.staticField = 5;
+//   ^^^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:17:3: Warning: The class 'Foo' cannot be null.
+// Try replacing '?.' with '.'
+//   Foo?.staticField ??= 5;
+//   ^^^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:12:3: Warning: Operand of null-aware operation '?.' has type 'Foo' which excludes null.
+//  - 'Foo' is from 'pkg/front_end/testcases/general/null_aware2.dart'.
+//   foo?.field = 5;
+//   ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:14:7: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
+//   foo.field ??= 5;
+//       ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:15:7: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
+//   Foo.staticField ??= 5;
+//       ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:16:3: Warning: Operand of null-aware operation '?.' has type 'Foo' which excludes null.
+//  - 'Foo' is from 'pkg/front_end/testcases/general/null_aware2.dart'.
+//   foo?.field ??= 5;
+//   ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:17:8: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
+//   Foo?.staticField ??= 5;
+//        ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:19:22: Warning: Operand of null-aware operation '??' has type 'int' which excludes null.
+//   int intValue = foo.field ?? 6;
+//                      ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:20:22: Warning: Operand of null-aware operation '??' has type 'int' which excludes null.
+//   num numValue = foo.field ?? 4.5;
+//                      ^
+//
+// pkg/front_end/testcases/general/null_aware2.dart:6:7: Error: Field 'field' should be initialized because its type 'int' doesn't allow null.
+//   int field;
+//       ^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object {
+  field core::int field = null;
+  static field core::int staticField = null;
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  self::Foo foo = new self::Foo::•();
+  let final self::Foo #t1 = foo in #t1 == null ?{core::int?} null : #t1.{self::Foo::field} = 5;
+  self::Foo::staticField = 5;
+  let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int} #t2.{self::Foo::field} = 5 : null;
+  self::Foo::staticField == null ?{core::int} self::Foo::staticField = 5 : null;
+  let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int} #t3.{self::Foo::field} = 5 : null;
+  self::Foo::staticField == null ?{core::int} self::Foo::staticField = 5 : null;
+  core::int intValue = let final core::int #t4 = foo.{self::Foo::field}{core::int} in #t4 == null ?{core::int} 6 : #t4;
+  core::num numValue = let final core::int #t5 = foo.{self::Foo::field}{core::int} in #t5 == null ?{core::num} 4.5 : #t5;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart b/pkg/front_end/testcases/general/null_aware_for_in.dart
index 73cd74f..5a93b8e 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart
+++ b/pkg/front_end/testcases/general/null_aware_for_in.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 Class {}
 
 main() {
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.textual_outline.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.textual_outline.expect
index 790b6d3..52b290c 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.textual_outline.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Class {}
 
 main() {}
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.textual_outline_modelled.expect
index 790b6d3..52b290c 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.textual_outline_modelled.expect
@@ -1,4 +1,3 @@
-// @dart = 2.9
 class Class {}
 
 main() {}
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.expect
index 46f5652..7ca9a24 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Class extends core::Object {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   dynamic o;
   if(false) {
-    for (final dynamic #t1 in (let final dynamic #t2 = o in #t2 == null ?{dynamic} null : #t2{dynamic}.iterable) as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
-      self::Class* c = #t1 as{TypeError,ForDynamic} self::Class*;
+    for (final dynamic #t1 in (let final dynamic #t2 = o in #t2 == null ?{dynamic} null : #t2{dynamic}.iterable) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
+      self::Class c = #t1 as{TypeError,ForDynamic,ForNonNullableByDefault} self::Class;
     }
   }
 }
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.modular.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.modular.expect
index 46f5652..7ca9a24 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.modular.expect
@@ -1,27 +1,17 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Class extends core::Object {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   dynamic o;
   if(false) {
-    for (final dynamic #t1 in (let final dynamic #t2 = o in #t2 == null ?{dynamic} null : #t2{dynamic}.iterable) as{TypeError,ForDynamic} core::Iterable<dynamic>*) {
-      self::Class* c = #t1 as{TypeError,ForDynamic} self::Class*;
+    for (final dynamic #t1 in (let final dynamic #t2 = o in #t2 == null ?{dynamic} null : #t2{dynamic}.iterable) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
+      self::Class c = #t1 as{TypeError,ForDynamic,ForNonNullableByDefault} self::Class;
     }
   }
 }
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.outline.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.outline.expect
index 7ea3238..3e20e89 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.outline.expect
@@ -1,20 +1,10 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Class extends core::Object {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic
   ;
diff --git a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect
index eef17d5..b8db0af 100644
--- a/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_aware_for_in.dart.weak.transformed.expect
@@ -1,31 +1,21 @@
-library;
+library /*isNonNullableByDefault*/;
 import self as self;
 import "dart:core" as core;
 
 class Class extends core::Object {
-  synthetic constructor •() → self::Class*
+  synthetic constructor •() → self::Class
     : super core::Object::•()
     ;
-  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
-  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
-  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
-  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
-  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
-  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
-  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
-  abstract member-signature method toString() → core::String*; -> core::Object::toString
-  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
-  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
 static method main() → dynamic {
   dynamic o;
   if(false) {
     {
-      core::Iterator<dynamic>* :sync-for-iterator = ((let final dynamic #t1 = o in #t1 == null ?{dynamic} null : #t1{dynamic}.iterable) as{TypeError,ForDynamic} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+      core::Iterator<dynamic> :sync-for-iterator = ((let final dynamic #t1 = o in #t1 == null ?{dynamic} null : #t1{dynamic}.iterable) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
       for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
         final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
         {
-          self::Class* c = #t2 as{TypeError,ForDynamic} self::Class*;
+          self::Class c = #t2 as{TypeError,ForDynamic,ForNonNullableByDefault} self::Class;
         }
       }
     }
diff --git a/pkg/front_end/testcases/general/null_aware_postfix.dart b/pkg/front_end/testcases/general/null_aware_postfix.dart
index 0f52747..8479a5e 100644
--- a/pkg/front_end/testcases/general/null_aware_postfix.dart
+++ b/pkg/front_end/testcases/general/null_aware_postfix.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 {
   B b;
 }
diff --git a/pkg/front_end/testcases/general/null_aware_postfix2.dart b/pkg/front_end/testcases/general/null_aware_postfix2.dart
new file mode 100644
index 0000000..0c98c37
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_postfix2.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for 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 {
+  B b;
+
+  A(this.b);
+}
+
+class B {
+  C operator +(int i) => new C();
+}
+
+class C extends B {}
+
+main() {
+  A? a;
+  a?.b++;
+  B? c = a?.b++;
+}
diff --git a/pkg/front_end/testcases/general/null_aware_postfix2.dart.textual_outline.expect b/pkg/front_end/testcases/general/null_aware_postfix2.dart.textual_outline.expect
new file mode 100644
index 0000000..bcb8bc4
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_postfix2.dart.textual_outline.expect
@@ -0,0 +1,12 @@
+class A {
+  B b;
+  A(this.b);
+}
+
+class B {
+  C operator +(int i) => new C();
+}
+
+class C extends B {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/null_aware_postfix2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/null_aware_postfix2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..a045743
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_postfix2.dart.textual_outline_modelled.expect
@@ -0,0 +1,12 @@
+class A {
+  A(this.b);
+  B b;
+}
+
+class B {
+  C operator +(int i) => new C();
+}
+
+class C extends B {}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.expect b/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.expect
new file mode 100644
index 0000000..bc5d862
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  field self::B b;
+  constructor •(self::B b) → self::A
+    : self::A::b = b, super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+  operator +(core::int i) → self::C
+    return new self::C::•();
+}
+class C extends self::B {
+  synthetic constructor •() → self::C
+    : super self::B::•()
+    ;
+}
+static method main() → dynamic {
+  self::A? a;
+  let final self::A? #t1 = a in #t1 == null ?{self::B?} null : #t1.{self::A::b} = #t1.{self::A::b}{self::B}.{self::B::+}(1){(core::int) → self::C};
+  self::B? c = let final self::A? #t2 = a in #t2 == null ?{self::B?} null : let final self::B #t3 = #t2.{self::A::b}{self::B} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1){(core::int) → self::C} in #t3;
+}
diff --git a/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.modular.expect b/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.modular.expect
new file mode 100644
index 0000000..bc5d862
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.modular.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  field self::B b;
+  constructor •(self::B b) → self::A
+    : self::A::b = b, super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+  operator +(core::int i) → self::C
+    return new self::C::•();
+}
+class C extends self::B {
+  synthetic constructor •() → self::C
+    : super self::B::•()
+    ;
+}
+static method main() → dynamic {
+  self::A? a;
+  let final self::A? #t1 = a in #t1 == null ?{self::B?} null : #t1.{self::A::b} = #t1.{self::A::b}{self::B}.{self::B::+}(1){(core::int) → self::C};
+  self::B? c = let final self::A? #t2 = a in #t2 == null ?{self::B?} null : let final self::B #t3 = #t2.{self::A::b}{self::B} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1){(core::int) → self::C} in #t3;
+}
diff --git a/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.outline.expect b/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.outline.expect
new file mode 100644
index 0000000..5e14f93
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.outline.expect
@@ -0,0 +1,21 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  field self::B b;
+  constructor •(self::B b) → self::A
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    ;
+  operator +(core::int i) → self::C
+    ;
+}
+class C extends self::B {
+  synthetic constructor •() → self::C
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.transformed.expect
new file mode 100644
index 0000000..bc5d862
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_postfix2.dart.weak.transformed.expect
@@ -0,0 +1,27 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  field self::B b;
+  constructor •(self::B b) → self::A
+    : self::A::b = b, super core::Object::•()
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+  operator +(core::int i) → self::C
+    return new self::C::•();
+}
+class C extends self::B {
+  synthetic constructor •() → self::C
+    : super self::B::•()
+    ;
+}
+static method main() → dynamic {
+  self::A? a;
+  let final self::A? #t1 = a in #t1 == null ?{self::B?} null : #t1.{self::A::b} = #t1.{self::A::b}{self::B}.{self::B::+}(1){(core::int) → self::C};
+  self::B? c = let final self::A? #t2 = a in #t2 == null ?{self::B?} null : let final self::B #t3 = #t2.{self::A::b}{self::B} in let final void #t4 = #t2.{self::A::b} = #t3.{self::B::+}(1){(core::int) → self::C} in #t3;
+}
diff --git a/pkg/front_end/testcases/general/null_aware_spread.dart b/pkg/front_end/testcases/general/null_aware_spread.dart
index 09070318..d6ec296 100644
--- a/pkg/front_end/testcases/general/null_aware_spread.dart
+++ b/pkg/front_end/testcases/general/null_aware_spread.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
+
 nullAwareListSpread(List<String> list) {
   list = ['foo', ...?list];
 }
diff --git a/pkg/front_end/testcases/general/null_aware_spread2.dart b/pkg/front_end/testcases/general/null_aware_spread2.dart
new file mode 100644
index 0000000..10c4426
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_spread2.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+nullAwareListSpread(List<String>? list) {
+  list = ['foo', ...?list];
+}
+
+nullAwareSetSpread(Set<String>? set) {
+  set = {'foo', ...?set};
+}
+
+nullAwareMapSpread(Map<int, String>? map) {
+  map = {0: 'foo', ...?map};
+}
+
+main() {
+  nullAwareListSpread(null);
+  nullAwareSetSpread(null);
+  nullAwareMapSpread(null);
+}
diff --git a/pkg/front_end/testcases/general/null_aware_spread2.dart.textual_outline.expect b/pkg/front_end/testcases/general/null_aware_spread2.dart.textual_outline.expect
new file mode 100644
index 0000000..b0017a7
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_spread2.dart.textual_outline.expect
@@ -0,0 +1,4 @@
+nullAwareListSpread(List<String>? list) {}
+nullAwareSetSpread(Set<String>? set) {}
+nullAwareMapSpread(Map<int, String>? map) {}
+main() {}
diff --git a/pkg/front_end/testcases/general/null_aware_spread2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/null_aware_spread2.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..618d2d1
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_spread2.dart.textual_outline_modelled.expect
@@ -0,0 +1,4 @@
+main() {}
+nullAwareListSpread(List<String>? list) {}
+nullAwareMapSpread(Map<int, String>? map) {}
+nullAwareSetSpread(Set<String>? set) {}
diff --git a/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.expect b/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.expect
new file mode 100644
index 0000000..0eaed6c
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.expect
@@ -0,0 +1,37 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+import "dart:collection" as col;
+
+static method nullAwareListSpread(core::List<core::String>? list) → dynamic {
+  list = block {
+    final core::List<core::String> #t1 = <core::String>["foo"];
+    final core::Iterable<core::String>? #t2 = list;
+    if(!(#t2 == null))
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+  } =>#t1;
+}
+static method nullAwareSetSpread(core::Set<core::String>? set) → dynamic {
+  set = block {
+    final core::Set<core::String> #t3 = col::LinkedHashSet::•<core::String>();
+    #t3.{core::Set::add}{Invariant}("foo"){(core::String) → core::bool};
+    final core::Iterable<core::String>? #t4 = set;
+    if(!(#t4 == null))
+      #t3.{core::Set::addAll}{Invariant}(#t4{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+  } =>#t3;
+}
+static method nullAwareMapSpread(core::Map<core::int, core::String>? map) → dynamic {
+  map = block {
+    final core::Map<core::int, core::String> #t5 = <core::int, core::String>{};
+    #t5.{core::Map::[]=}{Invariant}(0, "foo"){(core::int, core::String) → void};
+    final core::Map<core::int, core::String>? #t6 = map;
+    if(!(#t6 == null))
+      for (final core::MapEntry<core::int, core::String> #t7 in #t6{core::Map<core::int, core::String>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::String>>})
+        #t5.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}{core::int}, #t7.{core::MapEntry::value}{core::String}){(core::int, core::String) → void};
+  } =>#t5;
+}
+static method main() → dynamic {
+  self::nullAwareListSpread(null);
+  self::nullAwareSetSpread(null);
+  self::nullAwareMapSpread(null);
+}
diff --git a/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.modular.expect b/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.modular.expect
new file mode 100644
index 0000000..0eaed6c
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.modular.expect
@@ -0,0 +1,37 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+import "dart:collection" as col;
+
+static method nullAwareListSpread(core::List<core::String>? list) → dynamic {
+  list = block {
+    final core::List<core::String> #t1 = <core::String>["foo"];
+    final core::Iterable<core::String>? #t2 = list;
+    if(!(#t2 == null))
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+  } =>#t1;
+}
+static method nullAwareSetSpread(core::Set<core::String>? set) → dynamic {
+  set = block {
+    final core::Set<core::String> #t3 = col::LinkedHashSet::•<core::String>();
+    #t3.{core::Set::add}{Invariant}("foo"){(core::String) → core::bool};
+    final core::Iterable<core::String>? #t4 = set;
+    if(!(#t4 == null))
+      #t3.{core::Set::addAll}{Invariant}(#t4{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+  } =>#t3;
+}
+static method nullAwareMapSpread(core::Map<core::int, core::String>? map) → dynamic {
+  map = block {
+    final core::Map<core::int, core::String> #t5 = <core::int, core::String>{};
+    #t5.{core::Map::[]=}{Invariant}(0, "foo"){(core::int, core::String) → void};
+    final core::Map<core::int, core::String>? #t6 = map;
+    if(!(#t6 == null))
+      for (final core::MapEntry<core::int, core::String> #t7 in #t6{core::Map<core::int, core::String>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::String>>})
+        #t5.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}{core::int}, #t7.{core::MapEntry::value}{core::String}){(core::int, core::String) → void};
+  } =>#t5;
+}
+static method main() → dynamic {
+  self::nullAwareListSpread(null);
+  self::nullAwareSetSpread(null);
+  self::nullAwareMapSpread(null);
+}
diff --git a/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.outline.expect b/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.outline.expect
new file mode 100644
index 0000000..2e3c9c5
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.outline.expect
@@ -0,0 +1,12 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+static method nullAwareListSpread(core::List<core::String>? list) → dynamic
+  ;
+static method nullAwareSetSpread(core::Set<core::String>? set) → dynamic
+  ;
+static method nullAwareMapSpread(core::Map<core::int, core::String>? map) → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.transformed.expect
new file mode 100644
index 0000000..57a3fe5
--- /dev/null
+++ b/pkg/front_end/testcases/general/null_aware_spread2.dart.weak.transformed.expect
@@ -0,0 +1,41 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+import "dart:collection" as col;
+
+static method nullAwareListSpread(core::List<core::String>? list) → dynamic {
+  list = block {
+    final core::List<core::String> #t1 = core::_GrowableList::_literal1<core::String>("foo");
+    final core::Iterable<core::String>? #t2 = list;
+    if(!(#t2 == null))
+      #t1.{core::List::addAll}{Invariant}(#t2{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+  } =>#t1;
+}
+static method nullAwareSetSpread(core::Set<core::String>? set) → dynamic {
+  set = block {
+    final core::Set<core::String> #t3 = new col::_CompactLinkedHashSet::•<core::String>();
+    #t3.{core::Set::add}{Invariant}("foo"){(core::String) → core::bool};
+    final core::Iterable<core::String>? #t4 = set;
+    if(!(#t4 == null))
+      #t3.{core::Set::addAll}{Invariant}(#t4{core::Iterable<core::String>}){(core::Iterable<core::String>) → void};
+  } =>#t3;
+}
+static method nullAwareMapSpread(core::Map<core::int, core::String>? map) → dynamic {
+  map = block {
+    final core::Map<core::int, core::String> #t5 = <core::int, core::String>{};
+    #t5.{core::Map::[]=}{Invariant}(0, "foo"){(core::int, core::String) → void};
+    final core::Map<core::int, core::String>? #t6 = map;
+    if(!(#t6 == null)) {
+      core::Iterator<core::MapEntry<core::int, core::String>> :sync-for-iterator = #t6{core::Map<core::int, core::String>}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::String>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::String>>};
+      for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+        final core::MapEntry<core::int, core::String> #t7 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::String>};
+        #t5.{core::Map::[]=}{Invariant}(#t7.{core::MapEntry::key}{core::int}, #t7.{core::MapEntry::value}{core::String}){(core::int, core::String) → void};
+      }
+    }
+  } =>#t5;
+}
+static method main() → dynamic {
+  self::nullAwareListSpread(null);
+  self::nullAwareSetSpread(null);
+  self::nullAwareMapSpread(null);
+}
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart
index e766ae0..6b48e73 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment.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
+
 int? i;
 
 main() {}
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.expect
index 9f0d253..b2edbb8 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.expect
@@ -2,11 +2,11 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:5:4: Error: Null safety features are disabled for this library.
+// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:7:4: Error: Null safety features are disabled for this library.
 // Try removing the `@dart=` annotation or setting the language version to 2.12 or higher.
 // int? i;
 //    ^
-// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:4:1: Context: This is the annotation that opts out this library from null safety features.
+// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
 // // @dart=2.9
 // ^^^^^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.modular.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.modular.expect
index 9f0d253..b2edbb8 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.modular.expect
@@ -2,11 +2,11 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:5:4: Error: Null safety features are disabled for this library.
+// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:7:4: Error: Null safety features are disabled for this library.
 // Try removing the `@dart=` annotation or setting the language version to 2.12 or higher.
 // int? i;
 //    ^
-// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:4:1: Context: This is the annotation that opts out this library from null safety features.
+// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
 // // @dart=2.9
 // ^^^^^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.outline.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.outline.expect
index f60a7c1..15ded13 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.outline.expect
@@ -2,11 +2,11 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:5:4: Error: Null safety features are disabled for this library.
+// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:7:4: Error: Null safety features are disabled for this library.
 // Try removing the `@dart=` annotation or setting the language version to 2.12 or higher.
 // int? i;
 //    ^
-// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:4:1: Context: This is the annotation that opts out this library from null safety features.
+// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
 // // @dart=2.9
 // ^^^^^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.transformed.expect
index 9f0d253..b2edbb8 100644
--- a/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/null_safety_invalid_experiment.dart.weak.transformed.expect
@@ -2,11 +2,11 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:5:4: Error: Null safety features are disabled for this library.
+// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:7:4: Error: Null safety features are disabled for this library.
 // Try removing the `@dart=` annotation or setting the language version to 2.12 or higher.
 // int? i;
 //    ^
-// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:4:1: Context: This is the annotation that opts out this library from null safety features.
+// pkg/front_end/testcases/general/null_safety_invalid_experiment.dart:5:1: Context: This is the annotation that opts out this library from null safety features.
 // // @dart=2.9
 // ^^^^^^^^^^^^
 //
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index 6b47db9..33aebe0 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -91,7 +91,6 @@
 general/issue43363: FormatterCrash
 general/issue45490: FormatterCrash
 general/issue45700.crash: FormatterCrash
-general/issue47495: FormatterCrash
 general/issue47728_2: FormatterCrash
 general/issue47728_3: FormatterCrash
 general/issue47922: FormatterCrash
@@ -100,7 +99,9 @@
 general/issue_46886: FormatterCrash
 general/macro_class: FormatterCrash
 general/many_errors: FormatterCrash
+general/many_errors2: FormatterCrash
 general/missing_prefix_name: FormatterCrash
+general/mixin_inherited_setter_for_mixed_in_field2: FormatterCrash
 general/new_as_selector: FormatterCrash
 general/null_aware_super: FormatterCrash
 general/null_safety_invalid_experiment: FormatterCrash
diff --git a/pkg/vm/test/common_test_utils.dart b/pkg/vm/test/common_test_utils.dart
index ed5b3f5..b657777 100644
--- a/pkg/vm/test/common_test_utils.dart
+++ b/pkg/vm/test/common_test_utils.dart
@@ -89,14 +89,25 @@
   }
 }
 
-String kernelLibraryToString(Library library) {
+/// Returns a human-readable string representation of [library].
+///
+/// If [removeSelectorIds] is provided, selector ids above 99 are removed.
+/// Extra libraries apart from the main library are passed to the front-end as
+/// additional dills, which places them last in the library list, causing them
+/// to have very high (and often changing) selector IDs.
+String kernelLibraryToString(Library library, {bool removeSelectorIds: false}) {
   final StringBuffer buffer = new StringBuffer();
   final printer = new Printer(buffer, showMetadata: true);
   printer.writeLibraryFile(library);
   printer.writeConstantTable(library.enclosingComponent!);
-  return buffer
-      .toString()
-      .replaceAll(library.importUri.toString(), library.name!);
+  String result =
+      buffer.toString().replaceAll(library.importUri.toString(), library.name!);
+  if (removeSelectorIds) {
+    result = result
+        .replaceAll(RegExp(r',methodOrSetterSelectorId:\d{3,}'), '')
+        .replaceAll(RegExp(r',getterSelectorId:\d{3,}'), '');
+  }
+  return result;
 }
 
 String kernelComponentToString(Component component) {
diff --git a/pkg/vm/test/transformations/type_flow/transformer_test.dart b/pkg/vm/test/transformations/type_flow/transformer_test.dart
index a719a03..0dc138f 100644
--- a/pkg/vm/test/transformations/type_flow/transformer_test.dart
+++ b/pkg/vm/test/transformations/type_flow/transformer_test.dart
@@ -56,7 +56,7 @@
   if (dependencies.isNotEmpty) {
     for (var lib in dependencies) {
       lib.name ??= lib.importUri.pathSegments.last;
-      actual += kernelLibraryToString(lib);
+      actual += kernelLibraryToString(lib, removeSelectorIds: true);
     }
     // Remove library paths.
     actual = actual.replaceAll(pkgVmDir.toString(), 'file:pkg/vm/');
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
index bdf5f22..46e2140 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/enum_from_lib_used_as_type.dart.expect
@@ -22,6 +22,6 @@
   synthetic constructor •() → self::Class
     : super core::Object::•()
     ;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3333,getterSelectorId:3334]  method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false]  method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::Enum e) → core::int
     return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
index 0a305ef..3938e71 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/tree_shake_enum_from_lib.dart.expect
@@ -51,6 +51,6 @@
   synthetic constructor •() → self::ConstClass
     : super core::Object::•()
     ;
-[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3337,getterSelectorId:3338]  method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
+[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false]  method method([@vm.inferred-type.metadata=dart.core::Null? (value: null)] self::ConstEnum e) → core::int
     return [@vm.inferred-type.metadata=!] e.{core::_Enum::index}{core::int};
 }
diff --git a/runtime/vm/compiler/stub_code_compiler_riscv.cc b/runtime/vm/compiler/stub_code_compiler_riscv.cc
index f4a17da..b8096b3 100644
--- a/runtime/vm/compiler/stub_code_compiler_riscv.cc
+++ b/runtime/vm/compiler/stub_code_compiler_riscv.cc
@@ -1396,7 +1396,7 @@
 
   // Restore the frame pointer and C stack pointer and return.
   __ LeaveFrame();
-  __ NOT_IN_PRODUCT(__ Drop(1));  // Drop profiler marker.
+  NOT_IN_PRODUCT(__ Drop(1));  // Drop profiler marker.
   __ ret();
 }
 
diff --git a/tools/OWNERS b/tools/OWNERS
index bc4a8dd..fefa34e 100644
--- a/tools/OWNERS
+++ b/tools/OWNERS
@@ -6,5 +6,6 @@
 per-file OWNERS_FOUNDATION=file:OWNERS_FOUNDATION
 per-file OWNERS_INFRA=file:OWNERS_INFRA
 per-file OWNERS_PRODUCT=file:OWNERS_PRODUCT
+per-file OWNERS_PUB=file:OWNERS_PUB
 per-file OWNERS_VM=file:OWNERS_VM
 per-file OWNERS_WEB=file:OWNERS_WEB
diff --git a/tools/OWNERS_ENG b/tools/OWNERS_ENG
index 6857872..ef746ec 100644
--- a/tools/OWNERS_ENG
+++ b/tools/OWNERS_ENG
@@ -3,5 +3,6 @@
 file:OWNERS_CFE
 file:OWNERS_FOUNDATION
 file:OWNERS_INFRA
+file:OWNERS_PUB
 file:OWNERS_VM
 file:OWNERS_WEB
diff --git a/tools/OWNERS_PUB b/tools/OWNERS_PUB
new file mode 100644
index 0000000..9242dc8
--- /dev/null
+++ b/tools/OWNERS_PUB
@@ -0,0 +1,3 @@
+jonasfj@google.com
+sigurdm@google.com
+zarah@google.com
diff --git a/tools/VERSION b/tools/VERSION
index d7c7f7b..33ae06c 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 183
+PRERELEASE 184
 PRERELEASE_PATCH 0
\ No newline at end of file