Version 3.9.0-179.0.dev

Merge 2b5b551cfbcea199714d0b46c5edd4c2cd52e644 into dev
diff --git a/DEPS b/DEPS
index 5bcbc1f..1e735dc 100644
--- a/DEPS
+++ b/DEPS
@@ -129,7 +129,7 @@
   ### /third_party/pkg dependencies
   # 'tools/rev_sdk_deps.dart' will rev pkg dependencies to their latest; put an
   # EOL comment after a dependency to instead pin at the current revision.
-  "ai_rev": "93a9191b6eed79d24fc5d3ec9b514f71c888fc41",
+  "ai_rev": "47fa2fcf476a905b316282d9351e4ed063755ead",
   "core_rev": "635dfa32c261ba078438b74de397f2207904ca78", # https://github.com/dart-lang/core/pull/734
   "dartdoc_rev": "8e6a95c4aba8def4ef01ccc600b3a3cfb8f3cb9e",
   "ecosystem_rev": "815d4ba2e7d11f8695a26f6cbe1262e3b8ff8d0d",
diff --git a/pkg/_fe_analyzer_shared/analysis_options.yaml b/pkg/_fe_analyzer_shared/analysis_options.yaml
index 8579d9b..aab7f10 100644
--- a/pkg/_fe_analyzer_shared/analysis_options.yaml
+++ b/pkg/_fe_analyzer_shared/analysis_options.yaml
@@ -10,6 +10,7 @@
     - annotate_overrides
     - collection_methods_unrelated_type
     - curly_braces_in_flow_control_structures
+    - discarded_futures
     - prefer_adjacent_string_concatenation
     - unawaited_futures
     - recursive_getters
diff --git a/pkg/analyzer/analysis_options.yaml b/pkg/analyzer/analysis_options.yaml
index 4b9db4e..324647e 100644
--- a/pkg/analyzer/analysis_options.yaml
+++ b/pkg/analyzer/analysis_options.yaml
@@ -53,6 +53,7 @@
     - avoid_dynamic_calls
     - avoid_redundant_argument_values
     - avoid_unused_constructor_parameters
+    - discarded_futures
     - flutter_style_todos
     - unawaited_futures
     - unnecessary_breaks
diff --git a/pkg/analyzer/lib/file_system/memory_file_system.dart b/pkg/analyzer/lib/file_system/memory_file_system.dart
index d2cb846..017b01a 100644
--- a/pkg/analyzer/lib/file_system/memory_file_system.dart
+++ b/pkg/analyzer/lib/file_system/memory_file_system.dart
@@ -631,12 +631,14 @@
     void setupWatcher() {
       var watchers = provider._pathToWatchers[path] ??= [];
       watchers.add(streamController);
-      streamController.done.then((_) {
-        watchers.remove(streamController);
-        if (watchers.isEmpty) {
-          provider._pathToWatchers.remove(path);
-        }
-      });
+      unawaited(
+        streamController.done.then((_) {
+          watchers.remove(streamController);
+          if (watchers.isEmpty) {
+            provider._pathToWatchers.remove(path);
+          }
+        }),
+      );
       ready.complete();
       if (provider.emitPathNotFoundExceptionsForPaths.contains(path)) {
         streamController.addError(
diff --git a/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart b/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart
index bf6a744..9d84321 100644
--- a/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/analysis_context_collection.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 'dart:async';
+
 import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
 import 'package:analyzer/dart/analysis/declared_variables.dart';
 import 'package:analyzer/file_system/file_system.dart';
@@ -70,7 +72,7 @@
     if (scheduler == null) {
       scheduler = AnalysisDriverScheduler(performanceLog);
       if (drainStreams) {
-        scheduler.events.drain<void>();
+        unawaited(scheduler.events.drain<void>());
       }
       scheduler.start();
     }
diff --git a/pkg/analyzer/lib/src/dart/analysis/context_builder.dart b/pkg/analyzer/lib/src/dart/analysis/context_builder.dart
index 3d1d6af..338d08d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/context_builder.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/context_builder.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 'dart:async';
+
 import 'package:analyzer/dart/analysis/context_root.dart';
 import 'package:analyzer/dart/analysis/declared_variables.dart';
 import 'package:analyzer/file_system/file_system.dart';
@@ -179,7 +181,7 @@
     // AnalysisDriver reports results into streams.
     // We need to drain these streams to avoid memory leak.
     if (drainStreams) {
-      driver.exceptions.drain<void>();
+      unawaited(driver.exceptions.drain<void>());
     }
 
     return analysisContext;
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 086b37d..dfbf27c 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -2559,7 +2559,7 @@
       throw StateError('The scheduler has already been started.');
     }
     _started = true;
-    _run();
+    unawaited(_run());
   }
 
   /// Return a future that will be completed the next time the status is idle.
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart b/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart
index 16227d9..a634753 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart
@@ -2,6 +2,7 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
+import 'dart:async';
 import 'dart:io';
 import 'dart:isolate';
 import 'dart:typed_data';
@@ -37,7 +38,7 @@
 
   EvictingFileByteStore(this._cachePath, this._maxSizeBytes)
     : _fileByteStore = FileByteStore(_cachePath) {
-    _requestCacheCleanUp();
+    unawaited(_requestCacheCleanUp());
   }
 
   @override
@@ -49,7 +50,7 @@
     // Update the current size.
     _bytesWrittenSinceCleanup += bytes.length;
     if (_bytesWrittenSinceCleanup > _maxSizeBytes ~/ 8) {
-      _requestCacheCleanUp();
+      unawaited(_requestCacheCleanUp());
     }
     return bytes;
   }
@@ -300,12 +301,14 @@
   void _run(Future Function() fn) {
     _available--;
 
-    fn().whenComplete(() {
-      _available++;
+    unawaited(
+      fn().whenComplete(() {
+        _available++;
 
-      if (waiting.isNotEmpty) {
-        _run(waiting.removeAt(0));
-      }
-    });
+        if (waiting.isNotEmpty) {
+          _run(waiting.removeAt(0));
+        }
+      }),
+    );
   }
 }
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index d32077f..8459e0a 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -12125,7 +12125,7 @@
 
 /// Description for a single property in the node implementation.
 ///
-/// Most of these description refer to properties of the public interface,
+/// Most of these descriptions refer to properties of the public interface,
 /// e.g. `Foo` in `class FooImpl extends BarImpl implements Baz, Foo`.
 class GenerateNodeProperty {
   final String name;
@@ -12146,12 +12146,23 @@
   /// Obviously, these are always paired with [isSuper].
   final bool superNullAssertOverride;
 
-  /// Sometimes we use [Token.lexicallyFirst], and want to describe which
-  /// group of tokens to use.
+  /// If the parser can recover from tokens in a group of keyword tokens
+  /// being in wrong order, each keyword's property in the group should be
+  /// marked with the same non-null value for this field. The generated code
+  /// for [AstNode.beginToken] or
+  /// [AnnotatedNode.firstTokenAfterCommentAndMetadata] will use
+  /// [Token.lexicallyFirst] to identify which keyword in the group appears
+  /// first.
+  ///
+  /// Only meaningful when applied to token properties; all properties with
+  /// the same [tokenGroupId] should appear consecutively in the
+  /// `childEntitiesOrder` list.
   final int? tokenGroupId;
 
-  /// If the property does not exist in the public interface, we still need
-  /// to know its type.
+  /// The type of the property.
+  ///
+  /// If the property is declared in the public API, this doesn't need to be
+  /// specified (because it can be inferred from the public API declaration).
   final Type? type;
 
   const GenerateNodeProperty(
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 7040b1b..542b443 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -4489,6 +4489,7 @@
 
   @override
   List<FieldElementImpl2> get fields {
+    globalResultRequirements?.record_instanceElement_fields(element: this);
     _readMembers();
     return firstFragment.fields.map((e) => e.asElement2).toList();
   }
@@ -4502,6 +4503,7 @@
 
   @override
   List<GetterElementImpl> get getters {
+    globalResultRequirements?.record_instanceElement_getters(element: this);
     _readMembers();
     return firstFragment.getters.map((e) => e.element).toList();
   }
@@ -4557,6 +4559,7 @@
 
   @override
   List<SetterElementImpl> get setters {
+    globalResultRequirements?.record_instanceElement_setters(element: this);
     _readMembers();
     return firstFragment.setters.map((e) => e.element).toList();
   }
@@ -4586,7 +4589,15 @@
       name: name,
     );
 
-    return fields.firstWhereOrNull((e) => e.name3 == name);
+    return globalResultRequirements.withoutRecording(
+      reason: r'''
+The result depends only on the requested field, which we have already
+recorded above.
+''',
+      operation: () {
+        return fields.firstWhereOrNull((e) => e.name3 == name);
+      },
+    );
   }
 
   @Deprecated('Use getField instead')
