diff --git a/CHANGELOG.md b/CHANGELOG.md
index aef3ad5..cbd5912 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,23 @@
+## 2.19.0
+
+### Language
+
+- **Breaking Change** [#48167](https://github.com/dart-lang/sdk/issues/48167):
+  Mixin of classes that don't extend `Object` is no longer supported:
+  ```dart
+  class Base {}
+  class Mixin extends Base {}
+  class C extends Base with Mixin {}
+  ```
+  This should instead be written using a mixin declaration of `Mixin`:
+  ```dart
+  class Base {}
+  mixin Mixin on Base {}
+  class C extends Base with Mixin {}
+  ```
+  This feature has not been supported in most compilation targets for some
+  time but is now completely removed.
+
 ## 2.18.0
 
 ### Language
diff --git a/DEPS b/DEPS
index 1125cc8..f159d22 100644
--- a/DEPS
+++ b/DEPS
@@ -319,7 +319,7 @@
       Var("dart_git") + "crypto.git" + "@" + Var("crypto_rev"),
   Var("dart_root") + "/third_party/pkg/csslib":
       Var("dart_git") + "csslib.git" + "@" + Var("csslib_rev"),
-  Var("dart_root") + "/third_party/pkg_tested/dart_style":
+  Var("dart_root") + "/third_party/pkg/dart_style":
       Var("dart_git") + "dart_style.git" + "@" + Var("dart_style_rev"),
   Var("dart_root") + "/third_party/pkg/dartdoc":
       Var("dart_git") + "dartdoc.git" + "@" + Var("dartdoc_rev"),
@@ -361,7 +361,7 @@
       Var("dart_git") + "mockito.git" + "@" + Var("mockito_rev"),
   Var("dart_root") + "/third_party/pkg/oauth2":
       Var("dart_git") + "oauth2.git" + "@" + Var("oauth2_rev"),
-  Var("dart_root") + "/third_party/pkg_tested/package_config":
+  Var("dart_root") + "/third_party/pkg/package_config":
       Var("dart_git") + "package_config.git" +
       "@" + Var("package_config_rev"),
   Var("dart_root") + "/third_party/pkg/path":
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index a54317b..42e8fa8 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -7841,6 +7841,31 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<
     Message Function(
+        String
+            name)> templateMixinInheritsFromNotObject = const Template<
+        Message Function(String name)>(
+    problemMessageTemplate:
+        r"""The class '#name' can't be used as a mixin because it extends a class other than 'Object'.""",
+    withArguments: _withArgumentsMixinInheritsFromNotObject);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name)> codeMixinInheritsFromNotObject =
+    const Code<Message Function(String name)>("MixinInheritsFromNotObject",
+        analyzerCodes: <String>["MIXIN_INHERITS_FROM_NOT_OBJECT"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsMixinInheritsFromNotObject(String name) {
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  return new Message(codeMixinInheritsFromNotObject,
+      problemMessage:
+          """The class '${name}' can't be used as a mixin because it extends a class other than 'Object'.""",
+      arguments: {'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
         String string,
         String
             string2)> templateModifierOutOfOrder = const Template<
diff --git a/pkg/analysis_server/lib/src/analytics/analytics_manager.dart b/pkg/analysis_server/lib/src/analytics/analytics_manager.dart
index 3448b7b..ab1a1486 100644
--- a/pkg/analysis_server/lib/src/analytics/analytics_manager.dart
+++ b/pkg/analysis_server/lib/src/analytics/analytics_manager.dart
@@ -24,12 +24,19 @@
   /// Record that the set of plugins known to the [pluginManager] has changed.
   void changedPlugins(PluginManager pluginManager);
 
+  /// Record the number of [added] folders and [removed] folders.
+  void changedWorkspaceFolders(
+      {required List<String> added, required List<String> removed});
+
   /// Record that the given [notification] was received and has been handled.
   void handledNotificationMessage(
       {required NotificationMessage notification,
       required DateTime startTime,
       required DateTime endTime}) {}
 
+  /// Record the number of [openWorkspacePaths].
+  void initialized({required List<String> openWorkspacePaths});
+
   /// Record that the given [response] was sent to the client.
   void sentResponse({required Response response});
 
diff --git a/pkg/analysis_server/lib/src/analytics/google_analytics_manager.dart b/pkg/analysis_server/lib/src/analytics/google_analytics_manager.dart
index f294c37..092440d 100644
--- a/pkg/analysis_server/lib/src/analytics/google_analytics_manager.dart
+++ b/pkg/analysis_server/lib/src/analytics/google_analytics_manager.dart
@@ -45,6 +45,15 @@
   }
 
   @override
+  void changedWorkspaceFolders(
+      {required List<String> added, required List<String> removed}) {
+    var requestData =
+        _getRequestData(Method.workspace_didChangeWorkspaceFolders.toString());
+    requestData.addValue('added', added.length);
+    requestData.addValue('removed', removed.length);
+  }
+
+  @override
   void handledNotificationMessage(
       {required NotificationMessage notification,
       required DateTime startTime,
@@ -62,6 +71,12 @@
   }
 
   @override
+  void initialized({required List<String> openWorkspacePaths}) {
+    var requestData = _getRequestData(Method.initialized.toString());
+    requestData.addValue('openWorkspacePaths', openWorkspacePaths.length);
+  }
+
+  @override
   void sentResponse({required Response response}) {
     var sendTime = DateTime.now();
     _recordResponseData(response.id, sendTime);
@@ -95,9 +110,7 @@
 
   @override
   void startedGetRefactoring(EditGetRefactoringParams params) {
-    var requestData = _completedRequests.putIfAbsent(
-        EDIT_REQUEST_GET_REFACTORING,
-        () => _RequestData(EDIT_REQUEST_GET_REFACTORING));
+    var requestData = _getRequestData(EDIT_REQUEST_GET_REFACTORING);
     requestData.addEnumValue(
         EDIT_REQUEST_GET_REFACTORING_KIND, params.kind.name);
   }
@@ -118,9 +131,7 @@
 
   @override
   void startedSetAnalysisRoots(AnalysisSetAnalysisRootsParams params) {
-    var requestData = _completedRequests.putIfAbsent(
-        ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS,
-        () => _RequestData(ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS));
+    var requestData = _getRequestData(ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS);
     requestData.addValue(
         ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS_INCLUDED, params.included.length);
     requestData.addValue(
@@ -129,9 +140,7 @@
 
   @override
   void startedSetPriorityFiles(AnalysisSetPriorityFilesParams params) {
-    var requestData = _completedRequests.putIfAbsent(
-        ANALYSIS_REQUEST_SET_PRIORITY_FILES,
-        () => _RequestData(ANALYSIS_REQUEST_SET_PRIORITY_FILES));
+    var requestData = _getRequestData(ANALYSIS_REQUEST_SET_PRIORITY_FILES);
     requestData.addValue(
         ANALYSIS_REQUEST_SET_PRIORITY_FILES_FILES, params.files.length);
   }
@@ -151,6 +160,11 @@
         sdkVersion: sdkVersion);
   }
 
+  /// Return the request data for requests that have the given [method].
+  _RequestData _getRequestData(String method) {
+    return _completedRequests.putIfAbsent(method, () => _RequestData(method));
+  }
+
   /// Record that the request with the given [id] was responded to at the given
   /// [sendTime].
   void _recordResponseData(String id, DateTime sendTime) {
@@ -163,8 +177,7 @@
     var clientRequestTime = data.clientRequestTime;
     var startTime = data.startTime.millisecondsSinceEpoch;
 
-    var requestData =
-        _completedRequests.putIfAbsent(method, () => _RequestData(method));
+    var requestData = _getRequestData(method);
 
     if (clientRequestTime != null) {
       var latencyTime = startTime - clientRequestTime;
diff --git a/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart b/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart
index 3302a1e..bcf2759 100644
--- a/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart
+++ b/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart
@@ -15,12 +15,19 @@
   void changedPlugins(PluginManager pluginManager) {}
 
   @override
+  void changedWorkspaceFolders(
+      {required List<String> added, required List<String> removed}) {}
+
+  @override
   void handledNotificationMessage(
       {required NotificationMessage notification,
       required DateTime startTime,
       required DateTime endTime}) {}
 
   @override
+  void initialized({required List<String> openWorkspacePaths}) {}
+
+  @override
   void sentResponse({required Response response}) {}
 
   @override
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_change_workspace_folders.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_change_workspace_folders.dart
index 590e49d..d1dc6f9 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_change_workspace_folders.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_change_workspace_folders.dart
@@ -27,15 +27,20 @@
       return success(null);
     }
 
-    final added =
-        params.event.added.map((wf) => Uri.parse(wf.uri).toFilePath()).toList();
+    final added = _convertWorkspaceFolders(params.event.added);
+    final removed = _convertWorkspaceFolders(params.event.removed);
 
-    final removed = params.event.removed
-        .map((wf) => Uri.parse(wf.uri).toFilePath())
-        .toList();
+    server.analyticsManager
+        .changedWorkspaceFolders(added: added, removed: removed);
 
     await server.updateWorkspaceFolders(added, removed);
 
     return success(null);
   }
+
+  /// Return the result of converting the list of workspace [folders] to file
+  /// paths.
+  List<String> _convertWorkspaceFolders(List<WorkspaceFolder> folders) {
+    return folders.map((wf) => Uri.parse(wf.uri).toFilePath()).toList();
+  }
 }
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_initialized.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_initialized.dart
index e728d79..a0a34fa 100644
--- a/pkg/analysis_server/lib/src/lsp/handlers/handler_initialized.dart
+++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_initialized.dart
@@ -26,6 +26,8 @@
       server,
     );
 
+    server.analyticsManager.initialized(openWorkspacePaths: openWorkspacePaths);
+
     if (server.initializationOptions.onlyAnalyzeProjectsWithOpenFiles) {
       await server.fetchClientConfigurationAndPerformDynamicRegistration();
     } else {
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart
index d690c0b..a8d459b 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart
@@ -27,6 +27,11 @@
   void apply(DartFileEditBuilder builder, DataDrivenFix fix, _Data data) {
     var referenceRange = data.referenceRange;
     builder.addSimpleReplacement(referenceRange, _referenceTo(newElement));
+    var libraryUris = newElement.libraryUris;
+    if (libraryUris.isEmpty) return;
+    if (!libraryUris.any((uri) => builder.importsLibrary(uri))) {
+      builder.importLibraryElement(libraryUris.first);
+    }
   }
 
   @override
diff --git a/pkg/analysis_server/test/src/analytics/google_analytics_manager_test.dart b/pkg/analysis_server/test/src/analytics/google_analytics_manager_test.dart
index ec74340..905c990 100644
--- a/pkg/analysis_server/test/src/analytics/google_analytics_manager_test.dart
+++ b/pkg/analysis_server/test/src/analytics/google_analytics_manager_test.dart
@@ -63,6 +63,35 @@
     ]);
   }
 
+  void test_server_request_analysisDidChangeWorkspaceFolders() {
+    _defaultStartup();
+    var params = DidChangeWorkspaceFoldersParams(
+        event: WorkspaceFoldersChangeEvent(added: [], removed: []));
+    var request = RequestMessage(
+        jsonrpc: '',
+        id: Either2.t1(1),
+        method: Method.workspace_didChangeWorkspaceFolders,
+        params: params.toJson());
+    manager.startedRequestMessage(request: request, startTime: _now());
+    manager
+        .changedWorkspaceFolders(added: ['a', 'b', 'c'], removed: ['d', 'e']);
+    manager.sentResponseMessage(
+        response: ResponseMessage(jsonrpc: '', id: Either2.t1(1)));
+    manager.shutdown();
+    analytics.assertEvents([
+      _ExpectedEvent.session(),
+      _ExpectedEvent.request(parameters: {
+        'latency': _IsPercentiles(),
+        'method': Method.workspace_didChangeWorkspaceFolders.toString(),
+        'duration': _IsPercentiles(),
+        'added':
+            '{"count":1,"percentiles":[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]}',
+        'removed':
+            '{"count":1,"percentiles":[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]}',
+      }),
+    ]);
+  }
+
   void test_server_request_analysisSetAnalysisRoots() {
     _defaultStartup();
     var params = AnalysisSetAnalysisRootsParams(['a', 'b', 'c'], ['d', 'e']);
@@ -127,6 +156,31 @@
     ]);
   }
 
+  void test_server_request_initialized() {
+    _defaultStartup();
+    var params = InitializedParams();
+    var request = RequestMessage(
+        jsonrpc: '',
+        id: Either2.t1(1),
+        method: Method.initialized,
+        params: params.toJson());
+    manager.startedRequestMessage(request: request, startTime: _now());
+    manager.initialized(openWorkspacePaths: ['a', 'b', 'c']);
+    manager.sentResponseMessage(
+        response: ResponseMessage(jsonrpc: '', id: Either2.t1(1)));
+    manager.shutdown();
+    analytics.assertEvents([
+      _ExpectedEvent.session(),
+      _ExpectedEvent.request(parameters: {
+        'latency': _IsPercentiles(),
+        'method': Method.initialized.toString(),
+        'duration': _IsPercentiles(),
+        'openWorkspacePaths':
+            '{"count":1,"percentiles":[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]}',
+      }),
+    ]);
+  }
+
   void test_server_request_noAdditional() {
     _defaultStartup();
     manager.startedRequest(
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/replaced_by_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/replaced_by_test.dart
index a7b70a4..b4643f2 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/replaced_by_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/replaced_by_test.dart
@@ -14,6 +14,7 @@
 void main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ReplacedByTest);
+    defineReflectiveTests(ReplacedByUriSemanticsTest);
   });
 }
 
@@ -862,6 +863,83 @@
   }
 }
 
