Version 2.18.0-222.0.dev

Merge commit '3c793774c34877d1b18aa62066e2ac0288257be8' into 'dev'
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
index 34b9105..4e4f4e6 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -663,7 +663,7 @@
 
   /// Return the unlinked unit, from bytes or new.
   AnalysisDriverUnlinkedUnit _getUnlinkedUnit() {
-    final testData = _fsState.testData?.forFile(resource);
+    final testData = _fsState.testData?.forFile(resource, uri);
 
     var bytes = _fsState._byteStore.get(_unlinkedKey!);
     if (bytes != null && bytes.isNotEmpty) {
@@ -1262,7 +1262,7 @@
   }
 
   @visibleForTesting
-  FileState? getExistingFileForResource(File file) {
+  FileState? getExisting(File file) {
     return _pathToFile[file.path];
   }
 
@@ -1460,13 +1460,14 @@
 class FileSystemTestData {
   final Map<File, FileTestData> files = {};
 
-  FileTestData forFile(File file) {
-    return files[file] ??= FileTestData._(file);
+  FileTestData forFile(File file, Uri uri) {
+    return files[file] ??= FileTestData._(file, uri);
   }
 }
 
 class FileTestData {
   final File file;
+  final Uri uri;
 
   /// We add the key every time we get unlinked data from the byte store.
   final List<String> unlinkedKeyGet = [];
@@ -1474,7 +1475,7 @@
   /// We add the key every time we put unlinked data into the byte store.
   final List<String> unlinkedKeyPut = [];
 
-  FileTestData._(this.file);
+  FileTestData._(this.file, this.uri);
 }
 
 /// Precomputed properties of a file URI, used because [Uri] is relatively
@@ -1608,7 +1609,7 @@
   });
 
   @override
-  LibraryFileStateKind? get library => this;
+  LibraryFileStateKind get library => this;
 
   bool hasPart(PartFileStateKind part) {
     return file.partedFiles.contains(part.file);
diff --git a/pkg/analyzer/test/src/dart/analysis/analyzer_state_printer.dart b/pkg/analyzer/test/src/dart/analysis/analyzer_state_printer.dart
index 7f4b276..9755612 100644
--- a/pkg/analyzer/test/src/dart/analysis/analyzer_state_printer.dart
+++ b/pkg/analyzer/test/src/dart/analysis/analyzer_state_printer.dart
@@ -10,9 +10,11 @@
 import 'package:analyzer/src/dart/micro/resolve_file.dart';
 import 'package:collection/collection.dart';
 import 'package:path/path.dart';
+import 'package:test/test.dart';
 
 class AnalyzerStatePrinter {
   final MemoryByteStore byteStore;
+  final FileStateIdProvider fileStateIdProvider;
   final KeyShorter keyShorter;
   final LibraryContext libraryContext;
   final ResourceProvider resourceProvider;
@@ -22,6 +24,7 @@
 
   AnalyzerStatePrinter({
     required this.byteStore,
+    required this.fileStateIdProvider,
     required this.keyShorter,
     required this.libraryContext,
     required this.resourceProvider,
@@ -93,35 +96,88 @@
     });
   }
 
+  void _writeFile(FileState file) {
+    _withIndent(() {
+      _writelnWithIndent('id: ${fileStateIdProvider[file]}');
+      _writeFileKind(file);
+      _writeFileUnlinkedKey(file);
+    });
+  }
+
+  void _writeFileKind(FileState file) {
+    final kind = file.kind;
+    if (kind is LibraryFileStateKind) {
+      _writelnWithIndent('kind: library');
+      expect(kind.library.file, same(file));
+    } else if (kind is PartOfNameFileStateKind) {
+      _writelnWithIndent('kind: partOfName');
+      _withIndent(() {
+        final library = kind.library;
+        if (library != null) {
+          final id = fileStateIdProvider[library.file];
+          _writelnWithIndent('library: $id');
+        } else {
+          _writelnWithIndent('name: ${kind.directive.name}');
+        }
+      });
+    } else if (kind is PartOfUriKnownFileStateKind) {
+      _writelnWithIndent('kind: partOfUriKnown');
+      _withIndent(() {
+        final library = kind.library;
+        if (library != null) {
+          final id = fileStateIdProvider[library.file];
+          _writelnWithIndent('library: $id');
+        } else {
+          final id = fileStateIdProvider[kind.uriFile];
+          _writelnWithIndent('uriFile: $id');
+        }
+      });
+    } else {
+      throw UnimplementedError('${kind.runtimeType}');
+    }
+  }
+
   void _writeFiles(FileSystemTestData testData) {
+    final fileMap = testData.files;
+    final fileDataList = fileMap.values.toList();
+    fileDataList.sortBy((fileData) => fileData.file.path);
+
+    // Ask ID for every file in the sorted order, so that IDs are nice.
+    for (final fileData in fileDataList) {
+      final current = fileSystemState.getExisting(fileData.file);
+      if (current != null) {
+        fileStateIdProvider[current];
+      }
+    }
+
     _writelnWithIndent('files');
     _withIndent(() {
-      final fileMap = testData.files;
-      final fileDataList = fileMap.values.toList();
-      fileDataList.sortBy((fileData) => fileData.file.path);
-
       for (final fileData in fileDataList) {
         final file = fileData.file;
         _writelnWithIndent(_posixPath(file));
         _withIndent(() {
-          final current = fileSystemState.getExistingFileForResource(file);
+          final current = fileSystemState.getExisting(file);
           if (current != null) {
             _writelnWithIndent('current');
-            _withIndent(() {
-              final unlinkedShort = keyShorter.shortKey(current.unlinkedKey);
-              _writelnWithIndent('unlinkedKey: $unlinkedShort');
-            });
+            _writeFile(current);
           }
 
           final shortGets = keyShorter.shortKeys(fileData.unlinkedKeyGet);
           final shortPuts = keyShorter.shortKeys(fileData.unlinkedKeyPut);
           _writelnWithIndent('unlinkedGet: $shortGets');
           _writelnWithIndent('unlinkedPut: $shortPuts');
+
+          _writelnWithIndent('uri: ${fileData.uri}');
         });
       }
     });
   }
 
+  void _writeFileUnlinkedKey(FileState file) {
+    final unlinkedShort = keyShorter.shortKey(file.unlinkedKey);
+    _writelnWithIndent('unlinkedKey: $unlinkedShort');
+  }
+
   void _writeLibraryContext(LibraryContextTestData testData) {
     _writelnWithIndent('libraryCycles');
     _withIndent(() {
@@ -149,6 +205,11 @@
             _withIndent(() {
               final short = keyShorter.shortKey(current.resolutionKey!);
               _writelnWithIndent('key: $short');
+
+              final fileIdList = current.libraries
+                  .map((fileState) => fileStateIdProvider[fileState])
+                  .toList();
+              _writelnWithIndent('libraries: ${fileIdList.join(' ')}');
             });
           }
 
@@ -180,6 +241,14 @@
   }
 }
 
+class FileStateIdProvider {
+  final Map<FileState, String> _map = Map.identity();
+
+  String operator [](FileState file) {
+    return _map[file] ??= 'file_${_map.length}';
+  }
+}
+
 /// Keys in the byte store are long hashes, which are hard to read.
 /// So, we generate short unique versions for them.
 class KeyShorter {
diff --git a/pkg/analyzer/test/src/dart/micro/file_resolution.dart b/pkg/analyzer/test/src/dart/micro/file_resolution.dart
index dd4736b..9e72754 100644
--- a/pkg/analyzer/test/src/dart/micro/file_resolution.dart
+++ b/pkg/analyzer/test/src/dart/micro/file_resolution.dart
@@ -23,6 +23,7 @@
 import 'package:test/test.dart';
 
 import '../analysis/analyzer_state_printer.dart' as printer;
+import '../resolution/node_text_expectations.dart';
 import '../resolution/resolution.dart';
 
 /// [FileResolver] based implementation of [ResolutionTest].
@@ -38,6 +39,8 @@
 
   late FileResolver fileResolver;
 
+  final printer.FileStateIdProvider _fileStateIdProvider =
+      printer.FileStateIdProvider();
   final printer.KeyShorter _keyShorter = printer.KeyShorter();
 
   FileSystemState get fsState => fileResolver.fsState!;
@@ -68,6 +71,7 @@
     final buffer = StringBuffer();
     printer.AnalyzerStatePrinter(
       byteStore: byteStore,
+      fileStateIdProvider: _fileStateIdProvider,
       keyShorter: _keyShorter,
       libraryContext: libraryContext,
       resourceProvider: resourceProvider,
@@ -77,6 +81,7 @@
 
     if (actual != expected) {
       print(actual);
+      NodeTextExpectationsCollector.add(actual);
     }
     expect(actual, expected);
   }
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 3bf1dce..b284a45 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
@@ -15,12 +15,14 @@
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
+import '../resolution/node_text_expectations.dart';
 import 'file_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(FileResolver_changeFiles_Test);
     defineReflectiveTests(FileResolverTest);
+    defineReflectiveTests(UpdateNodeTextExpectations);
   });
 }
 