@@ -4601,7 +4612,15 @@
       name: name,
     );
 
-    return getters.firstWhereOrNull((e) => e.name3 == name);
+    return globalResultRequirements.withoutRecording(
+      reason: r'''
+The result depends only on the requested getter, which we have already
+recorded above.
+''',
+      operation: () {
+        return getters.firstWhereOrNull((e) => e.name3 == name);
+      },
+    );
   }
 
   @Deprecated('Use getGetter instead')
@@ -4639,7 +4658,15 @@
       name: name,
     );
 
-    return setters.firstWhereOrNull((e) => e.name3 == name);
+    return globalResultRequirements.withoutRecording(
+      reason: r'''
+The result depends only on the requested setter, which we have already
+recorded above.
+''',
+      operation: () {
+        return setters.firstWhereOrNull((e) => e.name3 == name);
+      },
+    );
   }
 
   @Deprecated('Use getSetter instead')
diff --git a/pkg/analyzer/lib/src/fine/requirement_failure.dart b/pkg/analyzer/lib/src/fine/requirement_failure.dart
index dc457ec..1416fce 100644
--- a/pkg/analyzer/lib/src/fine/requirement_failure.dart
+++ b/pkg/analyzer/lib/src/fine/requirement_failure.dart
@@ -44,6 +44,22 @@
   ExportLibraryMissing({required this.uri});
 }
 
+class InstanceChildrenIdsMismatch extends RequirementFailure {
+  final Uri libraryUri;
+  final LookupName instanceName;
+  final String childrenPropertyName;
+  final ManifestItemIdList expectedIds;
+  final ManifestItemIdList actualIds;
+
+  InstanceChildrenIdsMismatch({
+    required this.libraryUri,
+    required this.instanceName,
+    required this.childrenPropertyName,
+    required this.expectedIds,
+    required this.actualIds,
+  });
+}
+
 class InstanceFieldIdMismatch extends RequirementFailure {
   final Uri libraryUri;
   final LookupName interfaceName;
@@ -76,20 +92,6 @@
   });
 }
 
-class InstanceMethodIdsMismatch extends RequirementFailure {
-  final Uri libraryUri;
-  final LookupName interfaceName;
-  final ManifestItemIdList expectedIds;
-  final ManifestItemIdList actualIds;
-
-  InstanceMethodIdsMismatch({
-    required this.libraryUri,
-    required this.interfaceName,
-    required this.expectedIds,
-    required this.actualIds,
-  });
-}
-
 class InterfaceConstructorIdMismatch extends RequirementFailure {
   final Uri libraryUri;
   final LookupName interfaceName;
diff --git a/pkg/analyzer/lib/src/fine/requirements.dart b/pkg/analyzer/lib/src/fine/requirements.dart
index 3015341..5bd1325 100644
--- a/pkg/analyzer/lib/src/fine/requirements.dart
+++ b/pkg/analyzer/lib/src/fine/requirements.dart
@@ -202,6 +202,9 @@
   final Map<LookupName, ManifestItemId?> requestedSetters;
   final Map<LookupName, ManifestItemId?> requestedMethods;
 
+  ManifestItemIdList? allDeclaredFields;
+  ManifestItemIdList? allDeclaredGetters;
+  ManifestItemIdList? allDeclaredSetters;
   ManifestItemIdList? allDeclaredMethods;
 
   InstanceItemRequirements({
@@ -209,6 +212,9 @@
     required this.requestedGetters,
     required this.requestedSetters,
     required this.requestedMethods,
+    required this.allDeclaredFields,
+    required this.allDeclaredGetters,
+    required this.allDeclaredSetters,
     required this.allDeclaredMethods,
   });
 
@@ -218,6 +224,9 @@
       requestedGetters: {},
       requestedSetters: {},
       requestedMethods: {},
+      allDeclaredFields: null,
+      allDeclaredGetters: null,
+      allDeclaredSetters: null,
       allDeclaredMethods: null,
     );
   }
@@ -228,6 +237,9 @@
       requestedGetters: reader.readNameToIdMap(),
       requestedSetters: reader.readNameToIdMap(),
       requestedMethods: reader.readNameToIdMap(),
+      allDeclaredFields: ManifestItemIdList.readOptional(reader),
+      allDeclaredGetters: ManifestItemIdList.readOptional(reader),
+      allDeclaredSetters: ManifestItemIdList.readOptional(reader),
       allDeclaredMethods: ManifestItemIdList.readOptional(reader),
     );
   }
@@ -237,6 +249,9 @@
     sink.writeNameToIdMap(requestedGetters);
     sink.writeNameToIdMap(requestedSetters);
     sink.writeNameToIdMap(requestedMethods);
+    allDeclaredFields.writeOptional(sink);
+    allDeclaredGetters.writeOptional(sink);
+    allDeclaredSetters.writeOptional(sink);
     allDeclaredMethods.writeOptional(sink);
   }
 }
@@ -510,13 +525,56 @@
           }
         }
 