+@reflectiveTest
+class ReplacedByUriSemanticsTest extends DataDrivenFixProcessorTest {
+  Future<void> test_new_element_uris_multiple() async {
+    setPackageContent('');
+    newFile('$workspaceRootPath/p/lib/expect.dart', '''
+void expect(actual, expected) {}
+''');
+    newFile('$workspaceRootPath/p/lib/export.dart', '''
+export 'expect.dart';
+''');
+    addPackageDataFile('''
+version: 1
+transforms:
+  - title:  'Replace expect'
+    date: 2022-05-12
+    bulkApply: false
+    element:
+      uris: ['$importUri']
+      function: 'expect'
+    changes:
+      - kind: 'replacedBy'
+        newElement:
+          uris: ['package:p/expect.dart', 'package:p/export.dart']
+          function: 'expect'
+''');
+    await resolveTestCode('''
+import '$importUri';
+
+f() {
+  expect(true, true);
+}
+''');
+    await assertHasFix('''
+import 'package:p/expect.dart';
+import '$importUri';
+
+f() {
+  expect(true, true);
+}
+''', errorFilter: ignoreUnusedImport);
+  }
+
+  Future<void> test_new_element_uris_single() async {
+    setPackageContent('');
+    addPackageDataFile('''
+version: 1
+transforms:
+  - title:  'Replace expect'
+    date: 2022-05-12
+    bulkApply: false
+    element:
+      uris: ['$importUri']
+      function: 'expect'
+    changes:
+      - kind: 'replacedBy'
+        newElement:
+          uris: ['package:matcher/expect.dart']
+          function: 'expect'
+''');
+    await resolveTestCode('''
+import '$importUri';
+
+main() {
+  expect(true, true);
+}
+''');
+    await assertHasFix('''
+import 'package:matcher/expect.dart';
+import '$importUri';
+
+main() {
+  expect(true, true);
+}
+''', errorFilter: ignoreUnusedImport);
+  }
+}
+
 class _Element {
   final ElementKind kind;
   final List<String> components;
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/test_all.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/test_all.dart
index 544f27c..f9623c1 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/test_all.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/test_all.dart
@@ -17,6 +17,7 @@
 import 'rename_test.dart' as rename;
 import 'replaced_by_test.dart' as replaced_by;
 import 'sdk_fix_test.dart' as sdk_fix;
+import 'test_use_case_test.dart' as test_use_case;
 import 'transform_override_set_parser_test.dart'
     as transform_override_set_parser;
 import 'transform_set_manager_test.dart' as transform_set_manager;
@@ -37,6 +38,7 @@
     rename.main();
     replaced_by.main();
     sdk_fix.main();
+    test_use_case.main();
     transform_override_set_parser.main();
     transform_set_manager.main();
     transform_set_parser.main();
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/test_use_case_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/test_use_case_test.dart
new file mode 100644
index 0000000..aa0386b
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/test_use_case_test.dart
@@ -0,0 +1,102 @@
+// 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.
+
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../fix_processor.dart';
+import 'data_driven_test_support.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(TestUseCaseTest);
+  });
+}
+
+@reflectiveTest
+class TestUseCaseTest extends DataDrivenFixProcessorTest {
+  @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/23067')
+  Future<void> test_expect_export_deprecated() async {
+    newFile('$workspaceRootPath/p/lib/lib.dart', '''
+library p;
+@deprecated
+export 'package:matcher/expect.dart' show expect;
+''');
+    newFile('$workspaceRootPath/matcher/lib/expect.dart', '''
+void expect(actual, matcher) {}
+''');
+
+    writeTestPackageConfig(
+      config: PackageConfigFileBuilder()
+        ..add(name: 'matcher', rootPath: '$workspaceRootPath/matcher')
+        ..add(name: 'p', rootPath: '$workspaceRootPath/p'),
+    );
+
+    addPackageDataFile('''
+version: 1
+transforms:
+  - title:  'Replace expect'
+    date: 2022-05-12
+    bulkApply: false
+    element:
+      uris: ['$importUri']
+      function: 'expect'
+    changes:
+      - kind: 'replacedBy'
+        newElement:
+          uris: ['package:matcher/expect.dart']
+          function: 'expect'
+''');
+    await resolveTestCode('''
+import '$importUri';
+
+main() {
+  expect(true, true);
+}
+''');
+    await assertHasFix('''
+import 'package:matcher/expect.dart';
+import '$importUri';
+
+main() {
+  expect(true, true);
+}
+''');
+  }
+
+  Future<void> test_expect_removed() async {
+    setPackageContent('''
+''');
+
+    addPackageDataFile('''
+version: 1
+transforms:
+  - title:  'Replace expect'
+    date: 2022-05-12
+    bulkApply: false
+    element:
+      uris: ['$importUri']
+      function: 'expect'
+    changes:
+      - kind: 'replacedBy'
+        newElement:
+          uris: ['package:matcher/expect.dart']
+          function: 'expect'
+''');
+    await resolveTestCode('''
+import '$importUri';
+
+main() {
+  expect(true, true);
+}
+''');
+    await assertHasFix('''
+import 'package:matcher/expect.dart';
+import '$importUri';
+
+main() {
+  expect(true, true);
+}
+''', errorFilter: ignoreUnusedImport);
+  }
+}
diff --git a/pkg/analyzer/lib/src/dart/element/scope.dart b/pkg/analyzer/lib/src/dart/element/scope.dart
index a37d97a..7eb9526 100644
--- a/pkg/analyzer/lib/src/dart/element/scope.dart
+++ b/pkg/analyzer/lib/src/dart/element/scope.dart
@@ -5,7 +5,7 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/scope.dart';
 import 'package:analyzer/src/dart/element/element.dart';