@@ -43,67 +45,96 @@
     // First time we refresh everything.
     await resolveFile(c.path);
 
-    const state_1 = r'''
+    assertStateString(r'''
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     current
+      id: file_6
+      kind: library
       unlinkedKey: k06
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.test/b.dart
   /workspace/dart/test/lib/c.dart
     current
+      id: file_7
+      kind: library
       unlinkedKey: k07
     unlinkedGet: []
     unlinkedPut: [k07]
+    uri: package:dart.test/c.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k08
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k08]
   /workspace/dart/test/lib/a.dart
     current
       key: k09
+      libraries: file_5
     get: []
     put: [k09]
   /workspace/dart/test/lib/b.dart
     current
       key: k10
+      libraries: file_6
     get: []
     put: [k10]
   /workspace/dart/test/lib/c.dart
     current
       key: k11
+      libraries: file_7
     get: []
     put: [k11]
 elementFactory
@@ -117,16 +148,221 @@
     package:dart.test/c.dart
 byteStore
   1: [k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11]
-''';
-    assertStateString(state_1);
+''');
 
     // Without changes we refresh nothing.
     await resolveFile(c.path);
-    assertStateString(state_1);
+    assertStateString(r'''
+files
+  /sdk/lib/_internal/internal.dart
+    current
+      id: file_0
+      kind: library
+      unlinkedKey: k00
+    unlinkedGet: []
+    unlinkedPut: [k00]
+    uri: dart:_internal
+  /sdk/lib/async/async.dart
+    current
+      id: file_1
+      kind: library
+      unlinkedKey: k01
+    unlinkedGet: []
+    unlinkedPut: [k01]
+    uri: dart:async
+  /sdk/lib/async/stream.dart
+    current
+      id: file_2
+      kind: partOfName
+        library: file_1
+      unlinkedKey: k02
+    unlinkedGet: []
+    unlinkedPut: [k02]
+    uri: dart:async/stream.dart
+  /sdk/lib/core/core.dart
+    current
+      id: file_3
+      kind: library
+      unlinkedKey: k03
+    unlinkedGet: []
+    unlinkedPut: [k03]
+    uri: dart:core
+  /sdk/lib/math/math.dart
+    current
+      id: file_4
+      kind: library
+      unlinkedKey: k04
+    unlinkedGet: []
+    unlinkedPut: [k04]
+    uri: dart:math
+  /workspace/dart/test/lib/a.dart
+    current
+      id: file_5
+      kind: library
+      unlinkedKey: k05
+    unlinkedGet: []
+    unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
+  /workspace/dart/test/lib/b.dart
+    current
+      id: file_6
+      kind: library
+      unlinkedKey: k06
+    unlinkedGet: []
+    unlinkedPut: [k06]
+    uri: package:dart.test/b.dart
+  /workspace/dart/test/lib/c.dart
+    current
+      id: file_7
+      kind: library
+      unlinkedKey: k07
+    unlinkedGet: []
+    unlinkedPut: [k07]
+    uri: package:dart.test/c.dart
+libraryCycles
+  /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
+    current
+      key: k08
+      libraries: file_0 file_1 file_3 file_4
+    get: []
+    put: [k08]
+  /workspace/dart/test/lib/a.dart
+    current
+      key: k09
+      libraries: file_5
+    get: []
+    put: [k09]
+  /workspace/dart/test/lib/b.dart
+    current
+      key: k10
+      libraries: file_6
+    get: []
+    put: [k10]
+  /workspace/dart/test/lib/c.dart
+    current
+      key: k11
+      libraries: file_7
+    get: []
+    put: [k11]
+elementFactory
+  hasElement
+    dart:_internal
+    dart:async
+    dart:core
+    dart:math
+    package:dart.test/a.dart
+    package:dart.test/b.dart
+    package:dart.test/c.dart
+byteStore
+  1: [k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11]
+''');
 
     // We already know a.dart, refresh nothing.
     await resolveFile(a.path);