+        if (requirements.allDeclaredFields case var required?) {
+          var actualItems = instanceItem.declaredFields.values;
+          var actualIds = actualItems.map((item) => item.id);
+          if (!required.equalToIterable(actualIds)) {
+            return InstanceChildrenIdsMismatch(
+              libraryUri: libraryUri,
+              instanceName: instanceName,
+              childrenPropertyName: 'fields',
+              expectedIds: required,
+              actualIds: ManifestItemIdList(actualIds.toList()),
+            );
+          }
+        }
+
+        if (requirements.allDeclaredGetters case var required?) {
+          var actualItems = instanceItem.declaredGetters.values;
+          var actualIds = actualItems.map((item) => item.id);
+          if (!required.equalToIterable(actualIds)) {
+            return InstanceChildrenIdsMismatch(
+              libraryUri: libraryUri,
+              instanceName: instanceName,
+              childrenPropertyName: 'getters',
+              expectedIds: required,
+              actualIds: ManifestItemIdList(actualIds.toList()),
+            );
+          }
+        }
+
+        if (requirements.allDeclaredSetters case var required?) {
+          var actualItems = instanceItem.declaredSetters.values;
+          var actualIds = actualItems.map((item) => item.id);
+          if (!required.equalToIterable(actualIds)) {
+            return InstanceChildrenIdsMismatch(
+              libraryUri: libraryUri,
+              instanceName: instanceName,
+              childrenPropertyName: 'setters',
+              expectedIds: required,
+              actualIds: ManifestItemIdList(actualIds.toList()),
+            );
+          }
+        }
+
         if (requirements.allDeclaredMethods case var required?) {
           var actualItems = instanceItem.declaredMethods.values;
           var actualIds = actualItems.map((item) => item.id);
           if (!required.equalToIterable(actualIds)) {
-            return InstanceMethodIdsMismatch(
+            return InstanceChildrenIdsMismatch(
               libraryUri: libraryUri,
-              interfaceName: instanceName,
+              instanceName: instanceName,
+              childrenPropertyName: 'methods',
               expectedIds: required,
               actualIds: ManifestItemIdList(actualIds.toList()),
             );
@@ -641,6 +699,24 @@
     }
   }
 
+  void record_instanceElement_fields({required InstanceElementImpl2 element}) {
+    if (_recordingLockLevel != 0) {
+      return;
+    }
+
+    var itemRequirements = _getInstanceItem(element);
+    if (itemRequirements == null) {
+      return;
+    }
+
+    var item = itemRequirements.item;
+    var requirements = itemRequirements.requirements;
+
+    requirements.allDeclaredFields ??= ManifestItemIdList(
+      item.declaredFields.values.map((item) => item.id).toList(),
+    );
+  }
+
   void record_instanceElement_getField({
     required InstanceElementImpl2 element,
     required String name,
@@ -710,6 +786,24 @@
     requirements.requestedSetters[methodName] = methodId;
   }
 
+  void record_instanceElement_getters({required InstanceElementImpl2 element}) {
+    if (_recordingLockLevel != 0) {
+      return;
+    }
+
+    var itemRequirements = _getInstanceItem(element);
+    if (itemRequirements == null) {
+      return;
+    }
+
+    var item = itemRequirements.item;
+    var requirements = itemRequirements.requirements;
+
+    requirements.allDeclaredGetters ??= ManifestItemIdList(
+      item.declaredGetters.values.map((item) => item.id).toList(),
+    );
+  }
+
   void record_instanceElement_methods({required InstanceElementImpl2 element}) {
     if (_recordingLockLevel != 0) {
       return;
@@ -728,6 +822,24 @@
     );
   }
 
+  void record_instanceElement_setters({required InstanceElementImpl2 element}) {
+    if (_recordingLockLevel != 0) {
+      return;
+    }
+
+    var itemRequirements = _getInstanceItem(element);
+    if (itemRequirements == null) {
+      return;
+    }
+
+    var item = itemRequirements.item;
+    var requirements = itemRequirements.requirements;
+
+    requirements.allDeclaredSetters ??= ManifestItemIdList(
+      item.declaredSetters.values.map((item) => item.id).toList(),
+    );
+  }
+
   void record_interface_all({required InterfaceElementImpl2 element}) {
     var itemRequirements = _getInterfaceItem(element);
     if (itemRequirements == null) {
diff --git a/pkg/analyzer/lib/src/workspace/blaze_watcher.dart b/pkg/analyzer/lib/src/workspace/blaze_watcher.dart
index be84a0f..442f140 100644
--- a/pkg/analyzer/lib/src/workspace/blaze_watcher.dart
+++ b/pkg/analyzer/lib/src/workspace/blaze_watcher.dart
@@ -317,10 +317,10 @@
       _toIsolatePort.send(BlazeWatcherShutdownIsolate());
     }
     if (_isolateIsStarting) {
-      _fromIsolateSubscription.cancel();
+      unawaited(_fromIsolateSubscription.cancel());
       _fromIsolatePort.close();
     }
-    _events.close();
+    unawaited(_events.close());
   }
 
   void startWatching(String workspace, BlazeSearchInfo info) {
@@ -363,11 +363,13 @@
   void _startIsolateIfNeeded() {
     if (_isolateIsStarting) return;
     _isolateIsStarting = true;
-    _startIsolateImpl();
-    _isolateHasStarted.future.then((_) {
-      _buffer.forEach(_toIsolatePort.send);
-      _buffer.clear();
-    });
+    unawaited(_startIsolateImpl());
+    unawaited(
+      _isolateHasStarted.future.then((_) {
+        _buffer.forEach(_toIsolatePort.send);
+        _buffer.clear();
+      }),
+    );
   }
 
   Future<void> _startIsolateImpl() async {
diff --git a/pkg/analyzer/test/file_system/physical_resource_provider_watch_test.dart b/pkg/analyzer/test/file_system/physical_resource_provider_watch_test.dart
index 24decfb..31e21b7 100644
--- a/pkg/analyzer/test/file_system/physical_resource_provider_watch_test.dart
+++ b/pkg/analyzer/test/file_system/physical_resource_provider_watch_test.dart
@@ -154,7 +154,7 @@
       var subscription = file.watch().changes.listen(changesReceived.add);
       // Delay running the rest of the test to allow file.changes propagate.
       return _delayed(() => test(changesReceived)).whenComplete(() {
-        subscription.cancel();
+        unawaited(subscription.cancel());
       });
     });
   }
@@ -177,7 +177,7 @@
       // won't be able to reliably distinguish new files from modified
       // ones.
       return _delayed(() => test(changesReceived)).whenComplete(() {
-        subscription.cancel();
+        unawaited(subscription.cancel());
       });
     });
   }
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 08782e8..1b8bb5e 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -7941,9 +7941,10 @@
 [operation] readLibraryCycleBundle
   package:test/test.dart
 [operation] getErrorsCannotReuse
-  instanceMethodIdsMismatch
+  instanceChildrenIdsMismatch
     libraryUri: package:test/a.dart
-    interfaceName: A
+    instanceName: A
+    childrenPropertyName: methods
     expectedIds: #M1
     actualIds: #M1 #M3
 [operation] analyzeFile
@@ -15389,6 +15390,538 @@
     );
   }
 
