| Index: pkg/analyzer/tool/summary/idl.dart | 
| diff --git a/pkg/analyzer/tool/summary/idl.dart b/pkg/analyzer/tool/summary/idl.dart | 
| index 92beaf020b7fa9d865bd886a4b7a8c535f0cf320..65b319c3f359f8909c362336fa2dd032939f95ee 100644 | 
| --- a/pkg/analyzer/tool/summary/idl.dart | 
| +++ b/pkg/analyzer/tool/summary/idl.dart | 
| @@ -79,6 +79,14 @@ class PrelinkedDependency { | 
| @topLevel | 
| class PrelinkedLibrary { | 
| /** | 
| +   * The pre-linked summary of all the compilation units constituting the | 
| +   * library.  The summary of the defining compilation unit is listed first, | 
| +   * followed by the summary of each part, in the order of the `part` | 
| +   * declarations in the defining compilation unit. | 
| +   */ | 
| +  List<PrelinkedUnit> units; | 
| + | 
| +  /** | 
| * The unlinked library summary. | 
| */ | 
| UnlinkedLibrary unlinked; | 
| @@ -162,6 +170,16 @@ enum PrelinkedReferenceKind { | 
| } | 
|  | 
| /** | 
| + * Pre-linked summary of a compilation unit. | 
| + */ | 
| +class PrelinkedUnit { | 
| +  /** | 
| +   * The unlinked summary of the compilation unit | 
| +   */ | 
| +  UnlinkedUnit unlinked; | 
| +} | 
| + | 
| +/** | 
| * Unlinked summary information about a class declaration. | 
| */ | 
| class UnlinkedClass { | 
| @@ -171,13 +189,6 @@ class UnlinkedClass { | 
| String name; | 
|  | 
| /** | 
| -   * Index into [UnlinkedLibrary.units] indicating which compilation unit the | 
| -   * class is declared in. | 
| -   */ | 
| -  @informative | 
| -  int unit; | 
| - | 
| -  /** | 
| * Type parameters of the class, if any. | 
| */ | 
| List<UnlinkedTypeParam> typeParameters; | 
| @@ -260,13 +271,6 @@ class UnlinkedEnum { | 
| * Values listed in the enum declaration, in declaration order. | 
| */ | 
| List<UnlinkedEnumValue> values; | 
| - | 
| -  /** | 
| -   * Index into [UnlinkedLibrary.units] indicating which compilation unit the | 
| -   * enum is declared in. | 
| -   */ | 
| -  @informative | 
| -  int unit; | 
| } | 
|  | 
| /** | 
| @@ -293,14 +297,6 @@ class UnlinkedExecutable { | 
| String name; | 
|  | 
| /** | 
| -   * Index into [UnlinkedLibrary.units] indicating which compilation unit the | 
| -   * executable is declared in.  Zero for executables which are nested inside | 
| -   * another declaration (i.e. local functions and method declarations). | 
| -   */ | 
| -  @informative | 
| -  int unit; | 
| - | 
| -  /** | 
| * Type parameters of the executable, if any.  Empty if support for generic | 
| * method syntax is disabled. | 
| */ | 
| @@ -447,54 +443,6 @@ class UnlinkedLibrary { | 
| List<UnlinkedReference> references; | 
|  | 
| /** | 
| -   * Information about the units constituting this library.  The first unit | 
| -   * listed is always the defining compilation unit.  The remaining units are | 
| -   * listed in the order of their corresponding `part` declarations. | 
| -   */ | 
| -  List<UnlinkedUnit> units; | 
| - | 
| -  /** | 
| -   * Name of the library (from a "library" declaration, if present). | 
| -   */ | 
| -  String name; | 
| - | 
| -  /** | 
| -   * Classes declared in the library. | 
| -   */ | 
| -  List<UnlinkedClass> classes; | 
| - | 
| -  /** | 
| -   * Enums declared in the library. | 
| -   */ | 
| -  List<UnlinkedEnum> enums; | 
| - | 
| -  /** | 
| -   * Top level executable objects (functions, getters, and setters) declared in | 
| -   * the library. | 
| -   */ | 
| -  List<UnlinkedExecutable> executables; | 
| - | 
| -  /** | 
| -   * Export declarations in the library. | 
| -   */ | 
| -  List<UnlinkedExport> exports; | 
| - | 
| -  /** | 
| -   * Import declarations in the library. | 
| -   */ | 
| -  List<UnlinkedImport> imports; | 
| - | 
| -  /** | 
| -   * Typedefs declared in the library. | 
| -   */ | 
| -  List<UnlinkedTypedef> typedefs; | 
| - | 
| -  /** | 
| -   * Top level variables declared in the library. | 
| -   */ | 
| -  List<UnlinkedVariable> variables; | 
| - | 
| -  /** | 
| * Prefixes introduced by import declarations.  The first element in this | 
| * array is a pseudo-prefix used by references made with no prefix. | 
| */ | 
| @@ -567,6 +515,16 @@ enum UnlinkedParamKind { | 
| named | 
| } | 
|  | 
| +/** | 
| + * Unlinked summary information about a part declaration. | 
| + */ | 
| +class UnlinkedPart { | 
| +  /** | 
| +   * String used in the compilation unit to refer to the part file. | 
| +   */ | 
| +  String uri; | 
| +} | 
| + | 
| class UnlinkedPrefix { | 
| /** | 
| * The name of the prefix, or the empty string in the case of the | 
| @@ -603,13 +561,6 @@ class UnlinkedTypedef { | 
| String name; | 
|  | 
| /** | 
| -   * Index into [UnlinkedLibrary.units] indicating which compilation unit the | 
| -   * typedef is declared in. | 
| -   */ | 
| -  @informative | 
| -  int unit; | 
| - | 
| -  /** | 
| * Type parameters of the typedef, if any. | 
| */ | 
| List<UnlinkedTypeParam> typeParameters; | 
| @@ -694,10 +645,50 @@ class UnlinkedTypeRef { | 
| */ | 
| class UnlinkedUnit { | 
| /** | 
| -   * String used in the defining compilation unit to reference the part file. | 
| -   * Empty for the defining compilation unit itself. | 
| +   * Name of the library (from a "library" declaration, if present). | 
| */ | 
| -  String uri; | 
| +  String libraryName; | 
| + | 
| +  /** | 
| +   * Classes declared in the compilation unit. | 
| +   */ | 
| +  List<UnlinkedClass> classes; | 
| + | 
| +  /** | 
| +   * Enums declared in the compilation unit. | 
| +   */ | 
| +  List<UnlinkedEnum> enums; | 
| + | 
| +  /** | 
| +   * Top level executable objects (functions, getters, and setters) declared in | 
| +   * the compilation unit. | 
| +   */ | 
| +  List<UnlinkedExecutable> executables; | 
| + | 
| +  /** | 
| +   * Export declarations in the compilation unit. | 
| +   */ | 
| +  List<UnlinkedExport> exports; | 
| + | 
| +  /** | 
| +   * Import declarations in the compilation unit. | 
| +   */ | 
| +  List<UnlinkedImport> imports; | 
| + | 
| +  /** | 
| +   * Part declarations in the compilation unit. | 
| +   */ | 
| +  List<UnlinkedPart> parts; | 
| + | 
| +  /** | 
| +   * Typedefs declared in the compilation unit. | 
| +   */ | 
| +  List<UnlinkedTypedef> typedefs; | 
| + | 
| +  /** | 
| +   * Top level variables declared in the compilation unit. | 
| +   */ | 
| +  List<UnlinkedVariable> variables; | 
| } | 
|  | 
| /** | 
| @@ -711,14 +702,6 @@ class UnlinkedVariable { | 
| String name; | 
|  | 
| /** | 
| -   * Index into [UnlinkedLibrary.units] indicating which compilation unit the | 
| -   * variable is declared in.  Zero for variables which are nested inside | 
| -   * another declaration (i.e. local variables and fields). | 
| -   */ | 
| -  @informative | 
| -  int unit; | 
| - | 
| -  /** | 
| * Declared type of the variable.  Note that when strong mode is enabled, the | 
| * actual type of the variable may be different due to type inference. | 
| */ | 
|  |