-    assertStateString(state_1);
+    assertStateString(r'''
+files
+  /sdk/lib/_internal/internal.dart
+    current
+      id: file_0
+      kind: library
+      unlinkedKey: k00
+    unlinkedGet: []
+    unlinkedPut: [k00]
+    uri: dart:_internal
+  /sdk/lib/async/async.dart
+    current
+      id: file_1
+      kind: library
+      unlinkedKey: k01
+    unlinkedGet: []
+    unlinkedPut: [k01]
+    uri: dart:async
+  /sdk/lib/async/stream.dart
+    current
+      id: file_2
+      kind: partOfName
+        library: file_1
+      unlinkedKey: k02
+    unlinkedGet: []
+    unlinkedPut: [k02]
+    uri: dart:async/stream.dart
+  /sdk/lib/core/core.dart
+    current
+      id: file_3
+      kind: library
+      unlinkedKey: k03
+    unlinkedGet: []
+    unlinkedPut: [k03]
+    uri: dart:core
+  /sdk/lib/math/math.dart
+    current
+      id: file_4
+      kind: library
+      unlinkedKey: k04
+    unlinkedGet: []
+    unlinkedPut: [k04]
+    uri: dart:math
+  /workspace/dart/test/lib/a.dart
+    current
+      id: file_5
+      kind: library
+      unlinkedKey: k05
+    unlinkedGet: []
+    unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
+  /workspace/dart/test/lib/b.dart
+    current
+      id: file_6
+      kind: library
+      unlinkedKey: k06
+    unlinkedGet: []
+    unlinkedPut: [k06]
+    uri: package:dart.test/b.dart
+  /workspace/dart/test/lib/c.dart
+    current
+      id: file_7
+      kind: library
+      unlinkedKey: k07
+    unlinkedGet: []
+    unlinkedPut: [k07]
+    uri: package:dart.test/c.dart
+libraryCycles
+  /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
+    current
+      key: k08
+      libraries: file_0 file_1 file_3 file_4
+    get: []
+    put: [k08]
+  /workspace/dart/test/lib/a.dart
+    current
+      key: k09
+      libraries: file_5
+    get: []
+    put: [k09]
+  /workspace/dart/test/lib/b.dart
+    current
+      key: k10
+      libraries: file_6
+    get: []
+    put: [k10]
+  /workspace/dart/test/lib/c.dart
+    current
+      key: k11
+      libraries: file_7
+    get: []
+    put: [k11]
+elementFactory
+  hasElement
+    dart:_internal
+    dart:async
+    dart:core
+    dart:math
+    package:dart.test/a.dart
+    package:dart.test/b.dart
+    package:dart.test/c.dart
+byteStore
+  1: [k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k10, k11]
+''');
 
     // Change a.dart, discard data for a.dart and c.dart, but not b.dart
     fileResolver.changeFiles([a.path]);