-import 'package:analyzer/src/dart/resolver/scope.dart' as impl;
+import 'package:analyzer/src/summary2/combinator.dart';
 
 /// The scope defined by a class.
 class ClassScope extends EnclosedScope {
@@ -141,10 +141,21 @@
   PrefixScope(this._library, PrefixElement? prefix) {
     for (var import in _library.imports) {
       if (import.prefix == prefix) {
-        var elements = impl.NamespaceBuilder().getImportedElements(import);
-        elements.forEach(_add);
-        if (import.isDeferred) {
-          _deferredLibrary ??= import.importedLibrary;
+        final importedLibrary = import.importedLibrary;
+        if (importedLibrary is LibraryElementImpl) {
+          // TODO(scheglov) Ask it from `_library`.
+          final elementFactory = importedLibrary.session.elementFactory;
+          final combinators = import.combinators.build();
+          for (final exportedReference in importedLibrary.exportedReferences) {
+            final reference = exportedReference.reference;
+            if (combinators.allows(reference.name)) {
+              final element = elementFactory.elementOfReference(reference)!;
+              _add(element);
+            }
+          }
+          if (import.isDeferred) {
+            _deferredLibrary ??= importedLibrary;
+          }
         }
       }
     }
diff --git a/pkg/analyzer/lib/src/dart/micro/analysis_context.dart b/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
index 02c0dcd..a507543 100644
--- a/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
+++ b/pkg/analyzer/lib/src/dart/micro/analysis_context.dart
@@ -19,6 +19,8 @@
 import 'package:analyzer/src/dart/micro/resolve_file.dart';
 import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
 import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/summary2/linked_element_factory.dart';
+import 'package:analyzer/src/summary2/reference.dart';
 
 MicroContextObjects createMicroContextObjects({
   required FileResolver fileResolver,
@@ -56,6 +58,12 @@
   analysisContext2.currentSession = analysisSession;
   analysisSession.analysisContext = analysisContext2;
 
+  analysisSession.elementFactory = LinkedElementFactory(
+    analysisContext,
+    analysisSession,
+    Reference.root(),
+  );
+
   return MicroContextObjects._(
     declaredVariables: declaredVariables,
     synchronousSession: synchronousSession,
@@ -152,6 +160,9 @@
   @override
   late _MicroAnalysisContextImpl analysisContext;
 
+  @override
+  late final LinkedElementFactory elementFactory;
+
   _MicroAnalysisSessionImpl(
     this.fileResolver,
     this.declaredVariables,
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index ea109b6..1224e31 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -35,7 +35,6 @@
 import 'package:analyzer/src/summary2/bundle_reader.dart';
 import 'package:analyzer/src/summary2/link.dart';
 import 'package:analyzer/src/summary2/linked_element_factory.dart';
-import 'package:analyzer/src/summary2/reference.dart';
 import 'package:analyzer/src/task/options.dart';
 import 'package:analyzer/src/util/file_paths.dart' as file_paths;
 import 'package:analyzer/src/util/performance/operation_performance.dart';
@@ -858,8 +857,6 @@
   final CiderByteStore byteStore;
   final MicroContextObjects contextObjects;
 
-  late final LinkedElementFactory elementFactory;
-
   Set<LibraryCycle> loadedBundles = Set.identity();
 
   LibraryContext(
@@ -868,12 +865,10 @@
     this.resourceProvider,
     this.byteStore,
     this.contextObjects,
-  ) {
-    elementFactory = LinkedElementFactory(
-      contextObjects.analysisContext,
-      contextObjects.analysisSession,
-      Reference.root(),
-    );
+  );
+
+  LinkedElementFactory get elementFactory {
+    return contextObjects.analysisSession.elementFactory;
   }
 
   /// Notifies this object that it is about to be discarded.
diff --git a/pkg/analyzer/lib/src/dart/resolver/scope.dart b/pkg/analyzer/lib/src/dart/resolver/scope.dart
index 83c03c4..9a76055 100644
--- a/pkg/analyzer/lib/src/dart/resolver/scope.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/scope.dart
@@ -197,19 +197,6 @@
     return Namespace(definedNames);
   }
 
-  /// Return elements imported with the given [element].
-  Iterable<Element> getImportedElements(ImportElement element) {
-    var importedLibrary = element.importedLibrary;
-
-    // If the URI is invalid.
-    if (importedLibrary == null) {
-      return [];
-    }
-
-    var map = _getExportMapping(importedLibrary);
-    return _applyCombinators(map, element.combinators).values;
-  }
-
   /// Add the given [element] to the table of [definedNames] if it has a
   /// publicly visible name.
   void _addIfPublic(Map<String, Element> definedNames, Element element) {
diff --git a/pkg/analyzer/lib/src/summary2/combinator.dart b/pkg/analyzer/lib/src/summary2/combinator.dart
index 96f1152..27226ba 100644
--- a/pkg/analyzer/lib/src/summary2/combinator.dart
+++ b/pkg/analyzer/lib/src/summary2/combinator.dart
@@ -2,6 +2,8 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'package:analyzer/dart/element/element.dart';
+
 class Combinator {
   final bool isShow;
   final Set<String> names;
@@ -21,3 +23,28 @@
     return names.contains(name);
   }
 }
+
+extension CombinatorListExtension on List<Combinator> {
+  /// Return `true` if this list of combinators allows the [name].
+  bool allows(String name) {
+    for (final combinator in this) {
+      if (combinator.isShow && !combinator.matches(name)) return false;
+      if (combinator.isHide && combinator.matches(name)) return false;
+    }
+    return true;
+  }
+}
+
+extension NamespaceCombinatorListExtension on List<NamespaceCombinator> {
+  List<Combinator> build() {
+    return map((combinator) {
+      if (combinator is ShowElementCombinator) {
+        return Combinator.show(combinator.shownNames);
+      } else if (combinator is HideElementCombinator) {
+        return Combinator.hide(combinator.hiddenNames);
+      } else {
+        throw UnimplementedError();
+      }
+    }).toList();
+  }
+}
diff --git a/pkg/analyzer/lib/src/summary2/export.dart b/pkg/analyzer/lib/src/summary2/export.dart
index 2c79392..9f88ade 100644
--- a/pkg/analyzer/lib/src/summary2/export.dart
+++ b/pkg/analyzer/lib/src/summary2/export.dart
@@ -14,11 +14,10 @@
   Export(this.exporter, this.index, this.combinators);
 
   bool addToExportScope(String name, ExportedReference exported) {
-    for (Combinator combinator in combinators) {
-      if (combinator.isShow && !combinator.matches(name)) return false;
-      if (combinator.isHide && combinator.matches(name)) return false;
+    if (combinators.allows(name)) {
+      return exporter.exportScope.export(index, name, exported);
     }
-    return exporter.exportScope.export(index, name, exported);
+    return false;
   }
 }
 
diff --git a/pkg/analyzer/lib/src/summary2/linked_element_factory.dart b/pkg/analyzer/lib/src/summary2/linked_element_factory.dart
index 33ca9f8..497160f 100644
--- a/pkg/analyzer/lib/src/summary2/linked_element_factory.dart
+++ b/pkg/analyzer/lib/src/summary2/linked_element_factory.dart
@@ -152,6 +152,7 @@
     }
   }
 
+  /// TODO(scheglov) Why would this method return `null`?
   Element? elementOfReference(Reference reference) {
     if (reference.element != null) {
       return reference.element;
diff --git a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
index 6608327..9ad3e64 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
@@ -1484,6 +1484,26 @@
   }
 
   @override
+  bool importsLibrary(Uri uri) {
+    // Self-reference.
+    if (resolvedUnit.libraryElement.source.uri == uri) return false;
+
+    // Existing import.
+    for (var import in resolvedUnit.libraryElement.imports) {
+      var importedLibrary = import.importedLibrary;
+      if (importedLibrary != null && importedLibrary.source.uri == uri) {
+        return true;
+      }
+    }
+
+    // Queued change.
+    var importChange = (libraryChangeBuilder ?? this).librariesToImport[uri];
+    if (importChange != null) return true;
+
+    return false;
+  }
+
+  @override
   void replaceTypeWithFuture(
       TypeAnnotation? typeAnnotation, TypeProvider typeProvider) {
     //
diff --git a/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart b/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart
index 4eababe..2082af0 100644
--- a/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart
+++ b/pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart
@@ -359,6 +359,10 @@
   /// If there is no existing import, a new import is added.
   ImportLibraryElementResult importLibraryElement(Uri uri);
 
+  /// Return `true` if the given library [uri] is already imported or will be
+  /// imported by a scheduled edit.
+  bool importsLibrary(Uri uri);
+
   /// Optionally create an edit to replace the given [typeAnnotation] with the
   /// type `Future` (with the given type annotation as the type argument). The
   /// [typeProvider] is used to check the current type, because if it is already
diff --git a/pkg/compiler/lib/src/js_model/class_type_variable_access.dart b/pkg/compiler/lib/src/js_model/class_type_variable_access.dart
new file mode 100644
index 0000000..3d2b39b
--- /dev/null
+++ b/pkg/compiler/lib/src/js_model/class_type_variable_access.dart
@@ -0,0 +1,25 @@
+// 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.
+
+/// Enum that defines how a member has access to the current type variables.
+enum ClassTypeVariableAccess {
+  /// The member has no access to type variables.
+  none,
+
+  /// Type variables are accessible as a property on `this`.
+  property,
+
+  /// Type variables are accessible as parameters in the current context.
+  parameter,
+
+  /// If the current context is a generative constructor, type variables are
+  /// accessible as parameters, otherwise type variables are accessible as
+  /// a property on `this`.
+  ///
+  /// This is used for instance fields whose initializers are executed in the
+  /// constructors.
+  // TODO(johnniwinther): Avoid the need for this by adding a field-setter
+  // to the J-model.
+  instanceField,
+}
diff --git a/pkg/compiler/lib/src/js_model/closure.dart b/pkg/compiler/lib/src/js_model/closure.dart
index cb36eb7..fad1f00 100644
--- a/pkg/compiler/lib/src/js_model/closure.dart
+++ b/pkg/compiler/lib/src/js_model/closure.dart
@@ -15,11 +15,11 @@
 import '../ir/element_map.dart';
 import '../ir/static_type_cache.dart';
 import '../js_backend/annotations.dart';
+import '../js_model/class_type_variable_access.dart';
 import '../js_model/element_map.dart';
 import '../js_model/env.dart';
 import '../ordered_typeset.dart';
 import '../serialization/serialization.dart';
-import '../ssa/type_builder.dart';
 import '../universe/selector.dart';
 import 'elements.dart';
 import 'js_world_builder.dart' show JsClosedWorldBuilder;
diff --git a/pkg/compiler/lib/src/js_model/element_map.dart b/pkg/compiler/lib/src/js_model/element_map.dart
index 2994fbe..9ba22fe 100644
--- a/pkg/compiler/lib/src/js_model/element_map.dart
+++ b/pkg/compiler/lib/src/js_model/element_map.dart
@@ -17,10 +17,10 @@
 import '../ir/closure.dart';
 import '../ir/static_type_provider.dart';
 import '../ir/util.dart';
+import '../js_model/class_type_variable_access.dart';
 import '../js_model/elements.dart' show JGeneratorBody;
 import '../native/behavior.dart';
 import '../serialization/serialization.dart';
-import '../ssa/type_builder.dart';
 import '../universe/call_structure.dart';
 import '../universe/selector.dart';
 import '../world.dart';
diff --git a/pkg/compiler/lib/src/js_model/element_map_impl.dart b/pkg/compiler/lib/src/js_model/element_map_impl.dart
index 55c36df..c794980 100644
--- a/pkg/compiler/lib/src/js_model/element_map_impl.dart
+++ b/pkg/compiler/lib/src/js_model/element_map_impl.dart
@@ -38,6 +38,7 @@
 import '../ir/util.dart';
 import '../js_backend/annotations.dart';
 import '../js_backend/native_data.dart';
+import '../js_model/class_type_variable_access.dart';
 import '../kernel/dart2js_target.dart' show allowedNativeTest;
 import '../kernel/element_map.dart';
 import '../kernel/env.dart';
@@ -46,7 +47,6 @@
 import '../options.dart';
 import '../ordered_typeset.dart';
 import '../serialization/serialization.dart';
-import '../ssa/type_builder.dart';
 import '../universe/call_structure.dart';
 import '../universe/member_usage.dart';
 import '../universe/selector.dart';
diff --git a/pkg/compiler/lib/src/js_model/env.dart b/pkg/compiler/lib/src/js_model/env.dart
index c987921..b2a9bd3 100644
--- a/pkg/compiler/lib/src/js_model/env.dart
+++ b/pkg/compiler/lib/src/js_model/env.dart
@@ -15,9 +15,9 @@
 import '../ir/element_map.dart';
 import '../ir/static_type_cache.dart';
 import '../ir/util.dart';
+import '../js_model/class_type_variable_access.dart';
 import '../ordered_typeset.dart';
 import '../serialization/serialization.dart';
-import '../ssa/type_builder.dart';
 import 'closure.dart';
 import 'element_map.dart';
 import 'element_map_impl.dart';
diff --git a/pkg/compiler/lib/src/kernel/env.dart b/pkg/compiler/lib/src/kernel/env.dart
index 398082b..2d71b3d 100644
--- a/pkg/compiler/lib/src/kernel/env.dart
+++ b/pkg/compiler/lib/src/kernel/env.dart
@@ -20,10 +20,10 @@
 import '../ir/element_map.dart';
 import '../ir/static_type_cache.dart';
 import '../ir/util.dart';
+import '../js_model/class_type_variable_access.dart';
 import '../js_model/element_map.dart';
 import '../js_model/env.dart';
 import '../ordered_typeset.dart';
-import '../ssa/type_builder.dart';
 import '../universe/member_usage.dart';
 import 'element_map.dart';
 
diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
index 0c073db..8445d27 100644
--- a/pkg/compiler/lib/src/ssa/builder.dart
+++ b/pkg/compiler/lib/src/ssa/builder.dart
@@ -39,10 +39,11 @@
 import '../js_backend/native_data.dart';
 import '../js_backend/runtime_types_resolution.dart';
 import '../js_emitter/code_emitter_task.dart' show ModularEmitter;
-import '../js_model/locals.dart' show GlobalLocalsMap, JumpVisitor;
-import '../js_model/elements.dart' show JGeneratorBody;
+import '../js_model/class_type_variable_access.dart';
 import '../js_model/element_map.dart';
+import '../js_model/elements.dart' show JGeneratorBody;
 import '../js_model/js_strategy.dart';
+import '../js_model/locals.dart' show GlobalLocalsMap, JumpVisitor;
 import '../js_model/type_recipe.dart';
 import '../kernel/invocation_mirror_constants.dart';
 import '../native/behavior.dart';
diff --git a/pkg/compiler/lib/src/ssa/type_builder.dart b/pkg/compiler/lib/src/ssa/type_builder.dart
index 86f3504..db034ca 100644
--- a/pkg/compiler/lib/src/ssa/type_builder.dart
+++ b/pkg/compiler/lib/src/ssa/type_builder.dart
@@ -9,34 +9,13 @@
 import '../elements/entities.dart';
 import '../elements/types.dart';
 import '../inferrer/abstract_value_domain.dart';
+import '../js_model/class_type_variable_access.dart';
 import '../js_model/type_recipe.dart';
 import '../io/source_information.dart';
 import '../options.dart';
 import '../universe/use.dart' show TypeUse;
 import '../world.dart';
 
-/// Enum that defines how a member has access to the current type variables.
-enum ClassTypeVariableAccess {
-  /// The member has no access to type variables.
-  none,
-
-  /// Type variables are accessible as a property on `this`.
-  property,
-
-  /// Type variables are accessible as parameters in the current context.
-  parameter,
-
-  /// If the current context is a generative constructor, type variables are
-  /// accessible as parameters, otherwise type variables are accessible as
-  /// a property on `this`.
-  ///
-  /// This is used for instance fields whose initializers are executed in the
-  /// constructors.
-  // TODO(johnniwinther): Avoid the need for this by adding a field-setter
-  // to the J-model.
-  instanceField,
-}
-
 /// Functions to insert type checking, coercion, and instruction insertion
 /// depending on the environment for dart code.
 abstract class TypeBuilder {
diff --git a/pkg/compiler/test/model/supermixin_test.dart b/pkg/compiler/test/model/supermixin_test.dart
index b7b0ada..324145d 100644
--- a/pkg/compiler/test/model/supermixin_test.dart
+++ b/pkg/compiler/test/model/supermixin_test.dart
@@ -23,7 +23,7 @@
   method1(a) => 'B$a';
 }
 
-class Mixin extends SuperA {
+mixin Mixin on SuperA {
   method1(a) => super.method1('M$a');
   method2(a) => 'M$a';
 }
@@ -55,8 +55,10 @@
 
     Expect.isTrue(elementEnvironment.isMixinApplicationWithMembers(superClass));
     Expect.equals(mixin, elementEnvironment.getEffectiveMixinClass(superClass));
-    Expect.equals(superA, elementEnvironment.getSuperClass(mixin));
     Expect.equals(superB, elementEnvironment.getSuperClass(superClass));
+    Expect.equals(superA, elementEnvironment.getSuperClass(superB));
+    Expect.equals(elementEnvironment.getSuperClass(superA),
+        elementEnvironment.getSuperClass(mixin));
 
     MemberEntity method1 = lookupMember(elementEnvironment, 'Class.method1');
     Expect.equals(superClass, method1.enclosingClass);
diff --git a/pkg/front_end/lib/src/fasta/builder/class_builder.dart b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
index 3d80125..b4df57c 100644
--- a/pkg/front_end/lib/src/fasta/builder/class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
@@ -417,9 +417,7 @@
         ? hierarchy.getDispatchTarget(instanceClass, name, setter: isSetter)
         : hierarchy.getInterfaceMember(instanceClass, name, setter: isSetter);
     if (isSuper && target == null) {
-      if (cls.isMixinDeclaration ||
-          (libraryBuilder.loader.target.backendTarget.enableSuperMixins &&
-              this.isAbstract)) {
+      if (cls.isMixinDeclaration) {
         target =
             hierarchy.getInterfaceMember(instanceClass, name, setter: isSetter);
       }
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index 40a52c4..985dc64 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -487,8 +487,8 @@
       loader.buildClassHierarchy(sortedSourceClassBuilders, objectClassBuilder);
 
       benchmarker?.enterPhase(BenchmarkPhases.outline_checkSupertypes);
-      loader.checkSupertypes(
-          sortedSourceClassBuilders, enumClass, underscoreEnumClass);
+      loader.checkSupertypes(sortedSourceClassBuilders, objectClass, enumClass,
+          underscoreEnumClass);
 
       if (macroApplications != null) {
         benchmarker?.enterPhase(BenchmarkPhases.outline_applyDeclarationMacros);
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index 973ee8c..3e629a1 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -41,6 +41,7 @@
 import '../fasta_codes.dart';
 import '../kernel/combined_member_signature.dart';
 import '../kernel/hierarchy/hierarchy_builder.dart';
+import '../kernel/hierarchy/hierarchy_node.dart';
 import '../kernel/kernel_helper.dart';
 import '../kernel/kernel_target.dart' show KernelTarget;
 import '../kernel/redirecting_factory_body.dart'
@@ -729,6 +730,7 @@
   void checkSupertypes(
       CoreTypes coreTypes,
       ClassHierarchyBuilder hierarchyBuilder,
+      Class objectClass,
       Class enumClass,
       Class underscoreEnumClass,
       Class? macroClass) {
@@ -738,16 +740,17 @@
     // Moreover, it checks that `FutureOr` and `void` are not among the
     // supertypes and that `Enum` is not implemented by non-abstract classes.
 
+    ClassHierarchyNode classHierarchyNode =
+        hierarchyBuilder.getNodeFromClass(cls);
     if (libraryBuilder.libraryFeatures.enhancedEnums.isEnabled && !isEnum) {
       bool hasEnumSuperinterface = false;
-      List<Supertype> interfaces =
-          hierarchyBuilder.getNodeFromClass(cls).superclasses;
+      List<Supertype> interfaces = classHierarchyNode.superclasses;
       for (int i = 0; !hasEnumSuperinterface && i < interfaces.length; i++) {
         if (interfaces[i].classNode == enumClass) {
           hasEnumSuperinterface = true;
         }
       }
-      interfaces = hierarchyBuilder.getNodeFromClass(cls).interfaces;
+      interfaces = classHierarchyNode.interfaces;
       for (int i = 0; !hasEnumSuperinterface && i < interfaces.length; i++) {
         if (interfaces[i].classNode == enumClass) {
           hasEnumSuperinterface = true;
@@ -810,14 +813,13 @@
     if (macroClass != null && !cls.isMacro && !cls.isAbstract) {
       // TODO(johnniwinther): Merge this check with the loop above.
       bool isMacroFound = false;
-      List<Supertype> interfaces =
-          hierarchyBuilder.getNodeFromClass(cls).superclasses;
+      List<Supertype> interfaces = classHierarchyNode.superclasses;
       for (int i = 0; !isMacroFound && i < interfaces.length; i++) {
         if (interfaces[i].classNode == macroClass) {
           isMacroFound = true;
         }
       }
-      interfaces = hierarchyBuilder.getNodeFromClass(cls).interfaces;
+      interfaces = classHierarchyNode.interfaces;
       for (int i = 0; !isMacroFound && i < interfaces.length; i++) {
         if (interfaces[i].classNode == macroClass) {
           isMacroFound = true;
@@ -866,6 +868,23 @@
         superClass = decl;
       }
     }
+    if (classHierarchyNode.isMixinApplication) {
+      assert(mixedInTypeBuilder != null,
+          "No mixed in type builder for mixin application $this.");
+      ClassHierarchyNode mixedInNode = classHierarchyNode.mixedInNode!;
+      ClassHierarchyNode? mixinSuperClassNode =
+          mixedInNode.directSuperClassNode;
+      if (mixinSuperClassNode != null &&
+          mixinSuperClassNode.classBuilder.cls != objectClass &&
+          !mixedInNode.classBuilder.cls.isMixinDeclaration) {
+        addProblem(
+            templateMixinInheritsFromNotObject
+                .withArguments(mixedInNode.classBuilder.name),
+            mixedInTypeBuilder!.charOffset ?? TreeNode.noOffset,
+            noLength);
+      }
+    }
+
     if (interfaceBuilders == null) return;
 
     // Validate interfaces.
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index ffced81..a8312e7 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -2117,12 +2117,12 @@
     ticker.logMs("Computed core types");
   }
 
-  void checkSupertypes(List<SourceClassBuilder> sourceClasses, Class enumClass,
-      Class underscoreEnumClass) {
+  void checkSupertypes(List<SourceClassBuilder> sourceClasses,
+      Class objectClass, Class enumClass, Class underscoreEnumClass) {
     for (SourceClassBuilder builder in sourceClasses) {
       if (builder.libraryBuilder.loader == this && !builder.isPatch) {
-        builder.checkSupertypes(coreTypes, hierarchyBuilder, enumClass,
-            underscoreEnumClass, _macroClassBuilder?.cls);
+        builder.checkSupertypes(coreTypes, hierarchyBuilder, objectClass,
+            enumClass, underscoreEnumClass, _macroClassBuilder?.cls);
       }
     }
     ticker.logMs("Checked supertypes");
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 3c2d1fe..5c0668e 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -5604,3 +5604,11 @@
 
 EnumAbstractMember:
   problemMessage: "Enums can't declare abstract members."
+
+MixinInheritsFromNotObject:
+  problemMessage: "The class '#name' can't be used as a mixin because it extends a class other than 'Object'."
+  analyzerCode: MIXIN_INHERITS_FROM_NOT_OBJECT
+  script: |
+    class Base {}
+    class Mixin extends Base {}
+    class C extends Base with Mixin {}
diff --git a/pkg/front_end/test/deps_git_test.dart b/pkg/front_end/test/deps_git_test.dart
index e123def..5969343 100644
--- a/pkg/front_end/test/deps_git_test.dart
+++ b/pkg/front_end/test/deps_git_test.dart
@@ -23,21 +23,19 @@
 final Uri repoDir = computeRepoDirUri();
 
 Set<String> allowlistedExternalDartFiles = {
-  "third_party/pkg/charcode/lib/ascii.dart",
-
-  "third_party/pkg_tested/package_config/lib/package_config.dart",
-  "third_party/pkg_tested/package_config/lib/package_config_types.dart",
-  "third_party/pkg_tested/package_config/lib/src/discovery.dart",
-  "third_party/pkg_tested/package_config/lib/src/errors.dart",
-  "third_party/pkg_tested/package_config/lib/src/package_config_impl.dart",
-  "third_party/pkg_tested/package_config/lib/src/package_config_io.dart",
-  "third_party/pkg_tested/package_config/lib/src/package_config_json.dart",
-  "third_party/pkg_tested/package_config/lib/src/package_config.dart",
-  "third_party/pkg_tested/package_config/lib/src/packages_file.dart",
-  "third_party/pkg_tested/package_config/lib/src/util.dart",
+  "third_party/pkg/package_config/lib/package_config.dart",
+  "third_party/pkg/package_config/lib/package_config_types.dart",
+  "third_party/pkg/package_config/lib/src/discovery.dart",
+  "third_party/pkg/package_config/lib/src/errors.dart",
+  "third_party/pkg/package_config/lib/src/package_config_impl.dart",
+  "third_party/pkg/package_config/lib/src/package_config_io.dart",
+  "third_party/pkg/package_config/lib/src/package_config_json.dart",
+  "third_party/pkg/package_config/lib/src/package_config.dart",
+  "third_party/pkg/package_config/lib/src/packages_file.dart",
+  "third_party/pkg/package_config/lib/src/util.dart",
 
   // TODO(johnniwinther): Fix to allow dependency of package:package_config.
-  "third_party/pkg_tested/package_config/lib/src/util_io.dart",
+  "third_party/pkg/package_config/lib/src/util_io.dart",
 
   // TODO(CFE-team): These files should not be included.
   // The package isn't even in pubspec.yaml.
diff --git a/pkg/front_end/test/fasta/super_mixins_test.dart b/pkg/front_end/test/fasta/super_mixins_test.dart
index 2ef4893..d1db05d 100644
--- a/pkg/front_end/test/fasta/super_mixins_test.dart
+++ b/pkg/front_end/test/fasta/super_mixins_test.dart
@@ -108,7 +108,7 @@
     ..target = new NoneTargetWithSuperMixins(new TargetFlags());
   await compileScript(testSource, options: options);
   Expect.setEquals(
-      const <String>['baz', 'foo', 'quux'], missingSuperMethodNames);
+      const <String>['bar', 'baz', 'foo', 'quux'], missingSuperMethodNames);
 }
 
 void main() {
diff --git a/pkg/front_end/test/macros/application/data/tests/sequence.dart b/pkg/front_end/test/macros/application/data/tests/sequence.dart
index 0318ffd..cce1603 100644
--- a/pkg/front_end/test/macros/application/data/tests/sequence.dart
+++ b/pkg/front_end/test/macros/application/data/tests/sequence.dart
@@ -166,7 +166,6 @@
 */
 class Class6a {}
 
-@SequenceMacro(0)
 /*class: Class7d:
 declarations:
 
@@ -174,7 +173,8 @@
   method2() {}
 }
 */
-class Class7d with Class7b, Class7c {}
+@SequenceMacro(0)
+class Class7d extends Class7b with Class7c {}
 
 @SequenceMacro(0)
 /*class: Class7c:
diff --git a/pkg/front_end/test/macros/application/data/tests/sequence.dart.expect b/pkg/front_end/test/macros/application/data/tests/sequence.dart.expect
index 80e82bb..691ef16 100644
--- a/pkg/front_end/test/macros/application/data/tests/sequence.dart.expect
+++ b/pkg/front_end/test/macros/application/data/tests/sequence.dart.expect
@@ -95,24 +95,17 @@
     ;
   method /* from org-dartlang-augmentation:/a/b/c/main.dart-11 */ method() → dynamic {}
 }
-abstract class _Class7d&Object&Class7b = core::Object with self::Class7b /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_Class7d&Object&Class7b
-    : super core::Object::•()
-    ;
-  mixin-super-stub method method1() → dynamic
-    return super.{self::Class7b::method1}();
-}
-abstract class _Class7d&Object&Class7b&Class7c = self::_Class7d&Object&Class7b with self::Class7c /*isAnonymousMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_Class7d&Object&Class7b&Class7c
-    : super self::_Class7d&Object&Class7b::•()
+abstract class _Class7d&Class7b&Class7c = self::Class7b with self::Class7c /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Class7d&Class7b&Class7c
+    : super self::Class7b::•()
     ;
   mixin-super-stub method method() → dynamic
     return super.{self::Class7c::method}();
 }
 @#C2
-class Class7d extends self::_Class7d&Object&Class7b&Class7c {
+class Class7d extends self::_Class7d&Class7b&Class7c {
   synthetic constructor •() → self::Class7d
-    : super self::_Class7d&Object&Class7b&Class7c::•()
+    : super self::_Class7d&Class7b&Class7c::•()
     ;
   method /* from org-dartlang-augmentation:/a/b/c/main.dart-17 */ method2() → dynamic {}
 }
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart
index ddee41a..867944a 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart
@@ -6,7 +6,7 @@
   int get foo => index;
 }
 
-enum EA with A { element }
+enum EA with A { element } // Error.
 
 abstract class B implements Enum { // Ok.
   int get foo => index;
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
index 806437d..64e3b29f 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.expect
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart:9:14: Error: The class 'A' can't be used as a mixin because it extends a class other than 'Object'.
+// enum EA with A { element } // Error.
+//              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
index fefad44..8d2555e 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.strong.transformed.expect
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart:9:14: Error: The class 'A' can't be used as a mixin because it extends a class other than 'Object'.
+// enum EA with A { element } // Error.
+//              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect
index bbf22ca..a059a89 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.expect
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart:9:14: Error: The class 'A' can't be used as a mixin because it extends a class other than 'Object'.
+// enum EA with A { element } // Error.
+//              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect
index bbf22ca..a059a89 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.modular.expect
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart:9:14: Error: The class 'A' can't be used as a mixin because it extends a class other than 'Object'.
+// enum EA with A { element } // Error.
+//              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect
index c664069..305483e 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.outline.expect
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart:9:14: Error: The class 'A' can't be used as a mixin because it extends a class other than 'Object'.
+// enum EA with A { element } // Error.
+//              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect
index 5cdd088..d117fd5 100644
--- a/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart.weak.transformed.expect
@@ -1,4 +1,11 @@
 library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/enhanced_enums/enum_as_supertype.dart:9:14: Error: The class 'A' can't be used as a mixin because it extends a class other than 'Object'.
+// enum EA with A { element } // Error.
+//              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/general/issue48167.dart b/pkg/front_end/testcases/general/issue48167.dart
new file mode 100644
index 0000000..5207b6e
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue48167.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 Base {}
+
+class Mixin1a extends Base {}
+
+class Mixin1b extends Mixin1a {}
+
+class C1a extends Base with Mixin1a {}
+
+class C1b extends Base with Mixin1b {}
+
+mixin Mixin2a on Base {}
+
+mixin Mixin2b on Base, Mixin2a {}
+
+class C2a extends Base with Mixin2a {}
+
+class C2b extends Base with Mixin2a, Mixin2b {}
diff --git a/pkg/front_end/testcases/general/issue48167.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue48167.dart.textual_outline.expect
new file mode 100644
index 0000000..b9524fa
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue48167.dart.textual_outline.expect
@@ -0,0 +1,16 @@
+class Base {}
+
+class Mixin1a extends Base {}
+
+class Mixin1b extends Mixin1a {}
+
+class C1a extends Base with Mixin1a {}
+
+class C1b extends Base with Mixin1b {}
+
+mixin Mixin2a on Base {}
+mixin Mixin2b on Base, Mixin2a {}
+
+class C2a extends Base with Mixin2a {}
+
+class C2b extends Base with Mixin2a, Mixin2b {}
diff --git a/pkg/front_end/testcases/general/issue48167.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue48167.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..f907e98
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue48167.dart.textual_outline_modelled.expect
@@ -0,0 +1,16 @@
+class Base {}
+
+class C1a extends Base with Mixin1a {}
+
+class C1b extends Base with Mixin1b {}
+
+class C2a extends Base with Mixin2a {}
+
+class C2b extends Base with Mixin2a, Mixin2b {}
+
+class Mixin1a extends Base {}
+
+class Mixin1b extends Mixin1a {}
+
+mixin Mixin2a on Base {}
+mixin Mixin2b on Base, Mixin2a {}
diff --git a/pkg/front_end/testcases/general/issue48167.dart.weak.expect b/pkg/front_end/testcases/general/issue48167.dart.weak.expect
new file mode 100644
index 0000000..9c5a12c
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue48167.dart.weak.expect
@@ -0,0 +1,84 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue48167.dart:11:29: Error: The class 'Mixin1a' can't be used as a mixin because it extends a class other than 'Object'.
+// class C1a extends Base with Mixin1a {}
+//                             ^
+//
+// pkg/front_end/testcases/general/issue48167.dart:13:29: Error: The class 'Mixin1b' can't be used as a mixin because it extends a class other than 'Object'.
+// class C1b extends Base with Mixin1b {}
+//                             ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Base extends core::Object {
+  synthetic constructor •() → self::Base
+    : super core::Object::•()
+    ;
+}
+class Mixin1a extends self::Base {
+  synthetic constructor •() → self::Mixin1a
+    : super self::Base::•()
+    ;
+}
+class Mixin1b extends self::Mixin1a {
+  synthetic constructor •() → self::Mixin1b
+    : super self::Mixin1a::•()
+    ;
+}
+abstract class _C1a&Base&Mixin1a = self::Base with self::Mixin1a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C1a&Base&Mixin1a
+    : super self::Base::•()
+    ;
+}
+class C1a extends self::_C1a&Base&Mixin1a {
+  synthetic constructor •() → self::C1a
+    : super self::_C1a&Base&Mixin1a::•()
+    ;
+}
+abstract class _C1b&Base&Mixin1b = self::Base with self::Mixin1b /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C1b&Base&Mixin1b
+    : super self::Base::•()
+    ;
+}
+class C1b extends self::_C1b&Base&Mixin1b {
+  synthetic constructor •() → self::C1b
+    : super self::_C1b&Base&Mixin1b::•()
+    ;
+}
+abstract class Mixin2a extends self::Base /*isMixinDeclaration*/  {
+}
+abstract class _Mixin2b&Base&Mixin2a extends core::Object implements self::Base, self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Mixin2b&Base&Mixin2a
+    : super core::Object::•()
+    ;
+}
+abstract class Mixin2b extends self::_Mixin2b&Base&Mixin2a /*isMixinDeclaration*/  {
+}
+abstract class _C2a&Base&Mixin2a = self::Base with self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C2a&Base&Mixin2a
+    : super self::Base::•()
+    ;
+}
+class C2a extends self::_C2a&Base&Mixin2a {
+  synthetic constructor •() → self::C2a
+    : super self::_C2a&Base&Mixin2a::•()
+    ;
+}
+abstract class _C2b&Base&Mixin2a = self::Base with self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C2b&Base&Mixin2a
+    : super self::Base::•()
+    ;
+}
+abstract class _C2b&Base&Mixin2a&Mixin2b = self::_C2b&Base&Mixin2a with self::Mixin2b /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C2b&Base&Mixin2a&Mixin2b
+    : super self::_C2b&Base&Mixin2a::•()
+    ;
+}
+class C2b extends self::_C2b&Base&Mixin2a&Mixin2b {
+  synthetic constructor •() → self::C2b
+    : super self::_C2b&Base&Mixin2a&Mixin2b::•()
+    ;
+}
diff --git a/pkg/front_end/testcases/general/issue48167.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue48167.dart.weak.modular.expect
new file mode 100644
index 0000000..9c5a12c
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue48167.dart.weak.modular.expect
@@ -0,0 +1,84 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue48167.dart:11:29: Error: The class 'Mixin1a' can't be used as a mixin because it extends a class other than 'Object'.
+// class C1a extends Base with Mixin1a {}
+//                             ^
+//
+// pkg/front_end/testcases/general/issue48167.dart:13:29: Error: The class 'Mixin1b' can't be used as a mixin because it extends a class other than 'Object'.
+// class C1b extends Base with Mixin1b {}
+//                             ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Base extends core::Object {
+  synthetic constructor •() → self::Base
+    : super core::Object::•()
+    ;
+}
+class Mixin1a extends self::Base {
+  synthetic constructor •() → self::Mixin1a
+    : super self::Base::•()
+    ;
+}
+class Mixin1b extends self::Mixin1a {
+  synthetic constructor •() → self::Mixin1b
+    : super self::Mixin1a::•()
+    ;
+}
+abstract class _C1a&Base&Mixin1a = self::Base with self::Mixin1a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C1a&Base&Mixin1a
+    : super self::Base::•()
+    ;
+}
+class C1a extends self::_C1a&Base&Mixin1a {
+  synthetic constructor •() → self::C1a
+    : super self::_C1a&Base&Mixin1a::•()
+    ;
+}
+abstract class _C1b&Base&Mixin1b = self::Base with self::Mixin1b /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C1b&Base&Mixin1b
+    : super self::Base::•()
+    ;
+}
+class C1b extends self::_C1b&Base&Mixin1b {
+  synthetic constructor •() → self::C1b
+    : super self::_C1b&Base&Mixin1b::•()
+    ;
+}
+abstract class Mixin2a extends self::Base /*isMixinDeclaration*/  {
+}
+abstract class _Mixin2b&Base&Mixin2a extends core::Object implements self::Base, self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Mixin2b&Base&Mixin2a
+    : super core::Object::•()
+    ;
+}
+abstract class Mixin2b extends self::_Mixin2b&Base&Mixin2a /*isMixinDeclaration*/  {
+}
+abstract class _C2a&Base&Mixin2a = self::Base with self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C2a&Base&Mixin2a
+    : super self::Base::•()
+    ;
+}
+class C2a extends self::_C2a&Base&Mixin2a {
+  synthetic constructor •() → self::C2a
+    : super self::_C2a&Base&Mixin2a::•()
+    ;
+}
+abstract class _C2b&Base&Mixin2a = self::Base with self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C2b&Base&Mixin2a
+    : super self::Base::•()
+    ;
+}
+abstract class _C2b&Base&Mixin2a&Mixin2b = self::_C2b&Base&Mixin2a with self::Mixin2b /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C2b&Base&Mixin2a&Mixin2b
+    : super self::_C2b&Base&Mixin2a::•()
+    ;
+}
+class C2b extends self::_C2b&Base&Mixin2a&Mixin2b {
+  synthetic constructor •() → self::C2b
+    : super self::_C2b&Base&Mixin2a&Mixin2b::•()
+    ;
+}
diff --git a/pkg/front_end/testcases/general/issue48167.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue48167.dart.weak.outline.expect
new file mode 100644
index 0000000..fbb38a4
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue48167.dart.weak.outline.expect
@@ -0,0 +1,76 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue48167.dart:11:29: Error: The class 'Mixin1a' can't be used as a mixin because it extends a class other than 'Object'.
+// class C1a extends Base with Mixin1a {}
+//                             ^
+//
+// pkg/front_end/testcases/general/issue48167.dart:13:29: Error: The class 'Mixin1b' can't be used as a mixin because it extends a class other than 'Object'.
+// class C1b extends Base with Mixin1b {}
+//                             ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Base extends core::Object {
+  synthetic constructor •() → self::Base
+    ;
+}
+class Mixin1a extends self::Base {
+  synthetic constructor •() → self::Mixin1a
+    ;
+}
+class Mixin1b extends self::Mixin1a {
+  synthetic constructor •() → self::Mixin1b
+    ;
+}
+abstract class _C1a&Base&Mixin1a = self::Base with self::Mixin1a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C1a&Base&Mixin1a
+    : super self::Base::•()
+    ;
+}
+class C1a extends self::_C1a&Base&Mixin1a {
+  synthetic constructor •() → self::C1a
+    ;
+}
+abstract class _C1b&Base&Mixin1b = self::Base with self::Mixin1b /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C1b&Base&Mixin1b
+    : super self::Base::•()
+    ;
+}
+class C1b extends self::_C1b&Base&Mixin1b {
+  synthetic constructor •() → self::C1b
+    ;
+}
+abstract class Mixin2a extends self::Base /*isMixinDeclaration*/  {
+}
+abstract class _Mixin2b&Base&Mixin2a extends core::Object implements self::Base, self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Mixin2b&Base&Mixin2a
+    ;
+}
+abstract class Mixin2b extends self::_Mixin2b&Base&Mixin2a /*isMixinDeclaration*/  {
+}
+abstract class _C2a&Base&Mixin2a = self::Base with self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C2a&Base&Mixin2a
+    : super self::Base::•()
+    ;
+}
+class C2a extends self::_C2a&Base&Mixin2a {
+  synthetic constructor •() → self::C2a
+    ;
+}
+abstract class _C2b&Base&Mixin2a = self::Base with self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C2b&Base&Mixin2a
+    : super self::Base::•()
+    ;
+}
+abstract class _C2b&Base&Mixin2a&Mixin2b = self::_C2b&Base&Mixin2a with self::Mixin2b /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_C2b&Base&Mixin2a&Mixin2b
+    : super self::_C2b&Base&Mixin2a::•()
+    ;
+}
+class C2b extends self::_C2b&Base&Mixin2a&Mixin2b {
+  synthetic constructor •() → self::C2b
+    ;
+}
diff --git a/pkg/front_end/testcases/general/issue48167.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue48167.dart.weak.transformed.expect
new file mode 100644
index 0000000..f2fe692
--- /dev/null
+++ b/pkg/front_end/testcases/general/issue48167.dart.weak.transformed.expect
@@ -0,0 +1,84 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/issue48167.dart:11:29: Error: The class 'Mixin1a' can't be used as a mixin because it extends a class other than 'Object'.
+// class C1a extends Base with Mixin1a {}
+//                             ^
+//
+// pkg/front_end/testcases/general/issue48167.dart:13:29: Error: The class 'Mixin1b' can't be used as a mixin because it extends a class other than 'Object'.
+// class C1b extends Base with Mixin1b {}
+//                             ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Base extends core::Object {
+  synthetic constructor •() → self::Base
+    : super core::Object::•()
+    ;
+}
+class Mixin1a extends self::Base {
+  synthetic constructor •() → self::Mixin1a
+    : super self::Base::•()
+    ;
+}
+class Mixin1b extends self::Mixin1a {
+  synthetic constructor •() → self::Mixin1b
+    : super self::Mixin1a::•()
+    ;
+}
+abstract class _C1a&Base&Mixin1a extends self::Base implements self::Mixin1a /*isAnonymousMixin,isEliminatedMixin*/  {
+  synthetic constructor •() → self::_C1a&Base&Mixin1a
+    : super self::Base::•()
+    ;
+}
+class C1a extends self::_C1a&Base&Mixin1a {
+  synthetic constructor •() → self::C1a
+    : super self::_C1a&Base&Mixin1a::•()
+    ;
+}
+abstract class _C1b&Base&Mixin1b extends self::Base implements self::Mixin1b /*isAnonymousMixin,isEliminatedMixin*/  {
+  synthetic constructor •() → self::_C1b&Base&Mixin1b
+    : super self::Base::•()
+    ;
+}
+class C1b extends self::_C1b&Base&Mixin1b {
+  synthetic constructor •() → self::C1b
+    : super self::_C1b&Base&Mixin1b::•()
+    ;
+}
+abstract class Mixin2a extends self::Base /*isMixinDeclaration*/  {
+}
+abstract class _Mixin2b&Base&Mixin2a extends core::Object implements self::Base, self::Mixin2a /*isAnonymousMixin*/  {
+  synthetic constructor •() → self::_Mixin2b&Base&Mixin2a
+    : super core::Object::•()
+    ;
+}
+abstract class Mixin2b extends self::_Mixin2b&Base&Mixin2a /*isMixinDeclaration*/  {
+}
+abstract class _C2a&Base&Mixin2a extends self::Base implements self::Mixin2a /*isAnonymousMixin,isEliminatedMixin*/  {
+  synthetic constructor •() → self::_C2a&Base&Mixin2a
+    : super self::Base::•()
+    ;
+}
+class C2a extends self::_C2a&Base&Mixin2a {
+  synthetic constructor •() → self::C2a
+    : super self::_C2a&Base&Mixin2a::•()
+    ;
+}
+abstract class _C2b&Base&Mixin2a extends self::Base implements self::Mixin2a /*isAnonymousMixin,isEliminatedMixin*/  {
+  synthetic constructor •() → self::_C2b&Base&Mixin2a
+    : super self::Base::•()
+    ;
+}
+abstract class _C2b&Base&Mixin2a&Mixin2b extends self::_C2b&Base&Mixin2a implements self::Mixin2b /*isAnonymousMixin,isEliminatedMixin*/  {
+  synthetic constructor •() → self::_C2b&Base&Mixin2a&Mixin2b
+    : super self::_C2b&Base&Mixin2a::•()
+    ;
+}
+class C2b extends self::_C2b&Base&Mixin2a&Mixin2b {
+  synthetic constructor •() → self::C2b
+    : super self::_C2b&Base&Mixin2a&Mixin2b::•()
+    ;
+}
diff --git a/pkg/front_end/testcases/general/mixin_super_repeated.dart b/pkg/front_end/testcases/general/mixin_super_repeated.dart
index e9453fd..d326a31 100644
--- a/pkg/front_end/testcases/general/mixin_super_repeated.dart
+++ b/pkg/front_end/testcases/general/mixin_super_repeated.dart
@@ -6,7 +6,7 @@
   var m;
 }
 