+  test_dependency_instanceElement_fields_add() async {
+    _ManualRequirements.install((state) {
+      var A = state.singleUnit.scopeInstanceElement('A');
+      A.fields;
+    });
+
+    await _runChangeScenarioTA(
+      initialA: r'''
+class A {
+  static final int foo = 0;
+}
+''',
+      testCode: r'''
+import 'a.dart';
+''',
+      operation: _FineOperationTestFileGetErrors(),
+      expectedInitialEvents: r'''
+[status] working
+[operation] linkLibraryCycle SDK
+[future] getErrors T1
+  ErrorsResult #0
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredFields
+          foo: #M1
+        declaredGetters
+          foo: #M2
+        interface: #M3
+  requirements
+    topLevels
+      dart:core
+        int: #M4
+[operation] linkLibraryCycle
+  package:test/test.dart
+  requirements
+[operation] analyzeFile
+  file: /home/test/lib/test.dart
+  library: /home/test/lib/test.dart
+[stream]
+  ResolvedUnitResult #1
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: exists isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredFields: #M1
+[status] idle
+''',
+      updatedA: r'''
+class A {
+  static final int foo = 0;
+  static final int bar = 0;
+}
+''',
+      expectedUpdatedEvents: r'''
+[status] working
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredFields
+          bar: #M5
+          foo: #M1
+        declaredGetters
+          bar: #M6
+          foo: #M2
+        interface: #M3
+  requirements
+    topLevels
+      dart:core
+        int: #M4
+[future] getErrors T2
+  ErrorsResult #2
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] readLibraryCycleBundle
+  package:test/test.dart
+[operation] getErrorsCannotReuse
+  instanceChildrenIdsMismatch
+    libraryUri: package:test/a.dart
+    instanceName: A
+    childrenPropertyName: fields
+    expectedIds: #M1
+    actualIds: #M1 #M5
+[operation] analyzeFile
+  file: /home/test/lib/test.dart
+  library: /home/test/lib/test.dart
+[stream]
+  ResolvedUnitResult #3
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: exists isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredFields: #M1 #M5
+[status] idle
+''',
+    );
+  }
+
+  test_dependency_instanceElement_getters_add() async {
+    _ManualRequirements.install((state) {
+      var A = state.singleUnit.scopeInstanceElement('A');
+      A.getters;
+    });
+
+    await _runChangeScenarioTA(
+      initialA: r'''
+class A {
+  int get foo => 0;
+}
+''',
+      testCode: r'''
+import 'a.dart';
+''',
+      operation: _FineOperationTestFileGetErrors(),
+      expectedInitialEvents: r'''
+[status] working
+[operation] linkLibraryCycle SDK
+[future] getErrors T1
+  ErrorsResult #0
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredFields
+          foo: #M1
+        declaredGetters
+          foo: #M2
+        interface: #M3
+          map
+            foo: #M2
+  requirements
+    topLevels
+      dart:core
+        int: #M4
+[operation] linkLibraryCycle
+  package:test/test.dart
+  requirements
+[operation] analyzeFile
+  file: /home/test/lib/test.dart
+  library: /home/test/lib/test.dart
+[stream]
+  ResolvedUnitResult #1
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: exists isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredGetters: #M2
+[status] idle
+''',
+      updatedA: r'''
+class A {
+  int get foo => 0;
+  int get bar => 0;
+}
+''',
+      expectedUpdatedEvents: r'''
+[status] working
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredFields
+          bar: #M5
+          foo: #M1
+        declaredGetters
+          bar: #M6
+          foo: #M2
+        interface: #M7
+          map
+            bar: #M6
+            foo: #M2
+  requirements
+    topLevels
+      dart:core
+        int: #M4
+[future] getErrors T2
+  ErrorsResult #2
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] readLibraryCycleBundle
+  package:test/test.dart
+[operation] getErrorsCannotReuse
+  instanceChildrenIdsMismatch
+    libraryUri: package:test/a.dart
+    instanceName: A
+    childrenPropertyName: getters
+    expectedIds: #M2
+    actualIds: #M2 #M6
+[operation] analyzeFile
+  file: /home/test/lib/test.dart
+  library: /home/test/lib/test.dart
+[stream]
+  ResolvedUnitResult #3
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: exists isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredGetters: #M2 #M6
+[status] idle
+''',
+    );
+  }
+
+  test_dependency_instanceElement_methods_add() async {
+    _ManualRequirements.install((state) {
+      var A = state.singleUnit.scopeInstanceElement('A');
+      A.methods;
+    });
+
+    await _runChangeScenarioTA(
+      initialA: r'''
+class A {
+  void foo() {}
+}
+''',
+      testCode: r'''
+import 'a.dart';
+''',
+      operation: _FineOperationTestFileGetErrors(),
+      expectedInitialEvents: r'''
+[status] working
+[operation] linkLibraryCycle SDK
+[future] getErrors T1
+  ErrorsResult #0
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredMethods
+          foo: #M1
+        interface: #M2
+          map
+            foo: #M1
+  requirements
+[operation] linkLibraryCycle
+  package:test/test.dart
+  requirements
+[operation] analyzeFile
+  file: /home/test/lib/test.dart
+  library: /home/test/lib/test.dart
+[stream]
+  ResolvedUnitResult #1
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: exists isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredMethods: #M1
+[status] idle
+''',
+      updatedA: r'''
+class A {
+  void foo() {}
+  void bar() {}
+}
+''',
+      expectedUpdatedEvents: r'''
+[status] working
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredMethods
+          bar: #M3
+          foo: #M1
+        interface: #M4
+          map
+            bar: #M3
+            foo: #M1
+  requirements
+[future] getErrors T2
+  ErrorsResult #2
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] readLibraryCycleBundle
+  package:test/test.dart
+[operation] getErrorsCannotReuse
+  instanceChildrenIdsMismatch
+    libraryUri: package:test/a.dart
+    instanceName: A
+    childrenPropertyName: methods
+    expectedIds: #M1
+    actualIds: #M1 #M3
+[operation] analyzeFile
+  file: /home/test/lib/test.dart
+  library: /home/test/lib/test.dart
+[stream]
+  ResolvedUnitResult #3
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: exists isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredMethods: #M1 #M3
+[status] idle
+''',
+    );
+  }
+
+  test_dependency_instanceElement_setters_add() async {
+    _ManualRequirements.install((state) {
+      var A = state.singleUnit.scopeInstanceElement('A');
+      A.setters;
+    });
+
+    await _runChangeScenarioTA(
+      initialA: r'''
+class A {
+  set foo(int _) {}
+}
+''',
+      testCode: r'''
+import 'a.dart';
+''',
+      operation: _FineOperationTestFileGetErrors(),
+      expectedInitialEvents: r'''
+[status] working
+[operation] linkLibraryCycle SDK
+[future] getErrors T1
+  ErrorsResult #0
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredFields
+          foo: #M1
+        declaredSetters
+          foo=: #M2
+        interface: #M3
+          map
+            foo=: #M2
+  requirements
+    topLevels
+      dart:core
+        int: #M4
+[operation] linkLibraryCycle
+  package:test/test.dart
+  requirements
+[operation] analyzeFile
+  file: /home/test/lib/test.dart
+  library: /home/test/lib/test.dart
+[stream]
+  ResolvedUnitResult #1
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: exists isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredSetters: #M2
+[status] idle
+''',
+      updatedA: r'''
+class A {
+  set foo(int _) {}
+  set bar(int _) {}
+}
+''',
+      expectedUpdatedEvents: r'''
+[status] working
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredFields
+          bar: #M5
+          foo: #M1
+        declaredSetters
+          bar=: #M6
+          foo=: #M2
+        interface: #M7
+          map
+            bar=: #M6
+            foo=: #M2
+  requirements
+    topLevels
+      dart:core
+        int: #M4
+[future] getErrors T2
+  ErrorsResult #2
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] readLibraryCycleBundle
+  package:test/test.dart
+[operation] getErrorsCannotReuse
+  instanceChildrenIdsMismatch
+    libraryUri: package:test/a.dart
+    instanceName: A
+    childrenPropertyName: setters
+    expectedIds: #M2
+    actualIds: #M2 #M6
+[operation] analyzeFile
+  file: /home/test/lib/test.dart
+  library: /home/test/lib/test.dart
+[stream]
+  ResolvedUnitResult #3
+    path: /home/test/lib/test.dart
+    uri: package:test/test.dart
+    flags: exists isLibrary
+    errors
+      7 +8 UNUSED_IMPORT
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredSetters: #M2 #M6
+[status] idle
+''',
+    );
+  }
+
   test_dependency_mixin_getter_inherited_fromGeneric_on_changeTypeArgument() async {
     configuration.withStreamResolvedUnitResults = false;
     await _runChangeScenarioTA(
@@ -45471,6 +46004,59 @@
     );
   }
 
+  test_req_instanceElement_fields() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+class A {
+  static final int foo = 0;
+}
+''');
+
+    newFile(testFile.path, r'''
+import 'a.dart';
+''');
+
+    _ManualRequirements.install((state) {
+      var A = state.singleUnit.scopeInstanceElement('A');
+      A.fields;
+    });
+
+    await _runManualRequirementsRecording(
+      expectedEvents: r'''
+[status] working
+[operation] linkLibraryCycle SDK
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredFields
+          foo: #M1
+        declaredGetters
+          foo: #M2
+        interface: #M3
+  requirements
+    topLevels
+      dart:core
+        int: #M4
+[operation] linkLibraryCycle
+  package:test/test.dart
+  requirements
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredFields: #M1
+[status] idle
+''',
+    );
+  }
+
   test_req_instanceElement_getField() async {
     newFile('$testPackageLibPath/a.dart', r'''
 class A {
@@ -45851,6 +46437,61 @@
     );
   }
 