@@ -134,44 +370,66 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     current
+      id: file_6
+      kind: library
       unlinkedKey: k06
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.test/b.dart
   /workspace/dart/test/lib/c.dart
     unlinkedGet: []
     unlinkedPut: [k07]
+    uri: package:dart.test/c.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k08
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k08]
   /workspace/dart/test/lib/a.dart
@@ -180,6 +438,7 @@
   /workspace/dart/test/lib/b.dart
     current
       key: k10
+      libraries: file_6
     get: []
     put: [k10]
   /workspace/dart/test/lib/c.dart
@@ -202,63 +461,92 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_8
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05, k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     current
+      id: file_6
+      kind: library
       unlinkedKey: k06
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.test/b.dart
   /workspace/dart/test/lib/c.dart
     current
+      id: file_9
+      kind: library
       unlinkedKey: k07
     unlinkedGet: []
     unlinkedPut: [k07, k07]
+    uri: package:dart.test/c.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k08
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k08]
   /workspace/dart/test/lib/a.dart
     current
       key: k09
+      libraries: file_8
     get: []
     put: [k09, k09]
   /workspace/dart/test/lib/b.dart
     current
       key: k10
+      libraries: file_6
     get: []
     put: [k10]
   /workspace/dart/test/lib/c.dart
     current
       key: k11