-abstract class N extends M {
+mixin N on M {
   void set superM(value) {
     super.m = value;
   }
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 e92d32e..65c7ba3 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
@@ -2,7 +2,7 @@
   var m;
 }
 
-abstract class N extends M {
+mixin N on M {
   void set superM(value) {}
   get superM => super.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 2d9c4d4..30ac627 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
@@ -2,13 +2,12 @@
   var m;
 }
 
-abstract class N extends M {
-  get superM => super.m;
-  void set superM(value) {}
-}
-
 class Named = S with M, N, M;
 
 class S {}
 
 main() {}
+mixin N on M {
+  get superM => super.m;
+  void set superM(value) {}
+}
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 5ed308d..1c00ad2 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
@@ -8,10 +8,7 @@
     : super core::Object::•()
     ;
 }
-abstract class N extends self::M {
-  synthetic constructor •() → self::N
-    : super self::M::•()
-    ;
+abstract class N extends self::M /*isMixinDeclaration*/  {
   set superM(dynamic value) → void {
     super.{self::M::m} = value;
   }
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 5ed308d..1c00ad2 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
@@ -8,10 +8,7 @@
     : super core::Object::•()
     ;
 }
-abstract class N extends self::M {
-  synthetic constructor •() → self::N
-    : super self::M::•()
-    ;
+abstract class N extends self::M /*isMixinDeclaration*/  {
   set superM(dynamic value) → void {
     super.{self::M::m} = value;
   }
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 48f57f8..5af75a0 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
@@ -7,9 +7,7 @@
   synthetic constructor •() → self::M
     ;
 }
-abstract class N extends self::M {
-  synthetic constructor •() → self::N
-    ;
+abstract class N extends self::M /*isMixinDeclaration*/  {
   set superM(dynamic value) → void
     ;
   get superM() → 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 94d7058..b868047 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
@@ -8,10 +8,7 @@
     : super core::Object::•()
     ;
 }
-abstract class N extends self::M {
-  synthetic constructor •() → self::N
-    : super self::M::•()
-    ;
+abstract class N extends self::M /*isMixinDeclaration*/  {
   set superM(dynamic value) → void {
     super.{self::M::m} = value;
   }
diff --git a/pkg/front_end/testcases/incremental/strongmode_mixins.yaml b/pkg/front_end/testcases/incremental/strongmode_mixins.yaml
index ee75714..d55612e 100644
--- a/pkg/front_end/testcases/incremental/strongmode_mixins.yaml
+++ b/pkg/front_end/testcases/incremental/strongmode_mixins.yaml
@@ -17,5 +17,5 @@
     class A extends Object with B<Object>, C {}
   b.dart: |
     // @dart=2.9
-    abstract class C<T extends Object> extends Object with B<T> {}
+    mixin C<T extends Object> on B<T> {}
     abstract class B<ChildType extends Object> extends Object {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart
index c20ad39..6858497 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart
@@ -4,7 +4,7 @@
 // @dart=2.9
 class I<X> {}
 
-class M0<X, Y extends String> extends I<X> {}
+mixin M0<X, Y extends String> on I<X> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.textual_outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.textual_outline.expect
index 2a73ca9..7930d31 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.textual_outline.expect
@@ -1,7 +1,7 @@
 // @dart = 2.9
 class I<X> {}
 
-class M0<X, Y extends String> extends I<X> {}
+mixin M0<X, Y extends String> on I<X> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.textual_outline_modelled.expect
index a214810..9474532 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.textual_outline_modelled.expect
@@ -3,8 +3,7 @@
 
 class I<X> {}
 
-class M0<X, Y extends String> extends I<X> {}
-
 class M1 implements I<int> {}
 
 main() {}
+mixin M0<X, Y extends String> on I<X> {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.expect
index ce1b438..0d4a458 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.expect
@@ -17,10 +17,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends core::String*> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::String*> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.modular.expect
index ce1b438..0d4a458 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.modular.expect
@@ -17,10 +17,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends core::String*> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::String*> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.outline.expect
index d73c867..e554562 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.outline.expect
@@ -16,9 +16,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends core::String*> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::String*> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.transformed.expect
index 0ac49c5..aa3fb5c 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.weak.transformed.expect
@@ -17,10 +17,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends core::String*> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::String*> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart
index 5219f6e..6f236ea 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart
@@ -4,7 +4,7 @@
 // @dart=2.9
 class I<X> {}
 
-class M0<X, Y extends X> extends I<X> {}
+mixin M0<X, Y extends X> on I<X> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.textual_outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.textual_outline.expect
index 4967e97..3cccb82 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.textual_outline.expect
@@ -1,7 +1,7 @@
 // @dart = 2.9
 class I<X> {}
 
-class M0<X, Y extends X> extends I<X> {}
+mixin M0<X, Y extends X> on I<X> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.textual_outline_modelled.expect
index 37572af..1f00d34 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.textual_outline_modelled.expect
@@ -3,8 +3,7 @@
 
 class I<X> {}
 
-class M0<X, Y extends X> extends I<X> {}
-
 class M1 implements I<int> {}
 
 main() {}
+mixin M0<X, Y extends X> on I<X> {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.expect
index f202e79..53f7336 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.expect
@@ -17,10 +17,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.modular.expect
index f202e79..53f7336 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.modular.expect
@@ -17,10 +17,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.outline.expect
index c7b5bf6..858797c 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.outline.expect
@@ -16,9 +16,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.transformed.expect
index 3988f83..49e100e 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.weak.transformed.expect
@@ -17,10 +17,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends self::M0::X* = dynamic> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart
index f17f138..b09deb8 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart
@@ -4,7 +4,7 @@
 // @dart=2.9
 class I<X> {}
 
-class M0<X, Y extends Comparable<Y>> extends I<X> {}
+mixin M0<X, Y extends Comparable<Y>> on I<X> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.textual_outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.textual_outline.expect
index 12b7ba8..86c6e94 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.textual_outline.expect
@@ -1,7 +1,7 @@
 // @dart = 2.9
 class I<X> {}
 
-class M0<X, Y extends Comparable<Y>> extends I<X> {}
+mixin M0<X, Y extends Comparable<Y>> on I<X> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.textual_outline_modelled.expect
index 337d25b..6462f6d 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.textual_outline_modelled.expect
@@ -3,8 +3,7 @@
 
 class I<X> {}
 
-class M0<X, Y extends Comparable<Y>> extends I<X> {}
-
 class M1 implements I<int> {}
 
 main() {}
+mixin M0<X, Y extends Comparable<Y>> on I<X> {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.expect
index 05a10e7..819871c 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.expect
@@ -8,7 +8,7 @@
 // class A extends M1 with M0 {}
 //                         ^
 // pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:7:13: Context: This is the type variable whose bound isn't conformed to.
-// class M0<X, Y extends Comparable<Y>> extends I<X> {}
+// mixin M0<X, Y extends Comparable<Y>> on I<X> {}
 //             ^
 //
 import self as self;
@@ -29,10 +29,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.modular.expect
index 05a10e7..819871c 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.modular.expect
@@ -8,7 +8,7 @@
 // class A extends M1 with M0 {}
 //                         ^
 // pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:7:13: Context: This is the type variable whose bound isn't conformed to.
-// class M0<X, Y extends Comparable<Y>> extends I<X> {}
+// mixin M0<X, Y extends Comparable<Y>> on I<X> {}
 //             ^
 //
 import self as self;
@@ -29,10 +29,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.outline.expect
index 98c5c87..9d065b1 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.outline.expect
@@ -8,7 +8,7 @@
 // class A extends M1 with M0 {}
 //                         ^
 // pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:7:13: Context: This is the type variable whose bound isn't conformed to.
-// class M0<X, Y extends Comparable<Y>> extends I<X> {}
+// mixin M0<X, Y extends Comparable<Y>> on I<X> {}
 //             ^
 //
 import self as self;
@@ -28,9 +28,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.transformed.expect
index 06c6423..d3a2317 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.weak.transformed.expect
@@ -8,7 +8,7 @@
 // class A extends M1 with M0 {}
 //                         ^
 // pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:7:13: Context: This is the type variable whose bound isn't conformed to.
-// class M0<X, Y extends Comparable<Y>> extends I<X> {}
+// mixin M0<X, Y extends Comparable<Y>> on I<X> {}
 //             ^
 //
 import self as self;
@@ -29,10 +29,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::Comparable<self::M0::Y*>* = core::Comparable<dynamic>*> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart
index 595169f..09bcac5 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart
@@ -4,7 +4,7 @@
 // @dart=2.9
 class I<X> {}
 
-class M0<X, Y extends void Function({String name})> extends I<X> {}
+mixin M0<X, Y extends void Function({String name})> on I<X> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.textual_outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.textual_outline.expect
index 242d773..d90ab5a 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.textual_outline.expect
@@ -1,7 +1,7 @@
 // @dart = 2.9
 class I<X> {}
 
-class M0<X, Y extends void Function({String name})> extends I<X> {}
+mixin M0<X, Y extends void Function({String name})> on I<X> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.textual_outline_modelled.expect
index 58946b1..b7f442c 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.textual_outline_modelled.expect
@@ -3,8 +3,7 @@
 
 class I<X> {}
 
-class M0<X, Y extends void Function({String name})> extends I<X> {}
-
 class M1 implements I<int> {}
 
 main() {}
+mixin M0<X, Y extends void Function({String name})> on I<X> {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.expect
index 4493630..21810ba 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.expect
@@ -17,10 +17,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends ({name: core::String*}) →* void> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends ({name: core::String*}) →* void> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.modular.expect
index 4493630..21810ba 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.modular.expect
@@ -17,10 +17,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends ({name: core::String*}) →* void> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends ({name: core::String*}) →* void> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.outline.expect
index 11c5048..dd9cb86 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.outline.expect
@@ -16,9 +16,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends ({name: core::String*}) →* void> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends ({name: core::String*}) →* void> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.transformed.expect
index 73fbc15..35928d5 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_4.dart.weak.transformed.expect
@@ -17,10 +17,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends ({name: core::String*}) →* void> extends self::I<self::M0::X*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::I::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends ({name: core::String*}) →* void> extends self::I<self::M0::X*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart
index d133805..7d46deb 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart
@@ -6,7 +6,7 @@
 
 class J<X> {}
 
-class M0<X, Y> extends I<X> with J<Y> {}
+mixin M0<X, Y> on I<X>, J<Y> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.textual_outline.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.textual_outline.expect
index 4287c58..5a2f3a0 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.textual_outline.expect
@@ -3,7 +3,7 @@
 
 class J<X> {}
 
-class M0<X, Y> extends I<X> with J<Y> {}
+mixin M0<X, Y> on I<X>, J<Y> {}
 
 class M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.textual_outline_modelled.expect
index b45667f..f60beeb 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.textual_outline_modelled.expect
@@ -5,10 +5,9 @@
 
 class J<X> {}
 
-class M0<X, Y> extends I<X> with J<Y> {}
-
 class M1 implements I<int> {}
 
 class M2 extends M1 implements J<double> {}
 
 main() {}
+mixin M0<X, Y> on I<X>, J<Y> {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.expect
index 4f31d67..42084e3d 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.expect
@@ -32,15 +32,22 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> = self::I<self::_M0&I&J::X*> with self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
+abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object implements self::I<self::_M0&I&J::X*>, self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X*, self::_M0&I&J::Y*>*
-    : super self::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 M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::_M0&I&J::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.modular.expect
index 4f31d67..42084e3d 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.modular.expect
@@ -32,15 +32,22 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> = self::I<self::_M0&I&J::X*> with self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
+abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object implements self::I<self::_M0&I&J::X*>, self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X*, self::_M0&I&J::Y*>*
-    : super self::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 M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::_M0&I&J::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.outline.expect
index 8a6a14b..8b7ce31 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.outline.expect
@@ -30,14 +30,21 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> = self::I<self::_M0&I&J::X*> with self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
+abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object implements self::I<self::_M0&I&J::X*>, self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X*, self::_M0&I&J::Y*>*
-    : super self::I::•()
     ;
+  abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+  abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+  abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+  abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+  abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+  abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+  abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+  abstract member-signature method toString() → core::String*; -> core::Object::toString
+  abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+  abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.transformed.expect
index ec47bee..40101bf 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.weak.transformed.expect
@@ -32,15 +32,22 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::I<self::_M0&I&J::X*> implements self::J<self::_M0&I&J::Y*> /*isAnonymousMixin,isEliminatedMixin*/  {
+abstract class _M0&I&J<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object implements self::I<self::_M0&I&J::X*>, self::J<self::_M0&I&J::Y*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X*, self::_M0&I&J::Y*>*
-    : super self::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 M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> {
-  synthetic constructor •() → self::M0<self::M0::X*, self::M0::Y*>*
-    : super self::_M0&I&J::•()
-    ;
+abstract class M0<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends self::_M0&I&J<self::M0::X*, self::M0::Y*> /*isMixinDeclaration*/  {
 }
 class M1 extends core::Object implements self::I<core::int*> {
   synthetic constructor •() → self::M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.expect
index 012dd24..f6f01f3 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.expect
@@ -1,4 +1,11 @@
 library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart:14:30: Error: The class 'M0' can't be used as a mixin because it extends a class other than 'Object'.
+// class A extends M2<int> with M0 {}
+//                              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.modular.expect
index 012dd24..f6f01f3 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.modular.expect
@@ -1,4 +1,11 @@
 library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart:14:30: Error: The class 'M0' can't be used as a mixin because it extends a class other than 'Object'.
+// class A extends M2<int> with M0 {}
+//                              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.outline.expect
index 7c5b918..14be2ee 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.outline.expect
@@ -1,4 +1,11 @@
 library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart:14:30: Error: The class 'M0' can't be used as a mixin because it extends a class other than 'Object'.
+// class A extends M2<int> with M0 {}
+//                              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.transformed.expect
index 87156aa..04ba48f 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.weak.transformed.expect
@@ -1,4 +1,11 @@
 library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart:14:30: Error: The class 'M0' can't be used as a mixin because it extends a class other than 'Object'.
+// class A extends M2<int> with M0 {}
+//                              ^
+//
 import self as self;
 import "dart:core" as core;
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart
index 0c186dd..a81facd 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart
@@ -6,7 +6,7 @@
 
 class M0<T> extends I<T> {}
 
-class M1<T> extends I<T> {}
+mixin M1<T> on I<T> {}
 
 // M1 is inferred as M1<int>
 class A extends M0<int> with M1 {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.textual_outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.textual_outline.expect
index 5a57d83..bcb4e4e 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.textual_outline.expect
@@ -3,7 +3,7 @@
 
 class M0<T> extends I<T> {}
 
-class M1<T> extends I<T> {}
+mixin M1<T> on I<T> {}
 
 class A extends M0<int> with M1 {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.textual_outline_modelled.expect
index c678ba4..09a302b 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.textual_outline_modelled.expect
@@ -5,6 +5,5 @@
 
 class M0<T> extends I<T> {}
 
-class M1<T> extends I<T> {}
-
 main() {}
+mixin M1<T> on I<T> {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.expect
index 0f8933b..21fbce2 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.expect
@@ -22,10 +22,7 @@
     : super self::I::•()
     ;
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&M0&M1 = self::M0<core::int*> with self::M1<core::int*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.modular.expect
index 0f8933b..21fbce2 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.modular.expect
@@ -22,10 +22,7 @@
     : super self::I::•()
     ;
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&M0&M1 = self::M0<core::int*> with self::M1<core::int*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.outline.expect
index 6944ee0..77a51bc 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.outline.expect
@@ -20,9 +20,7 @@
   synthetic constructor •() → self::M0<self::M0::T*>*
     ;
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&M0&M1 = self::M0<core::int*> with self::M1<core::int*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.transformed.expect
index 9909135..6604f0b 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.weak.transformed.expect
@@ -22,10 +22,7 @@
     : super self::I::•()
     ;
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&M0&M1 extends self::M0<core::int*> implements self::M1<core::int*> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_A&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart
index e061ed7..7f1dff7 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart
@@ -6,9 +6,9 @@
 
 class M0<T> extends I<T> {}
 
-class M1<T> extends I<T> {}
+mixin M1<T> on I<T> {}
 
-class M2<T> extends I<T> {}
+mixin M2<T> on I<T> {}
 
 // M1 is inferred as M1<int>
 // M2 is inferred as M1<int>
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.textual_outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.textual_outline.expect
index 2f58213..8035659 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.textual_outline.expect
@@ -3,9 +3,8 @@
 
 class M0<T> extends I<T> {}
 
-class M1<T> extends I<T> {}
-
-class M2<T> extends I<T> {}
+mixin M1<T> on I<T> {}
+mixin M2<T> on I<T> {}
 
 class A extends M0<int> with M1, M2 {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.textual_outline_modelled.expect
index c2e033d..99cac73 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.textual_outline_modelled.expect
@@ -5,8 +5,6 @@
 
 class M0<T> extends I<T> {}
 
-class M1<T> extends I<T> {}
-
-class M2<T> extends I<T> {}
-
 main() {}
+mixin M1<T> on I<T> {}
+mixin M2<T> on I<T> {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.expect
index d7c017d..ac1a6239 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.expect
@@ -22,15 +22,9 @@
     : super self::I::•()
     ;
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
-class M2<T extends core::Object* = dynamic> extends self::I<self::M2::T*> {
-  synthetic constructor •() → self::M2<self::M2::T*>*
-    : super self::I::•()
-    ;
+abstract class M2<T extends core::Object* = dynamic> extends self::I<self::M2::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&M0&M1 = self::M0<core::int*> with self::M1<core::int*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.modular.expect
index d7c017d..ac1a6239 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.modular.expect
@@ -22,15 +22,9 @@
     : super self::I::•()
     ;
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
-class M2<T extends core::Object* = dynamic> extends self::I<self::M2::T*> {
-  synthetic constructor •() → self::M2<self::M2::T*>*
-    : super self::I::•()
-    ;
+abstract class M2<T extends core::Object* = dynamic> extends self::I<self::M2::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&M0&M1 = self::M0<core::int*> with self::M1<core::int*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.outline.expect
index 1d14b87..6f2e7df 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.outline.expect
@@ -20,13 +20,9 @@
   synthetic constructor •() → self::M0<self::M0::T*>*
     ;
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
-class M2<T extends core::Object* = dynamic> extends self::I<self::M2::T*> {
-  synthetic constructor •() → self::M2<self::M2::T*>*
-    ;
+abstract class M2<T extends core::Object* = dynamic> extends self::I<self::M2::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&M0&M1 = self::M0<core::int*> with self::M1<core::int*> /*isAnonymousMixin*/  {
   synthetic constructor •() → self::_A&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.transformed.expect
index 0b98340..9516020 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.weak.transformed.expect
@@ -22,15 +22,9 @@
     : super self::I::•()
     ;
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
-class M2<T extends core::Object* = dynamic> extends self::I<self::M2::T*> {
-  synthetic constructor •() → self::M2<self::M2::T*>*
-    : super self::I::•()
-    ;
+abstract class M2<T extends core::Object* = dynamic> extends self::I<self::M2::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&M0&M1 extends self::M0<core::int*> implements self::M1<core::int*> /*isAnonymousMixin,isEliminatedMixin*/  {
   synthetic constructor •() → self::_A&M0&M1*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart
index 90b699b..2caa544 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart
@@ -6,7 +6,7 @@
 
 class M0<T> extends Object implements I<T> {}
 
-class M1<T> extends I<T> {}
+mixin M1<T> on I<T> {}
 
 // M0 is inferred as M0<dynamic>
 // Error since class hierarchy is inconsistent
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.textual_outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.textual_outline.expect
index 216611a..e13c203 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.textual_outline.expect
@@ -3,7 +3,7 @@
 
 class M0<T> extends Object implements I<T> {}
 
-class M1<T> extends I<T> {}
+mixin M1<T> on I<T> {}
 
 class A extends Object with M0, M1<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.textual_outline_modelled.expect
index 6a9e2c6..9310f10 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.textual_outline_modelled.expect
@@ -5,6 +5,5 @@
 
 class M0<T> extends Object implements I<T> {}
 
-class M1<T> extends I<T> {}
-
 main() {}
+mixin M1<T> on I<T> {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.expect
index da805eec..d9fbc12 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.expect
@@ -7,6 +7,16 @@
 //       ^
 //
 library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart:13:7: Error: '_A&Object&M0' doesn't implement 'I<int>' so it can't be used with 'M1<int>'.
+//  - 'Object with M0' is from 'pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart'.
+//  - 'I' is from 'pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart'.
+//  - 'M1' is from 'pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart'.
+// class A extends Object with M0, M1<int> {}
+//       ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -40,10 +50,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.modular.expect
index da805eec..d9fbc12 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.modular.expect
@@ -7,6 +7,16 @@
 //       ^
 //
 library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart:13:7: Error: '_A&Object&M0' doesn't implement 'I<int>' so it can't be used with 'M1<int>'.
+//  - 'Object with M0' is from 'pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart'.
+//  - 'I' is from 'pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart'.
+//  - 'M1' is from 'pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart'.
+// class A extends Object with M0, M1<int> {}
+//       ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -40,10 +50,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.outline.expect
index 6d82612..58e02afcb 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.weak.outline.expect
@@ -7,6 +7,16 @@
 //       ^
 //
 library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart:13:7: Error: '_A&Object&M0' doesn't implement 'I<int>' so it can't be used with 'M1<int>'.
+//  - 'Object with M0' is from 'pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart'.
+//  - 'I' is from 'pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart'.
+//  - 'M1' is from 'pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart'.
+// class A extends Object with M0, M1<int> {}
+//       ^
+//
 import self as self;
 import "dart:core" as core;
 
@@ -38,9 +48,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart
index 9fd048e..f602be6 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart
@@ -6,7 +6,7 @@
 
 class M0<T> extends Object implements I<T> {}
 
-class M1<T> extends I<T> {}
+mixin M1<T> on I<T> {}
 
 // M0 is inferred as M0<dynamic> (unconstrained)
 // M1 is inferred as M1<dynamic> (constrained by inferred argument to M0)
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.textual_outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.textual_outline.expect
index db097a6..d8111f8 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.textual_outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.textual_outline.expect
@@ -3,7 +3,7 @@
 
 class M0<T> extends Object implements I<T> {}
 
-class M1<T> extends I<T> {}
+mixin M1<T> on I<T> {}
 
 class A extends Object with M0, M1 implements I<int> {}
 
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.textual_outline_modelled.expect
index c64af1d..158c0b7 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.textual_outline_modelled.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.textual_outline_modelled.expect
@@ -5,6 +5,5 @@
 
 class M0<T> extends Object implements I<T> {}
 
-class M1<T> extends I<T> {}
-
 main() {}
+mixin M1<T> on I<T> {}
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.expect
index 1391478..39d7387 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.expect
@@ -40,10 +40,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.modular.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.modular.expect
index 1391478..39d7387 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.modular.expect
@@ -40,10 +40,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    : super self::I::•()
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.outline.expect
index c419d1d..af04810 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.weak.outline.expect
@@ -38,9 +38,7 @@
   abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
   abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
 }
-class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> {
-  synthetic constructor •() → self::M1<self::M1::T*>*
-    ;
+abstract class M1<T extends core::Object* = dynamic> extends self::I<self::M1::T*> /*isMixinDeclaration*/  {
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> /*isAnonymousMixin,hasConstConstructor*/  {
   const synthetic constructor •() → self::_A&Object&M0*
diff --git a/pkg/scrape/lib/scrape.dart b/pkg/scrape/lib/scrape.dart
index bed0463..19c719c 100644
--- a/pkg/scrape/lib/scrape.dart
+++ b/pkg/scrape/lib/scrape.dart
@@ -247,7 +247,6 @@
 
       // Don't care about cached packages.
       if (entry.path.contains('sdk/third_party/pkg/')) continue;
-      if (entry.path.contains('sdk/third_party/pkg_tested/')) continue;
       if (entry.path.contains('/.dart_tool/')) continue;
 
       // Don't care about generated protobuf code.
diff --git a/pkg/test_runner/lib/src/test_configurations.dart b/pkg/test_runner/lib/src/test_configurations.dart
index e5157fe..5c3dddb 100644
--- a/pkg/test_runner/lib/src/test_configurations.dart
+++ b/pkg/test_runner/lib/src/test_configurations.dart
@@ -28,31 +28,32 @@
 /// simpler to add them to test.dart. Existing test suites should be moved to
 /// here, if possible.
 final testSuiteDirectories = [
-  Path('third_party/pkg/dartdoc'),
   Path('pkg'),
-  Path('third_party/pkg_tested'),
-  Path('runtime/tests/vm'),
-  Path('runtime/observatory/tests/service'),
   Path('runtime/observatory/tests/observatory_ui'),
-  Path('runtime/observatory_2/tests/service_2'),
+  Path('runtime/observatory/tests/service'),
   Path('runtime/observatory_2/tests/observatory_ui_2'),
+  Path('runtime/observatory_2/tests/service_2'),
+  Path('runtime/tests/vm'),
   Path('samples'),
-  Path('samples_2'),
   Path('samples-dev'),
+  Path('samples_2'),
   Path('tests/corelib'),
   Path('tests/corelib_2'),
-  Path('tests/web'),
-  Path('tests/web_2'),
   Path('tests/dartdevc'),
   Path('tests/dartdevc_2'),
+  Path('tests/ffi'),
+  Path('tests/ffi_2'),
   Path('tests/language'),
   Path('tests/language_2'),
   Path('tests/lib'),
   Path('tests/lib_2'),
   Path('tests/standalone'),
   Path('tests/standalone_2'),
-  Path('tests/ffi'),
-  Path('tests/ffi_2'),
+  Path('tests/web'),
+  Path('tests/web_2'),
+  Path('third_party/pkg/dart_style'),
+  Path('third_party/pkg/dartdoc'),
+  Path('third_party/pkg/package_config'),
   Path('utils/tests/peg'),
 ];
 
diff --git a/pkg/vm/test/incremental_compiler_test.dart b/pkg/vm/test/incremental_compiler_test.dart
index 6e0473c..0e6735f 100644
--- a/pkg/vm/test/incremental_compiler_test.dart
+++ b/pkg/vm/test/incremental_compiler_test.dart
@@ -302,7 +302,7 @@
       main.writeAsStringSync("""
       import 'lib.dart';
       main() => print(foo());
-      class C1 extends Object with C2, C3 {
+      class C1 extends Object with C3, C2 {
         c1method() {
           print("c1");
         }
@@ -318,7 +318,7 @@
       import 'main.dart';
       foo() => 'foo';
       main() => print('bar');
-      class C2 extends Object with C3 {
+      mixin C2 on C3 {
         c2method() {
           print("c2");
         }
diff --git a/pkg/vm/testcases/transformations/to_string_transformer/lib/main.dart b/pkg/vm/testcases/transformations/to_string_transformer/lib/main.dart
index aa53235..6ac3080 100644
--- a/pkg/vm/testcases/transformations/to_string_transformer/lib/main.dart
+++ b/pkg/vm/testcases/transformations/to_string_transformer/lib/main.dart
@@ -30,9 +30,9 @@
 @keepToStringInSubtypes
 class Base1 {}
 
-class Base2 extends Base1 {}
+mixin Base2 on Base1 {}
 
-class Base3 extends Object with Base2 {}
+class Base3 extends Object with Base1, Base2 {}
 
 class KeepInherited implements Base3 {
   @override
diff --git a/pkg/vm/testcases/transformations/to_string_transformer/not_transformed.expect b/pkg/vm/testcases/transformations/to_string_transformer/not_transformed.expect
index 5a3a770..39a0384 100644
--- a/pkg/vm/testcases/transformations/to_string_transformer/not_transformed.expect
+++ b/pkg/vm/testcases/transformations/to_string_transformer/not_transformed.expect
@@ -45,19 +45,21 @@
     : super core::Object::•()
     ;
 }
-class Base2 extends self::Base1 {
-  synthetic constructor •() → self::Base2
-    : super self::Base1::•()
-    ;
+abstract class Base2 extends self::Base1 /*isMixinDeclaration*/  {
 }
-abstract class _Base3&Object&Base2 extends core::Object implements self::Base2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_Base3&Object&Base2
+abstract class _Base3&Object&Base1 extends core::Object implements self::Base1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_Base3&Object&Base1
     : super core::Object::•()
     ;
 }
-class Base3 extends self::_Base3&Object&Base2 {
+abstract class _Base3&Object&Base1&Base2 extends self::_Base3&Object&Base1 implements self::Base2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_Base3&Object&Base1&Base2
+    : super self::_Base3&Object&Base1::•()
+    ;
+}
+class Base3 extends self::_Base3&Object&Base1&Base2 {
   synthetic constructor •() → self::Base3
-    : super self::_Base3&Object&Base2::•()
+    : super self::_Base3&Object&Base1&Base2::•()
     ;
 }
 class KeepInherited extends core::Object implements self::Base3 {
diff --git a/pkg/vm/testcases/transformations/to_string_transformer/transformed.expect b/pkg/vm/testcases/transformations/to_string_transformer/transformed.expect
index 250e52d..d48dc28 100644
--- a/pkg/vm/testcases/transformations/to_string_transformer/transformed.expect
+++ b/pkg/vm/testcases/transformations/to_string_transformer/transformed.expect
@@ -45,19 +45,21 @@
     : super core::Object::•()
     ;
 }
-class Base2 extends self::Base1 {
-  synthetic constructor •() → self::Base2
-    : super self::Base1::•()
-    ;
+abstract class Base2 extends self::Base1 /*isMixinDeclaration*/  {
 }
-abstract class _Base3&Object&Base2 extends core::Object implements self::Base2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
-  const synthetic constructor •() → self::_Base3&Object&Base2
+abstract class _Base3&Object&Base1 extends core::Object implements self::Base1 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_Base3&Object&Base1
     : super core::Object::•()
     ;
 }
-class Base3 extends self::_Base3&Object&Base2 {
+abstract class _Base3&Object&Base1&Base2 extends self::_Base3&Object&Base1 implements self::Base2 /*isAnonymousMixin,isEliminatedMixin,hasConstConstructor*/  {
+  const synthetic constructor •() → self::_Base3&Object&Base1&Base2
+    : super self::_Base3&Object&Base1::•()
+    ;
+}
+class Base3 extends self::_Base3&Object&Base1&Base2 {
   synthetic constructor •() → self::Base3
-    : super self::_Base3&Object&Base2::•()
+    : super self::_Base3&Object&Base1&Base2::•()
     ;
 }
 class KeepInherited extends core::Object implements self::Base3 {
diff --git a/runtime/tests/concurrency/stress_test_list.json b/runtime/tests/concurrency/stress_test_list.json
index 9761651..e7bec95 100644
--- a/runtime/tests/concurrency/stress_test_list.json
+++ b/runtime/tests/concurrency/stress_test_list.json
@@ -1669,7 +1669,6 @@
     "../../../tests/language/mixin/illegal_static_access_runtime_test.dart",
     "../../../tests/language/mixin/illegal_super_use_runtime_test.dart",
     "../../../tests/language/mixin/illegal_superclass_runtime_test.dart",
-    "../../../tests/language/mixin/illegal_superclass_test.dart",
     "../../../tests/language/mixin/implements2_test.dart",
     "../../../tests/language/mixin/implements_test.dart",
     "../../../tests/language/mixin/implicit_covariance_test.dart",
@@ -5116,7 +5115,6 @@
     "../../../tests/language_2/mixin/illegal_static_access_runtime_test.dart",
     "../../../tests/language_2/mixin/illegal_super_use_runtime_test.dart",
     "../../../tests/language_2/mixin/illegal_superclass_runtime_test.dart",
-    "../../../tests/language_2/mixin/illegal_superclass_test.dart",
     "../../../tests/language_2/mixin/implements2_test.dart",
     "../../../tests/language_2/mixin/implements_test.dart",
     "../../../tests/language_2/mixin/implicit_covariance_test.dart",
diff --git a/runtime/vm/mixin_test.cc b/runtime/vm/mixin_test.cc
index e359730..ef361c2 100644
--- a/runtime/vm/mixin_test.cc
+++ b/runtime/vm/mixin_test.cc
@@ -17,7 +17,7 @@
       "class A {\n"
       "  _bar() => 42;\n"
       "}\n"
-      "class M extends A {\n"
+      "mixin M on A {\n"
       "  bar() => -1;\n"
       "}\n"
       "class B extends A {\n"
@@ -66,7 +66,7 @@
       "  foo() => 4;\n"
       "  _bar() => 42;\n"
       "}\n"
-      "class M extends A {\n"
+      "mixin M on A {\n"
       "  bar() => -1;\n"
       "}\n"
       "class B extends A {\n"
diff --git a/tests/language/mixin/illegal_superclass_test.dart b/tests/language/mixin/illegal_superclass_test.dart
index c1e1e0c..a1b5b8f 100644
--- a/tests/language/mixin/illegal_superclass_test.dart
+++ b/tests/language/mixin/illegal_superclass_test.dart
@@ -19,57 +19,87 @@
 class C02 = S0 with M2;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C03 = S0 with M0, M1;
 class C04 = S0 with M0, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C05 = S0 with M2, M0;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C06 = S0 with M1, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C07 = S0 with M2, M1;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class C10 = S1 with M0;
 class C11 = S1 with M1;
 class C12 = S1 with M2;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C13 = S1 with M0, M1;
 class C14 = S1 with M0, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C15 = S1 with M2, M0;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C16 = S1 with M1, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C17 = S1 with M2, M1;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class C20 = S2 with M0;
 class C21 = S2 with M1;
 class C22 = S2 with M2;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C23 = S2 with M0, M1;
 class C24 = S2 with M0, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C25 = S2 with M2, M0;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C26 = S2 with M1, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C27 = S2 with M2, M1;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class D00 extends S0 with M0 {}
 
@@ -78,19 +108,29 @@
 class D02 extends S0 with M2 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D03 extends S0 with M0, M1 {}
 class D04 extends S0 with M0, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D05 extends S0 with M2, M0 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D06 extends S0 with M1, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D07 extends S0 with M2, M1 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class D10 extends S1 with M0 {}
 
@@ -99,19 +139,29 @@
 class D12 extends S1 with M2 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D13 extends S1 with M0, M1 {}
 class D14 extends S1 with M0, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D15 extends S1 with M2, M0 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D16 extends S1 with M1, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D17 extends S1 with M2, M1 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class D20 extends S2 with M0 {}
 
@@ -120,19 +170,29 @@
 class D22 extends S2 with M2 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D23 extends S2 with M0, M1 {}
 class D24 extends S2 with M0, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D25 extends S2 with M2, M0 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D26 extends S2 with M1, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D27 extends S2 with M2, M1 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 main() {
   new C00();
diff --git a/tests/language_2/mixin/illegal_superclass_test.dart b/tests/language_2/mixin/illegal_superclass_test.dart
index 56427b5..9290955 100644
--- a/tests/language_2/mixin/illegal_superclass_test.dart
+++ b/tests/language_2/mixin/illegal_superclass_test.dart
@@ -21,57 +21,87 @@
 class C02 = S0 with M2;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C03 = S0 with M0, M1;
 class C04 = S0 with M0, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C05 = S0 with M2, M0;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C06 = S0 with M1, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C07 = S0 with M2, M1;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class C10 = S1 with M0;
 class C11 = S1 with M1;
 class C12 = S1 with M2;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C13 = S1 with M0, M1;
 class C14 = S1 with M0, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C15 = S1 with M2, M0;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C16 = S1 with M1, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C17 = S1 with M2, M1;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class C20 = S2 with M0;
 class C21 = S2 with M1;
 class C22 = S2 with M2;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C23 = S2 with M0, M1;
 class C24 = S2 with M0, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C25 = S2 with M2, M0;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C26 = S2 with M1, M2;
 //                      ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 25, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class C27 = S2 with M2, M1;
 //                  ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 21, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class D00 extends S0 with M0 {}
 
@@ -80,19 +110,29 @@
 class D02 extends S0 with M2 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D03 extends S0 with M0, M1 {}
 class D04 extends S0 with M0, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D05 extends S0 with M2, M0 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D06 extends S0 with M1, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D07 extends S0 with M2, M1 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class D10 extends S1 with M0 {}
 
@@ -101,19 +141,29 @@
 class D12 extends S1 with M2 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D13 extends S1 with M0, M1 {}
 class D14 extends S1 with M0, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D15 extends S1 with M2, M0 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D16 extends S1 with M1, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D17 extends S1 with M2, M1 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 class D20 extends S2 with M0 {}
 
@@ -122,19 +172,29 @@
 class D22 extends S2 with M2 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D23 extends S2 with M0, M1 {}
 class D24 extends S2 with M0, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D25 extends S2 with M2, M0 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D26 extends S2 with M1, M2 { }
 //                            ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 31, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 class D27 extends S2 with M2, M1 { }
 //                        ^^
 // [analyzer] COMPILE_TIME_ERROR.MIXIN_INHERITS_FROM_NOT_OBJECT
+// [error column 27, length 0]
+// [cfe] The class 'M2' can't be used as a mixin because it extends a class other than 'Object'.
 
 main() {
   new C00();
diff --git a/third_party/.gitignore b/third_party/.gitignore
index 779e818c..9207a95 100644
--- a/third_party/.gitignore
+++ b/third_party/.gitignore
@@ -4,7 +4,6 @@
 # except for our files in boringssl.  The checkout is in boringssl/src.
 !.gitignore
 !pkg
-!pkg_tested
 !/tcmalloc
 !d8
 !firefox_jsshell
diff --git a/third_party/pkg_tested/OWNERS b/third_party/pkg_tested/OWNERS
deleted file mode 100644
index e1e4bf0..0000000
--- a/third_party/pkg_tested/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-# Test status file
-per-file pkg_tested.status=file:/tools/OWNERS_ENG
diff --git a/third_party/pkg_tested/pkg_tested.status b/third_party/pkg_tested/pkg_tested.status
deleted file mode 100644
index 5fb6028..0000000
--- a/third_party/pkg_tested/pkg_tested.status
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (c) 2014, 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.
-
-# Don't run any test-like files that show up in packages directories. It
-# shouldn't be necessary to run "pub install" in these packages, but if you do
-# it shouldn't break the tests.
-*/*/*/*/*/packages/*/*: Skip
-*/*/*/*/packages/*/*: Skip
-*/*/*/packages/*/*: Skip
-*/*/packages/*/*: Skip
-*/packages/*/*: Skip
-
-[ $runtime == vm ]
-http_io/test/http_cross_process_test: Skip # Fails with --no-preview-dart-2
-http_io/test/http_proxy_advanced_test: Pass, RuntimeError # flaky
-http_io/test/http_proxy_test: Pass, RuntimeError # flaky
-
-[ $browser ]
-dart_style/*: SkipByDesign
-pub/*: SkipByDesign
-
-[ $runtime == vm && $system == windows ]
-pub/test/run/app_can_read_from_stdin_test: Fail # Issue 19448
-pub/test/run/forwards_signal_posix_test: SkipByDesign
-
-[ $runtime == vm && ($arch == simarm || $arch == simarm64 || $arch == simarm64c || $arch == simriscv32 || $arch == simriscv64 || $builder_tag == asan || $mode == debug) ]
-dart_style/test/command_line_test: Skip # The test controller does not take into account that tests take much longer in debug mode or on simulators.
-dart_style/test/formatter_test: Skip # The test controller does not take into account that tests take much longer in debug mode or on simulators.
-
-[ $compiler == dart2js || $compiler == dartdevc || $compiler == dartdevk ]
-http_io/*: SkipByDesign
diff --git a/tools/VERSION b/tools/VERSION
index 8c03cac..04f9938 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 184
+PRERELEASE 185
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index b202057..d0f40b6 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -7,7 +7,6 @@
       ".dart_tool/package_config.json",
       "pkg/",
       "third_party/pkg/",
-      "third_party/pkg_tested/",
       "tools/",
       "out/ReleaseX64/dart-sdk/",
       "xcodebuild/ReleaseX64/dart-sdk/"
@@ -50,7 +49,6 @@
       "third_party/babel/babel.min.js",
       "third_party/d8/",
       "third_party/pkg/",
-      "third_party/pkg_tested/",
       "third_party/requirejs/",
       "tools/",
       "xcodebuild/ReleaseIA32/dart-sdk/",
@@ -87,7 +85,6 @@
       "third_party/babel/babel.min.js",
       "third_party/d8/",
       "third_party/pkg/",
-      "third_party/pkg_tested/",
       "third_party/requirejs/",
       "tools/",
       "xcodebuild/ReleaseIA32/dart-sdk/",
@@ -134,7 +131,6 @@
       "tests/ffi_2/",
       "third_party/d8/",
       "third_party/pkg/",
-      "third_party/pkg_tested/",
       "third_party/requirejs/",
       "tools/",
       "xcodebuild/ReleaseIA32/dart",
@@ -173,7 +169,6 @@
       "tests/ffi/",
       "third_party/d8/",
       "third_party/pkg/",
-      "third_party/pkg_tested/",
       "third_party/requirejs/",
       "tools/",
       "xcodebuild/ReleaseX64/dart",
@@ -212,7 +207,6 @@
       "tests/ffi/",
       "third_party/d8/",
       "third_party/pkg/",
-      "third_party/pkg_tested/",
       "third_party/requirejs/",
       "tools/",
       "xcodebuild/ReleaseX64/dart"
@@ -258,7 +252,6 @@
       "tests/ffi_2/",
       "third_party/d8/",
       "third_party/pkg/",
-      "third_party/pkg_tested/",
       "third_party/requirejs/",
       "tools/",
       "xcodebuild/ReleaseIA32/",
@@ -268,7 +261,6 @@
       "runtime/tools/dartfuzz/",
       "out/",
       "third_party/pkg/",
-      "third_party/pkg_tested/",
       "tools/sdks/dart-sdk/",
       "pkg/_fe_analyzer_shared/",
       "pkg/async_helper/",
@@ -299,7 +291,6 @@
       "third_party/devtools/",
       "third_party/webdriver/",
       "third_party/pkg/",
-      "third_party/pkg_tested/",
       "tests/.dart_tool/package_config.json",
       "tests/angular/",
       "tests/co19/co19-analyzer.status",
@@ -3721,10 +3712,11 @@
           ]
         },
         {
-          "name": "third_party pkg_tested unit tests",
+          "name": "third_party tested packages",
           "arguments": [
             "-nunittest-asserts-${mode}-${system}",
-            "pkg_tested"
+            "dart_style",
+            "package_config"
           ]
         },
         {
@@ -3760,10 +3752,11 @@
           ]
         },
         {
-          "name": "third_party pkg_tested unit tests",
+          "name": "third_party tested packages",
           "arguments": [
             "-nunittest-asserts-${mode}-${system}-arm64",
-            "pkg_tested"
+            "dart_style",
+            "package_config"
           ]
         },
         {
@@ -3800,10 +3793,11 @@
           ]
         },
         {
-          "name": "third_party pkg_tested unit tests",
+          "name": "third_party tested packages",
           "arguments": [
             "-nunittest-asserts-${mode}-${system}",
-            "pkg_tested"
+            "dart_style",
+            "package_config"
           ]
         },
         {
diff --git a/tools/bots/try_benchmarks.sh b/tools/bots/try_benchmarks.sh
index 4d758ec..20258a0 100755
--- a/tools/bots/try_benchmarks.sh
+++ b/tools/bots/try_benchmarks.sh
@@ -152,7 +152,6 @@
       sdk \
       samples-dev/swarm \
       third_party/pkg \
-      third_party/pkg_tested \
       .dart_tool/package_config.json \
       pkg \
       benchmarks \
@@ -300,7 +299,6 @@
       sdk \
       samples-dev/swarm \
       third_party/pkg \
-      third_party/pkg_tested \
       .dart_tool/package_config.json \
       pkg \
       benchmarks \
diff --git a/tools/generate_package_config.dart b/tools/generate_package_config.dart
index 7771bf7..3c7de74 100644
--- a/tools/generate_package_config.dart
+++ b/tools/generate_package_config.dart
@@ -17,7 +17,6 @@
   var packageDirs = [
     ...listSubdirectories(platform('pkg')),
     ...listSubdirectories(platform('third_party/pkg')),
-    ...listSubdirectories(platform('third_party/pkg_tested')),
     platform('pkg/vm_service/test/test_package'),
     platform(
         'runtime/observatory_2/tests/service_2/observatory_test_package_2'),
@@ -105,8 +104,7 @@
         'governed by a BSD-style license that can be found in the LICENSE file.',
       ],
       'comment': [
-        'Package configuration for all packages in pkg/, third_party/pkg/, and',
-        'third_party/pkg_tested/',
+        'Package configuration for all packages in pkg/ and third_party/pkg/',
       ],
     },
   );
diff --git a/tools/package_deps/bin/package_deps.dart b/tools/package_deps/bin/package_deps.dart
index 3cf437c..20e2370 100644
--- a/tools/package_deps/bin/package_deps.dart
+++ b/tools/package_deps/bin/package_deps.dart
@@ -69,10 +69,9 @@
     print('SDK DEPS');
     print('');
 
-    List<String> deps = [...sdkDeps.pkgs, ...sdkDeps.testedPkgs]..sort();
+    List<String> deps = [...sdkDeps.pkgs]..sort();
     for (var pkg in deps) {
-      final tested = sdkDeps.testedPkgs.contains(pkg);
-      print('package:$pkg${tested ? ' [tested]' : ''}');
+      print('package:$pkg');
     }
 
     // TODO(devoncarew): Find unused entries in the DEPS file.
@@ -421,7 +420,6 @@
   final File file;
 
   List<String> pkgs = [];
-  List<String> testedPkgs = [];
 
   final Map<String, ResolvedDep> _resolvedPackageVersions = {};
 
@@ -440,22 +438,15 @@
     // Var("dart_root") + "/third_party/pkg/dart2js_info":
     final pkgRegExp = RegExp(r'"/third_party/pkg/(\S+)"');
 
-    // Var("dart_root") + "/third_party/pkg_tested/dart_style":
-    final testedPkgRegExp = RegExp(r'"/third_party/pkg_tested/(\S+)"');
-
     for (var line in file.readAsLinesSync()) {
       var pkgDep = pkgRegExp.firstMatch(line);
-      var testedPkgDep = testedPkgRegExp.firstMatch(line);
 
       if (pkgDep != null) {
         pkgs.add(pkgDep.group(1)!);
-      } else if (testedPkgDep != null) {
-        testedPkgs.add(testedPkgDep.group(1)!);
       }
     }
 
     pkgs.sort();
-    testedPkgs.sort();
   }
 
   void _parseRepoPackageVersions() {
@@ -464,7 +455,6 @@
     _findPackages(Directory(path.join('third_party', 'pkg')));
     _findPackages(
         Directory(path.join('third_party', 'pkg', 'file', 'packages')));
-    _findPackages(Directory(path.join('third_party', 'pkg_tested')));
 
     if (verbose) {
       print('Package versions in the SDK:');
diff --git a/tools/rev_sdk_deps.dart b/tools/rev_sdk_deps.dart
index c9cbb5e..6897ae2 100644
--- a/tools/rev_sdk_deps.dart
+++ b/tools/rev_sdk_deps.dart
@@ -114,8 +114,7 @@
         rev: (entry.value as Map)['rev'],
       );
     }).where((PackageDependency deps) {
-      return deps.entry.startsWith('sdk/third_party/pkg/') ||
-          deps.entry.startsWith('sdk/third_party/pkg_tested/');
+      return deps.entry.startsWith('sdk/third_party/pkg/');
     }).where((PackageDependency deps) {
       return !pinned.contains(deps.name);
     }).toList();