+  test_req_instanceElement_getters() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+class A {
+  int get foo => 0;
+}
+''');
+
+    newFile(testFile.path, r'''
+import 'a.dart';
+''');
+
+    _ManualRequirements.install((state) {
+      var A = state.singleUnit.scopeInstanceElement('A');
+      A.getters;
+    });
+
+    await _runManualRequirementsRecording(
+      expectedEvents: r'''
+[status] working
+[operation] linkLibraryCycle SDK
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredFields
+          foo: #M1
+        declaredGetters
+          foo: #M2
+        interface: #M3
+          map
+            foo: #M2
+  requirements
+    topLevels
+      dart:core
+        int: #M4
+[operation] linkLibraryCycle
+  package:test/test.dart
+  requirements
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredGetters: #M2
+[status] idle
+''',
+    );
+  }
+
   test_req_instanceElement_methods() async {
     newFile('$testPackageLibPath/a.dart', r'''
 class A {
@@ -46021,6 +46662,61 @@
     );
   }
 
+  test_req_instanceElement_setters() async {
+    newFile('$testPackageLibPath/a.dart', r'''
+class A {
+  set foo(int _) {}
+}
+''');
+
+    newFile(testFile.path, r'''
+import 'a.dart';
+''');
+
+    _ManualRequirements.install((state) {
+      var A = state.singleUnit.scopeInstanceElement('A');
+      A.setters;
+    });
+
+    await _runManualRequirementsRecording(
+      expectedEvents: r'''
+[status] working
+[operation] linkLibraryCycle SDK
+[operation] linkLibraryCycle
+  package:test/a.dart
+    declaredClasses
+      A: #M0
+        declaredFields
+          foo: #M1
+        declaredSetters
+          foo=: #M2
+        interface: #M3
+          map
+            foo=: #M2
+  requirements
+    topLevels
+      dart:core
+        int: #M4
+[operation] linkLibraryCycle
+  package:test/test.dart
+  requirements
+[operation] analyzedLibrary
+  file: /home/test/lib/test.dart
+  requirements
+    topLevels
+      dart:core
+        A: <null>
+      package:test/a.dart
+        A: #M0
+    instances
+      package:test/a.dart
+        A
+          allDeclaredSetters: #M2
+[status] idle
+''',
+    );
+  }
+
   test_req_interfaceElement_getConstructor_named() async {
     newFile('$testPackageLibPath/a.dart', r'''
 class A {
diff --git a/pkg/analyzer/test/src/dart/analysis/result_printer.dart b/pkg/analyzer/test/src/dart/analysis/result_printer.dart
index 9a49e03..43c74b6 100644
--- a/pkg/analyzer/test/src/dart/analysis/result_printer.dart
+++ b/pkg/analyzer/test/src/dart/analysis/result_printer.dart
@@ -111,44 +111,59 @@
     sink.writeElements('instances', libEntries, (libEntry) {
       var interfaceEntries = libEntry.value.sorted;
       sink.writeElements('${libEntry.key}', interfaceEntries, (instanceEntry) {
+        var instanceRequirements = instanceEntry.value;
         sink.writelnWithIndent(instanceEntry.key.asString);
+
         sink.withIndent(() {
-          sink.writeElements(
+          void writeRequested(
+            String name,
+            Map<LookupName, ManifestItemId?> nameToIdMap,
+          ) {
+            sink.writeElements(name, nameToIdMap.sorted, _writeNamedId);
+          }
+
+          writeRequested(
             'requestedFields',
-            instanceEntry.value.requestedFields.sorted,
-            _writeNamedId,
+            instanceRequirements.requestedFields,
           );
-        });
-        sink.withIndent(() {
-          sink.writeElements(
+          writeRequested(
             'requestedGetters',
-            instanceEntry.value.requestedGetters.sorted,
-            _writeNamedId,
+            instanceRequirements.requestedGetters,
           );
-        });
-        sink.withIndent(() {
-          sink.writeElements(
+          writeRequested(
             'requestedSetters',
-            instanceEntry.value.requestedSetters.sorted,
-            _writeNamedId,
+            instanceRequirements.requestedSetters,
           );
-        });
-        sink.withIndent(() {
-          sink.writeElements(
+          writeRequested(
             'requestedMethods',
-            instanceEntry.value.requestedMethods.sorted,
-            _writeNamedId,
+            instanceRequirements.requestedMethods,
           );
         });
 
         sink.withIndent(() {
-          var idList = instanceEntry.value.allDeclaredMethods;
-          if (idList != null) {
-            if (idList.ids.isNotEmpty) {
+          void writeAllDeclared(String name, ManifestItemIdList? idList) {
+            if (idList != null && idList.ids.isNotEmpty) {
               var idListStr = idList.asString(idProvider);
-              sink.writelnWithIndent('allDeclaredMethods: $idListStr');
+              sink.writelnWithIndent('$name: $idListStr');
             }
           }
+
+          writeAllDeclared(
+            'allDeclaredFields',
+            instanceRequirements.allDeclaredFields,
+          );
+          writeAllDeclared(
+            'allDeclaredGetters',
+            instanceRequirements.allDeclaredGetters,
+          );
+          writeAllDeclared(
+            'allDeclaredSetters',
+            instanceRequirements.allDeclaredSetters,
+          );
+          writeAllDeclared(
+            'allDeclaredMethods',
+            instanceRequirements.allDeclaredMethods,
+          );
         });
       });
     });
@@ -501,11 +516,12 @@
           'expectedId': idProvider.manifestId(failure.expectedId),
           'actualId': idProvider.manifestId(failure.actualId),
         });
-      case InstanceMethodIdsMismatch():
-        sink.writelnWithIndent('instanceMethodIdsMismatch');
+      case InstanceChildrenIdsMismatch():
+        sink.writelnWithIndent('instanceChildrenIdsMismatch');
         sink.writeProperties({
           'libraryUri': failure.libraryUri,
-          'interfaceName': failure.interfaceName.asString,
+          'instanceName': failure.instanceName.asString,
+          'childrenPropertyName': failure.childrenPropertyName,
           'expectedIds': failure.expectedIds.asString(idProvider),
           'actualIds': failure.actualIds.asString(idProvider),
         });
diff --git a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
index 829a59d..f131a08 100644
--- a/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
+++ b/pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart
@@ -1040,8 +1040,8 @@
 ''');
   }
 