+      libraries: file_9
     get: []
     put: [k11, k11]
 elementFactory
@@ -395,48 +683,73 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     current
+      id: file_6
+      kind: partOfUriKnown
+        library: file_5
       unlinkedKey: k06
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.test/b.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k07
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k07]
   /workspace/dart/test/lib/a.dart
     current
       key: k08
+      libraries: file_5
     get: []
     put: [k08]
 elementFactory
@@ -456,39 +769,58 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.test/b.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k07
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k07]
   /workspace/dart/test/lib/a.dart
@@ -510,48 +842,73 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_7
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05, k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     current
+      id: file_8
+      kind: partOfUriKnown
+        library: file_7
       unlinkedKey: k06
     unlinkedGet: []
     unlinkedPut: [k06, k06]
+    uri: package:dart.test/b.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k07
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k07]
   /workspace/dart/test/lib/a.dart
     current
       key: k08
+      libraries: file_7
     get: []
     put: [k08, k08]
 elementFactory
@@ -588,58 +945,87 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     current
+      id: file_6
+      kind: partOfUriKnown
+        library: file_5
       unlinkedKey: k06
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.test/b.dart
   /workspace/dart/test/lib/c.dart
     current
+      id: file_7
+      kind: library
       unlinkedKey: k07
     unlinkedGet: []
     unlinkedPut: [k07]
+    uri: package:dart.test/c.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k08
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k08]
   /workspace/dart/test/lib/a.dart
     current
       key: k09
+      libraries: file_5
     get: []
     put: [k09]
   /workspace/dart/test/lib/c.dart
     current
       key: k10
+      libraries: file_7
     get: []
     put: [k10]
 elementFactory
@@ -660,42 +1046,62 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.test/b.dart
   /workspace/dart/test/lib/c.dart
     unlinkedGet: []
     unlinkedPut: [k07]
+    uri: package:dart.test/c.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k08
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k08]
   /workspace/dart/test/lib/a.dart
@@ -720,58 +1126,87 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_8
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05, k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     current
+      id: file_9
+      kind: partOfUriKnown
+        library: file_8
       unlinkedKey: k06
     unlinkedGet: []
     unlinkedPut: [k06, k06]
+    uri: package:dart.test/b.dart
   /workspace/dart/test/lib/c.dart
     current
+      id: file_10
+      kind: library
       unlinkedKey: k07
     unlinkedGet: []
     unlinkedPut: [k07, k07]
+    uri: package:dart.test/c.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k08
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k08]
   /workspace/dart/test/lib/a.dart
     current
       key: k09
+      libraries: file_8
     get: []
     put: [k09, k09]
   /workspace/dart/test/lib/c.dart
     current
       key: k10
+      libraries: file_10
     get: []
     put: [k10, k10]
 elementFactory
@@ -909,43 +1344,64 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k06
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k06]
   /workspace/dart/test/lib/a.dart
     current
       key: k07
+      libraries: file_5
     get: []
     put: [k07]
 elementFactory
@@ -968,21 +1424,27 @@
   /sdk/lib/_internal/internal.dart
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     get: []
@@ -1493,43 +1955,64 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k06
+      libraries: file_0 file_1 file_3 file_4
     get: [k06]
     put: [k06]
   /workspace/dart/test/lib/a.dart
     current
       key: k07
+      libraries: file_5
     get: [k07]
     put: [k07]
 elementFactory
@@ -1553,43 +2036,64 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k06
+      libraries: file_0 file_1 file_3 file_4
     get: [k06]
     put: [k06]
   /workspace/dart/test/lib/a.dart
     current
       key: k07
+      libraries: file_5
     get: [k07]
     put: [k07]
 elementFactory
@@ -1612,57 +2116,82 @@
     // We discarded all libraries, so each one has `get` and `put`.
     // We did not discard files, so only `unlinkedPut`.
     // The reference count for each data is exactly `1`.
-    assertStateString('''
+    assertStateString(r'''
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     current
+      id: file_6
+      kind: library
       unlinkedKey: k08
     unlinkedGet: []
     unlinkedPut: [k08]
+    uri: package:dart.test/b.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k06
+      libraries: file_0 file_1 file_3 file_4
     get: [k06, k06]
     put: [k06]
   /workspace/dart/test/lib/a.dart
     current
       key: k07
+      libraries: file_5
     get: [k07, k07]
     put: [k07]
   /workspace/dart/test/lib/b.dart
     current
       key: k09
+      libraries: file_6
     get: [k09]
     put: [k09]
 elementFactory
@@ -1692,57 +2221,82 @@
 
     // All types are stored in the bundle for b.dart itself, we don't need to
     // read a.dart to access them, so we keep it as a reader.
-    assertStateString('''
+    assertStateString(r'''
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/a.dart
   /workspace/dart/test/lib/b.dart
     current
+      id: file_6
+      kind: library
       unlinkedKey: k08
     unlinkedGet: []
     unlinkedPut: [k08]
+    uri: package:dart.test/b.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k06
+      libraries: file_0 file_1 file_3 file_4
     get: [k06, k06]
     put: [k06]
   /workspace/dart/test/lib/a.dart
     current
       key: k07
+      libraries: file_5
     get: [k07, k07]
     put: [k07]
   /workspace/dart/test/lib/b.dart
     current
       key: k09
+      libraries: file_6
     get: [k09]
     put: [k09]
 elementFactory
@@ -1779,43 +2333,64 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/test.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/test.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k06
+      libraries: file_0 file_1 file_3 file_4
     get: [k06]
     put: [k06]
   /workspace/dart/test/lib/test.dart
     current
       key: k07
+      libraries: file_5
     get: [k07]
     put: [k07]
 elementFactory
@@ -1845,43 +2420,64 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/test/lib/test.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.test/test.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k06
+      libraries: file_0 file_1 file_3 file_4
     get: [k06]
     put: [k06]
   /workspace/dart/test/lib/test.dart
     current
       key: k07
+      libraries: file_5
     get: [k07]
     put: [k07]
 elementFactory
@@ -2016,63 +2612,92 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/aaa/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.aaa/a.dart
   /workspace/dart/aaa/lib/b.dart
     current
+      id: file_6
+      kind: library
       unlinkedKey: k06
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.aaa/b.dart
   /workspace/dart/aaa/lib/c.dart
     current
+      id: file_7
+      kind: library
       unlinkedKey: k07
     unlinkedGet: []
     unlinkedPut: [k07]
+    uri: package:dart.aaa/c.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k08
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k08]
   /workspace/dart/aaa/lib/a.dart
     current
       key: k09
+      libraries: file_5
     get: []
     put: [k09]
   /workspace/dart/aaa/lib/b.dart
     current
       key: k10
+      libraries: file_6
     get: []
     put: [k10]
   /workspace/dart/aaa/lib/c.dart
     current
       key: k11
+      libraries: file_7
     get: []
     put: [k11]
 elementFactory
@@ -2095,51 +2720,76 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/aaa/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.aaa/a.dart
   /workspace/dart/aaa/lib/b.dart
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.aaa/b.dart
   /workspace/dart/aaa/lib/c.dart
     current
+      id: file_7
+      kind: library
       unlinkedKey: k07
     unlinkedGet: []
     unlinkedPut: [k07]
+    uri: package:dart.aaa/c.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k08
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k08]
   /workspace/dart/aaa/lib/a.dart
     current
       key: k09
+      libraries: file_5
     get: []
     put: [k09]
   /workspace/dart/aaa/lib/b.dart
@@ -2148,6 +2798,7 @@
   /workspace/dart/aaa/lib/c.dart
     current
       key: k11
+      libraries: file_7
     get: []
     put: [k11]
 elementFactory