-  test_errors_hasNullSuffix() {
-    assertErrorsInCode(
+  Future<void> test_errors_hasNullSuffix() async {
+    await assertErrorsInCode(
       r'''
 String f(Map<int, String> a) {
   return a[0];
diff --git a/pkg/analyzer/test/src/diagnostics/analysis_options/include_file_not_found_test.dart b/pkg/analyzer/test/src/diagnostics/analysis_options/include_file_not_found_test.dart
index 4849900..c6331e0 100644
--- a/pkg/analyzer/test/src/diagnostics/analysis_options/include_file_not_found_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/analysis_options/include_file_not_found_test.dart
@@ -15,8 +15,8 @@
 
 @reflectiveTest
 class IncludeFileNotFoundTest extends AbstractAnalysisOptionsTest {
-  void test_notFound_existent_doubleQuoted() {
-    assertErrorsInCode(
+  Future<void> test_notFound_existent_doubleQuoted() async {
+    await assertErrorsInCode(
       '''
 include: "./analysis_options.yaml"
 ''',
@@ -24,8 +24,8 @@
     );
   }
 
-  void test_notFound_existent_notQuoted() {
-    assertErrorsInCode(
+  Future<void> test_notFound_existent_notQuoted() async {
+    await assertErrorsInCode(
       '''
 include: ./analysis_options.yaml
 ''',
@@ -33,8 +33,8 @@
     );
   }
 
-  void test_notFound_existent_singleQuoted() {
-    assertErrorsInCode(
+  Future<void> test_notFound_existent_singleQuoted() async {
+    await assertErrorsInCode(
       '''
 include: './analysis_options.yaml'
 ''',
@@ -42,8 +42,8 @@
     );
   }
 
-  void test_notFound_nonexistent_doubleQuoted() {
-    assertErrorsInCode(
+  Future<void> test_notFound_nonexistent_doubleQuoted() async {
+    await assertErrorsInCode(
       '''
 # We don't depend on pedantic, but we should consider adding it.
 include: "package:pedantic/analysis_options.yaml"
@@ -61,8 +61,8 @@
     );
   }
 
-  void test_notFound_nonexistent_notQuoted() {
-    assertErrorsInCode(
+  Future<void> test_notFound_nonexistent_notQuoted() async {
+    await assertErrorsInCode(
       '''
 # We don't depend on pedantic, but we should consider adding it.
 include: package:pedantic/analysis_options.yaml
@@ -80,8 +80,8 @@
     );
   }
 
-  void test_notFound_nonexistent_singleQuoted() {
-    assertErrorsInCode(
+  Future<void> test_notFound_nonexistent_singleQuoted() async {
+    await assertErrorsInCode(
       '''
 # We don't depend on pedantic, but we should consider adding it.
 include: 'package:pedantic/analysis_options.yaml'
diff --git a/pkg/analyzer/test/src/diagnostics/analysis_options/include_file_warning_test.dart b/pkg/analyzer/test/src/diagnostics/analysis_options/include_file_warning_test.dart
index 9d0d0a4..932ba9f 100644
--- a/pkg/analyzer/test/src/diagnostics/analysis_options/include_file_warning_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/analysis_options/include_file_warning_test.dart
@@ -15,12 +15,12 @@
 
 @reflectiveTest
 class IncludeFileWarningTest extends AbstractAnalysisOptionsTest {
-  void test_fileWarning() {
+  Future<void> test_fileWarning() async {
     newFile('/a.yaml', '''
 analyzer:
   something: bad
 ''');
-    assertErrorsInCode(
+    await assertErrorsInCode(
       '''
 include: a.yaml
 ''',
diff --git a/pkg/analyzer/test/src/diagnostics/analysis_options/recursive_include_file_test.dart b/pkg/analyzer/test/src/diagnostics/analysis_options/recursive_include_file_test.dart
index 735e8fdc..51cff61 100644
--- a/pkg/analyzer/test/src/diagnostics/analysis_options/recursive_include_file_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/analysis_options/recursive_include_file_test.dart
@@ -15,8 +15,8 @@
 
 @reflectiveTest
 class RecursiveIncludeFileTest extends AbstractAnalysisOptionsTest {
-  void test_itself() {
-    assertErrorsInCode(
+  Future<void> test_itself() async {
+    await assertErrorsInCode(
       '''
 include: analysis_options.yaml
 ''',
@@ -33,8 +33,8 @@
     );
   }
 
-  void test_itself_inList() {
-    assertErrorsInCode(
+  Future<void> test_itself_inList() async {
+    await assertErrorsInCode(
       '''
 include:
   - analysis_options.yaml
@@ -52,14 +52,14 @@
     );
   }
 
-  void test_recursive() {
+  Future<void> test_recursive() async {
     newFile('/a.yaml', '''
 include: b.yaml
 ''');
     newFile('/b.yaml', '''
 include: analysis_options.yaml
 ''');
-    assertErrorsInCode(
+    await assertErrorsInCode(
       '''
 include: a.yaml
 ''',
@@ -76,11 +76,11 @@
     );
   }
 
-  void test_recursive_itself() {
+  Future<void> test_recursive_itself() async {
     newFile('/a.yaml', '''
 include: a.yaml
 ''');
-    assertErrorsInCode(
+    await assertErrorsInCode(
       '''
 include: a.yaml
 ''',
@@ -98,7 +98,7 @@
     );
   }
 
-  void test_recursive_listAtTop() {
+  Future<void> test_recursive_listAtTop() async {
     newFile('/a.yaml', '''
 include: b.yaml
 ''');
@@ -107,7 +107,7 @@
 ''');
     newFile('/empty.yaml', '''
 ''');
-    assertErrorsInCode(
+    await assertErrorsInCode(
       '''
 include:
   - empty.yaml
@@ -126,7 +126,7 @@
     );
   }
 
-  void test_recursive_listIncluded() {
+  Future<void> test_recursive_listIncluded() async {
     newFile('/a.yaml', '''
 include:
   - empty.yaml
@@ -137,7 +137,7 @@
 ''');
     newFile('/empty.yaml', '''
 ''');
-    assertErrorsInCode(
+    await assertErrorsInCode(
       '''
 include: a.yaml
 ''',
@@ -154,14 +154,14 @@
     );
   }
 
-  void test_recursive_notInBeginning() {
+  Future<void> test_recursive_notInBeginning() async {
     newFile('/a.yaml', '''
 include: b.yaml
 ''');
     newFile('/b.yaml', '''
 include: a.yaml
 ''');
-    assertErrorsInCode(
+    await assertErrorsInCode(
       '''
 include: a.yaml
 ''',
diff --git a/pkg/analyzer/test/src/options/options_rule_validator_test.dart b/pkg/analyzer/test/src/options/options_rule_validator_test.dart
index dae7c8e..c8c76e3 100644
--- a/pkg/analyzer/test/src/options/options_rule_validator_test.dart
+++ b/pkg/analyzer/test/src/options/options_rule_validator_test.dart
@@ -46,26 +46,26 @@
 @reflectiveTest
 class OptionsRuleValidatorIncludedFileTest extends AbstractAnalysisOptionsTest
     with OptionsRuleValidatorTestMixin {
-  test_deprecated_rule_inInclude_ok() {
+  Future<void> test_deprecated_rule_inInclude_ok() async {
     newFile('/included.yaml', '''
 linter:
   rules:
     - deprecated_lint
 ''');
 
-    assertErrorsInCode('''
+    await assertErrorsInCode('''
 include: included.yaml
 ''', []);
   }
 
-  test_removed_rule_inInclude_ok() {
+  Future<void> test_removed_rule_inInclude_ok() async {
     newFile('/included.yaml', '''
 linter:
   rules:
     - removed_in_2_12_lint
 ''');
 
-    assertErrorsInCode('''
+    await assertErrorsInCode('''
 include: included.yaml
 ''', []);
   }
diff --git a/pkg/analyzer_utilities/lib/testing/tree_string_sink.dart b/pkg/analyzer_utilities/lib/testing/tree_string_sink.dart
index 71d0bfd..5ef214d 100644
--- a/pkg/analyzer_utilities/lib/testing/tree_string_sink.dart
+++ b/pkg/analyzer_utilities/lib/testing/tree_string_sink.dart
@@ -37,7 +37,7 @@
     }
   }
 
-  Future<void> writeFlags(Map<String, bool> flags) async {
+  void writeFlags(Map<String, bool> flags) {
     if (flags.values.any((flag) => flag)) {
       writeIndentedLine(() {
         write('flags:');
diff --git a/pkg/dynamic_modules/test/data/apply_mixin/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/apply_mixin/dynamic_interface.yaml
index 5f8fe58..408d80d 100644
--- a/pkg/dynamic_modules/test/data/apply_mixin/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/apply_mixin/dynamic_interface.yaml
@@ -8,6 +8,7 @@
     class: 'M'
 
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'M'
   - library: 'shared/shared_old.dart'
diff --git a/pkg/dynamic_modules/test/data/closure_invocation/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/closure_invocation/dynamic_interface.yaml
index 170d41d..306d570 100644
--- a/pkg/dynamic_modules/test/data/closure_invocation/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/closure_invocation/dynamic_interface.yaml
@@ -2,4 +2,5 @@
 # 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.
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
diff --git a/pkg/dynamic_modules/test/data/closure_shapes/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/closure_shapes/dynamic_interface.yaml
index dd66d2c..306d570 100644
--- a/pkg/dynamic_modules/test/data/closure_shapes/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/closure_shapes/dynamic_interface.yaml
@@ -2,9 +2,5 @@
 # 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.
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
-  - library: 'dart:core'
-    class: ['int', 'num', 'Object']
-  - library: 'dart:core'
-    class: 'pragma'
-    member: '_'
diff --git a/pkg/dynamic_modules/test/data/const_body/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/const_body/dynamic_interface.yaml
index af5bccc..d2c7a2e 100644
--- a/pkg/dynamic_modules/test/data/const_body/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/const_body/dynamic_interface.yaml
@@ -3,6 +3,7 @@
 # BSD-style license that can be found in the LICENSE file.
 
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'B'
     member: ''
diff --git a/pkg/dynamic_modules/test/data/const_constructor/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/const_constructor/dynamic_interface.yaml
index 629e158..31bce6e 100644
--- a/pkg/dynamic_modules/test/data/const_constructor/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/const_constructor/dynamic_interface.yaml
@@ -3,4 +3,5 @@
 # BSD-style license that can be found in the LICENSE file.
 
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
diff --git a/pkg/dynamic_modules/test/data/const_mixin_class/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/const_mixin_class/dynamic_interface.yaml
index 43360b9..fc10e25 100644
--- a/pkg/dynamic_modules/test/data/const_mixin_class/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/const_mixin_class/dynamic_interface.yaml
@@ -3,5 +3,6 @@
 # BSD-style license that can be found in the LICENSE file.
 
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'Foo'
diff --git a/pkg/dynamic_modules/test/data/core_api/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/core_api/dynamic_interface.yaml
index 1d4541b..80c55a6 100644
--- a/pkg/dynamic_modules/test/data/core_api/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/core_api/dynamic_interface.yaml
@@ -2,6 +2,7 @@
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE file.
 callable:
+  - library: 'dart:core'
   - library: 'package:expect/expect.dart'
     class: 'Expect'
     member: 'equals'
diff --git a/pkg/dynamic_modules/test/data/duplicate_library/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/duplicate_library/dynamic_interface.yaml
index 669288a..f6b9d69 100644
--- a/pkg/dynamic_modules/test/data/duplicate_library/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/duplicate_library/dynamic_interface.yaml
@@ -2,3 +2,5 @@
 # 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.
 
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/dyn_module_type_checks/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/dyn_module_type_checks/dynamic_interface.yaml
index 0f4eba1..d48fa10 100644
--- a/pkg/dynamic_modules/test/data/dyn_module_type_checks/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/dyn_module_type_checks/dynamic_interface.yaml
@@ -12,6 +12,7 @@
 
 # TODO(sigmund): consider implying this for all extendable types.
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'Base'
   - library: 'shared/shared.dart'
diff --git a/pkg/dynamic_modules/test/data/enum/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/enum/dynamic_interface.yaml
index 06879fe..28673b6 100644
--- a/pkg/dynamic_modules/test/data/enum/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/enum/dynamic_interface.yaml
@@ -2,3 +2,5 @@
 # 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.
 
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/extend_class/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/extend_class/dynamic_interface.yaml
index 97b226d..962d1c5 100644
--- a/pkg/dynamic_modules/test/data/extend_class/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/extend_class/dynamic_interface.yaml
@@ -12,6 +12,7 @@
 
 # TODO(sigmund): consider implying this for all extendable types.
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'Base'
     member: ''
diff --git a/pkg/dynamic_modules/test/data/extend_class2/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/extend_class2/dynamic_interface.yaml
index 97b226d..962d1c5 100644
--- a/pkg/dynamic_modules/test/data/extend_class2/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/extend_class2/dynamic_interface.yaml
@@ -12,6 +12,7 @@
 
 # TODO(sigmund): consider implying this for all extendable types.
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'Base'
     member: ''
diff --git a/pkg/dynamic_modules/test/data/extend_class_dyn_only/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/extend_class_dyn_only/dynamic_interface.yaml
index ee6e384..28673b6 100644
--- a/pkg/dynamic_modules/test/data/extend_class_dyn_only/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/extend_class_dyn_only/dynamic_interface.yaml
@@ -1,3 +1,6 @@
 # Copyright (c) 2025, 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.
+
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/extend_class_generics/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/extend_class_generics/dynamic_interface.yaml
index 296804a..f6dd13a 100644
--- a/pkg/dynamic_modules/test/data/extend_class_generics/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/extend_class_generics/dynamic_interface.yaml
@@ -12,6 +12,7 @@
 
 # TODO(sigmund): consider implying this for all extendable types.
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'Base'
     member: ''
diff --git a/pkg/dynamic_modules/test/data/extension_type/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/extension_type/dynamic_interface.yaml
index 629e158..31bce6e 100644
--- a/pkg/dynamic_modules/test/data/extension_type/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/extension_type/dynamic_interface.yaml
@@ -3,4 +3,5 @@
 # BSD-style license that can be found in the LICENSE file.
 
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
diff --git a/pkg/dynamic_modules/test/data/extension_type2/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/extension_type2/dynamic_interface.yaml
index 629e158..31bce6e 100644
--- a/pkg/dynamic_modules/test/data/extension_type2/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/extension_type2/dynamic_interface.yaml
@@ -3,4 +3,5 @@
 # BSD-style license that can be found in the LICENSE file.
 
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
diff --git a/pkg/dynamic_modules/test/data/generic_static_tearoff/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/generic_static_tearoff/dynamic_interface.yaml
index ee6e384..28673b6 100644
--- a/pkg/dynamic_modules/test/data/generic_static_tearoff/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/generic_static_tearoff/dynamic_interface.yaml
@@ -1,3 +1,6 @@
 # Copyright (c) 2025, 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.
+
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/implement_interface/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/implement_interface/dynamic_interface.yaml
index 5b516b6..5ede93e 100644
--- a/pkg/dynamic_modules/test/data/implement_interface/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/implement_interface/dynamic_interface.yaml
@@ -8,3 +8,6 @@
 can-be-overridden:
   - library: 'shared/shared.dart'
     class: 'Base'
+
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/implicitly_extendable/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/implicitly_extendable/dynamic_interface.yaml
index 397c0ee..636de47 100644
--- a/pkg/dynamic_modules/test/data/implicitly_extendable/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/implicitly_extendable/dynamic_interface.yaml
@@ -8,3 +8,6 @@
 can-be-overridden:
   - library: 'shared/shared.dart'
     class: 'Sub1'
+
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/indirect_expose/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/indirect_expose/dynamic_interface.yaml
index 382b7b3..0017975 100644
--- a/pkg/dynamic_modules/test/data/indirect_expose/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/indirect_expose/dynamic_interface.yaml
@@ -2,6 +2,7 @@
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE file.
 callable:
+  - library: 'dart:core'
   - library: 'package:expect/expect.dart'
   # Sufficient to export interface, even if implementation is private.
   - library: 'shared/shared.dart'
diff --git a/pkg/dynamic_modules/test/data/invoke_checked/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/invoke_checked/dynamic_interface.yaml
index b5842a0..8f82783 100644
--- a/pkg/dynamic_modules/test/data/invoke_checked/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/invoke_checked/dynamic_interface.yaml
@@ -2,6 +2,7 @@
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE file.
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'Base'
     member: ''
diff --git a/pkg/dynamic_modules/test/data/load_twice/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/load_twice/dynamic_interface.yaml
index 7d0e4e1..f6b9d69 100644
--- a/pkg/dynamic_modules/test/data/load_twice/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/load_twice/dynamic_interface.yaml
@@ -1,3 +1,6 @@
 # Copyright (c) 2024, 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.
+
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/load_unmodifiable_view/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/load_unmodifiable_view/dynamic_interface.yaml
index 669288a..f6b9d69 100644
--- a/pkg/dynamic_modules/test/data/load_unmodifiable_view/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/load_unmodifiable_view/dynamic_interface.yaml
@@ -2,3 +2,5 @@
 # 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.
 
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/mixin_field/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/mixin_field/dynamic_interface.yaml
index 4c5b159..af123f5 100644
--- a/pkg/dynamic_modules/test/data/mixin_field/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/mixin_field/dynamic_interface.yaml
@@ -6,5 +6,6 @@
     class: 'Foo'
 
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'Foo'
diff --git a/pkg/dynamic_modules/test/data/multiple_classes/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/multiple_classes/dynamic_interface.yaml
index 3674b5c..7c3b87f5 100644
--- a/pkg/dynamic_modules/test/data/multiple_classes/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/multiple_classes/dynamic_interface.yaml
@@ -7,6 +7,7 @@
     class: 'A'
 
 callable:
+  - library: 'dart:core'
   - library: 'modules/common.dart'
     class: 'A'
     member: 'getString'
diff --git a/pkg/dynamic_modules/test/data/override_extra_params/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/override_extra_params/dynamic_interface.yaml
index 0740f8c..98ac857 100644
--- a/pkg/dynamic_modules/test/data/override_extra_params/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/override_extra_params/dynamic_interface.yaml
@@ -21,6 +21,7 @@
 
 # TODO(sigmund): consider implying this for all extendable types.
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'Base'
     member: ''
diff --git a/pkg/dynamic_modules/test/data/override_mixin_method/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/override_mixin_method/dynamic_interface.yaml
index 65a7902..c095e24 100644
--- a/pkg/dynamic_modules/test/data/override_mixin_method/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/override_mixin_method/dynamic_interface.yaml
@@ -5,6 +5,7 @@
   - library: 'shared/shared.dart'
 
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
 
 can-be-overridden:
diff --git a/pkg/dynamic_modules/test/data/reshape_selectors/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/reshape_selectors/dynamic_interface.yaml
index 47c3964..0675b37 100644
--- a/pkg/dynamic_modules/test/data/reshape_selectors/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/reshape_selectors/dynamic_interface.yaml
@@ -12,3 +12,6 @@
   - library: 'shared/shared.dart'
     class: 'B'
     member: 'foo'
+
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/same_record_shape/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/same_record_shape/dynamic_interface.yaml
index ee6e384..28673b6 100644
--- a/pkg/dynamic_modules/test/data/same_record_shape/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/same_record_shape/dynamic_interface.yaml
@@ -1,3 +1,6 @@
 # Copyright (c) 2025, 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.
+
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/shared_const/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/shared_const/dynamic_interface.yaml
index af5bccc..d2c7a2e 100644
--- a/pkg/dynamic_modules/test/data/shared_const/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/shared_const/dynamic_interface.yaml
@@ -3,6 +3,7 @@
 # BSD-style license that can be found in the LICENSE file.
 
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
     class: 'B'
     member: ''
diff --git a/pkg/dynamic_modules/test/data/submodule_type_check/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/submodule_type_check/dynamic_interface.yaml
index ee6e384..28673b6 100644
--- a/pkg/dynamic_modules/test/data/submodule_type_check/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/submodule_type_check/dynamic_interface.yaml
@@ -1,3 +1,6 @@
 # Copyright (c) 2025, 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.
+
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/tearoff_no_concrete_impl/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/tearoff_no_concrete_impl/dynamic_interface.yaml
index 0577438..20ca244 100644
--- a/pkg/dynamic_modules/test/data/tearoff_no_concrete_impl/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/tearoff_no_concrete_impl/dynamic_interface.yaml
@@ -9,3 +9,6 @@
   - library: 'shared/shared.dart'
     class: 'C'
     member: 'foo'
+
+callable:
+  - library: 'dart:core'
diff --git a/pkg/dynamic_modules/test/data/top_level/dynamic_interface.yaml b/pkg/dynamic_modules/test/data/top_level/dynamic_interface.yaml
index d52d42c..944d84a 100644
--- a/pkg/dynamic_modules/test/data/top_level/dynamic_interface.yaml
+++ b/pkg/dynamic_modules/test/data/top_level/dynamic_interface.yaml
@@ -2,4 +2,5 @@
 # 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.
 callable:
+  - library: 'dart:core'
   - library: 'shared/shared.dart'
diff --git a/pkg/front_end/lib/src/kernel/dynamic_module_validator.dart b/pkg/front_end/lib/src/kernel/dynamic_module_validator.dart
index d90431b..4379b75 100644
--- a/pkg/front_end/lib/src/kernel/dynamic_module_validator.dart
+++ b/pkg/front_end/lib/src/kernel/dynamic_module_validator.dart
@@ -61,13 +61,6 @@
     final YamlNode spec = loadYamlNode(dynamicInterfaceSpecification);
     final LibraryIndex libraryIndex = new LibraryIndex.all(component);
 
-    // Included by default to the dynamic interface:
-    //
-    // callable:
-    //   - library: 'dart:core'
-    //
-    callable.add(libraryIndex.getLibrary('dart:core'));
-
     // If the spec is empty, the result is a scalar and not a map.
     if (spec is! YamlMap) return;
     _verifyKeys(spec, const {'extendable', 'can-be-overridden', 'callable'});
diff --git a/pkg/front_end/testcases/general/dynamic_modules/dynamic_interface.yaml b/pkg/front_end/testcases/general/dynamic_modules/dynamic_interface.yaml
index 71ebfe7..204751b 100644
--- a/pkg/front_end/testcases/general/dynamic_modules/dynamic_interface.yaml
+++ b/pkg/front_end/testcases/general/dynamic_modules/dynamic_interface.yaml
@@ -28,6 +28,7 @@
     member: 'field2'
 
 callable:
+  - library: 'dart:core'
   - library: 'main_lib1.dart'
     class: 'C2'
   - library: 'main_lib1.dart'
diff --git a/tools/VERSION b/tools/VERSION
index 174d881..7ab0481 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 3
 MINOR 9
 PATCH 0
-PRERELEASE 178
+PRERELEASE 179
 PRERELEASE_PATCH 0
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 8972edb..6f92b76 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -3387,7 +3387,8 @@
             "--arch=x64,x64c",
             "runtime",
             "dartaotruntime",
-            "dart2js_platform.dill"
+            "dart2js_platform.dill",
+            "dart2wasm_platform.dill"
           ]
         },
         {