@@ -2196,93 +2847,134 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/aaa/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.aaa/a.dart
   /workspace/dart/aaa/lib/b.dart
     current
+      id: file_6
+      kind: library
       unlinkedKey: k06
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.aaa/b.dart
   /workspace/dart/aaa/lib/c.dart
     current
+      id: file_7
+      kind: library
       unlinkedKey: k07
     unlinkedGet: []
     unlinkedPut: [k07]
+    uri: package:dart.aaa/c.dart
   /workspace/dart/aaa/lib/d.dart
     current
+      id: file_8
+      kind: library
       unlinkedKey: k08
     unlinkedGet: []
     unlinkedPut: [k08]
+    uri: package:dart.aaa/d.dart
   /workspace/dart/aaa/lib/e.dart
     current
+      id: file_9
+      kind: library
       unlinkedKey: k09
     unlinkedGet: []
     unlinkedPut: [k09]
+    uri: package:dart.aaa/e.dart
   /workspace/dart/aaa/lib/f.dart
     current
+      id: file_10
+      kind: library
       unlinkedKey: k10
     unlinkedGet: []
     unlinkedPut: [k10]
+    uri: package:dart.aaa/f.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k11
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k11]
   /workspace/dart/aaa/lib/a.dart
     current
       key: k12
+      libraries: file_5
     get: []
     put: [k12]
   /workspace/dart/aaa/lib/b.dart
     current
       key: k13
+      libraries: file_6
     get: []
     put: [k13]
   /workspace/dart/aaa/lib/c.dart
     current
       key: k14
+      libraries: file_7
     get: []
     put: [k14]
   /workspace/dart/aaa/lib/d.dart
     current
       key: k15
+      libraries: file_8
     get: []
     put: [k15]
   /workspace/dart/aaa/lib/e.dart
     current
       key: k16
+      libraries: file_9
     get: []
     put: [k16]
   /workspace/dart/aaa/lib/f.dart
     current
       key: k17
+      libraries: file_10
     get: []
     put: [k17]
 elementFactory
@@ -2307,64 +2999,96 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/aaa/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.aaa/a.dart
   /workspace/dart/aaa/lib/b.dart
     unlinkedGet: []
     unlinkedPut: [k06]
+    uri: package:dart.aaa/b.dart
   /workspace/dart/aaa/lib/c.dart
     current
+      id: file_7
+      kind: library
       unlinkedKey: k07
     unlinkedGet: []
     unlinkedPut: [k07]
+    uri: package:dart.aaa/c.dart
   /workspace/dart/aaa/lib/d.dart
     current
+      id: file_8
+      kind: library
       unlinkedKey: k08
     unlinkedGet: []
     unlinkedPut: [k08]
+    uri: package:dart.aaa/d.dart
   /workspace/dart/aaa/lib/e.dart
     unlinkedGet: []
     unlinkedPut: [k09]
+    uri: package:dart.aaa/e.dart
   /workspace/dart/aaa/lib/f.dart
     current
+      id: file_10
+      kind: library
       unlinkedKey: k10
     unlinkedGet: []
     unlinkedPut: [k10]
+    uri: package:dart.aaa/f.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k11
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k11]
   /workspace/dart/aaa/lib/a.dart
     current
       key: k12
+      libraries: file_5
     get: []
     put: [k12]
   /workspace/dart/aaa/lib/b.dart
@@ -2373,11 +3097,13 @@
   /workspace/dart/aaa/lib/c.dart
     current
       key: k14
+      libraries: file_7
     get: []
     put: [k14]
   /workspace/dart/aaa/lib/d.dart
     current
       key: k15
+      libraries: file_8
     get: []
     put: [k15]
   /workspace/dart/aaa/lib/e.dart
@@ -2386,6 +3112,7 @@
   /workspace/dart/aaa/lib/f.dart
     current
       key: k17
+      libraries: file_10
     get: []
     put: [k17]
 elementFactory
@@ -2418,43 +3145,64 @@
 files
   /sdk/lib/_internal/internal.dart
     current
+      id: file_0
+      kind: library
       unlinkedKey: k00
     unlinkedGet: []
     unlinkedPut: [k00]
+    uri: dart:_internal
   /sdk/lib/async/async.dart
     current
+      id: file_1
+      kind: library
       unlinkedKey: k01
     unlinkedGet: []
     unlinkedPut: [k01]
+    uri: dart:async
   /sdk/lib/async/stream.dart
     current
+      id: file_2
+      kind: partOfName
+        library: file_1
       unlinkedKey: k02
     unlinkedGet: []
     unlinkedPut: [k02]
+    uri: dart:async/stream.dart
   /sdk/lib/core/core.dart
     current
+      id: file_3
+      kind: library
       unlinkedKey: k03
     unlinkedGet: []
     unlinkedPut: [k03]
+    uri: dart:core
   /sdk/lib/math/math.dart
     current
+      id: file_4
+      kind: library
       unlinkedKey: k04
     unlinkedGet: []
     unlinkedPut: [k04]
+    uri: dart:math
   /workspace/dart/aaa/lib/a.dart
     current
+      id: file_5
+      kind: library
       unlinkedKey: k05
     unlinkedGet: []
     unlinkedPut: [k05]
+    uri: package:dart.aaa/a.dart
 libraryCycles
   /sdk/lib/_internal/internal.dart /sdk/lib/async/async.dart /sdk/lib/core/core.dart /sdk/lib/math/math.dart
     current
       key: k06
+      libraries: file_0 file_1 file_3 file_4
     get: []
     put: [k06]
   /workspace/dart/aaa/lib/a.dart
     current
       key: k07
+      libraries: file_5
     get: []
     put: [k07]
 elementFactory
@@ -2510,9 +3258,9 @@
 
     // TODO(scheglov) Use textual dump
     final fsState = fileResolver.fsState!;
-    final testState = fsState.getExistingFileForResource(testFile)!;
+    final testState = fsState.getExisting(testFile)!;
     final testKind = testState.kind as PartFileStateKind;
-    expect(testKind.library?.file, fsState.getExistingFileForResource(a));
+    expect(testKind.library?.file, fsState.getExisting(a));
   }
 
   test_resolve_part_of_uri() async {
@@ -2535,9 +3283,9 @@
 
     // TODO(scheglov) Use textual dump
     final fsState = fileResolver.fsState!;
-    final testState = fsState.getExistingFileForResource(testFile)!;
+    final testState = fsState.getExisting(testFile)!;
     final testKind = testState.kind as PartFileStateKind;
-    expect(testKind.library?.file, fsState.getExistingFileForResource(a));
+    expect(testKind.library?.file, fsState.getExisting(a));
   }
 
   test_resolveFile_cache() async {
diff --git a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
index a8d81f3..3c8bd3b 100644
--- a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
@@ -138,6 +138,7 @@
   /// Optional summaries to provide for the collection.
   List<File>? librarySummaryFiles;
 
+  final FileStateIdProvider _fileStateIdProvider = FileStateIdProvider();
   final KeyShorter _keyShorter = KeyShorter();
 
   List<MockSdkLibrary> get additionalMockSdkLibraries => [];
@@ -172,6 +173,7 @@
     final buffer = StringBuffer();
     AnalyzerStatePrinter(
       byteStore: _byteStore,
+      fileStateIdProvider: _fileStateIdProvider,
       keyShorter: _keyShorter,
       libraryContext: analysisDriver.libraryContext,
       resourceProvider: resourceProvider,
diff --git a/pkg/analyzer/test/src/dart/resolution/node_text_expectations.dart b/pkg/analyzer/test/src/dart/resolution/node_text_expectations.dart
index b5a17b92..d528bce 100644
--- a/pkg/analyzer/test/src/dart/resolution/node_text_expectations.dart
+++ b/pkg/analyzer/test/src/dart/resolution/node_text_expectations.dart
@@ -12,6 +12,7 @@
   static const updatingIsEnabled = false;
 
   static const assertMethods = {
+    'FileResolutionTest.assertStateString',
     'ResolutionTest.assertResolvedNodeText',
   };
 
diff --git a/tools/VERSION b/tools/VERSION
index ba74c8a..45f4e4d 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 221
+PRERELEASE 222
 PRERELEASE_PATCH 0
\ No newline at end of file