| Index: pkg/analyzer/lib/src/summary/format.dart
 | 
| diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
 | 
| index 1d91db31f51385ac0238e835a655b86c98910507..f779e4be1ef2710de0e8a44cd53731c58d05ac1c 100644
 | 
| --- a/pkg/analyzer/lib/src/summary/format.dart
 | 
| +++ b/pkg/analyzer/lib/src/summary/format.dart
 | 
| @@ -419,6 +419,135 @@ abstract class _AnalysisDriverUnitErrorMixin implements idl.AnalysisDriverUnitEr
 | 
|    String toString() => convert.JSON.encode(toJson());
 | 
|  }
 | 
|  
 | 
| +class AnalysisDriverUnlinkedUnitBuilder extends Object with _AnalysisDriverUnlinkedUnitMixin implements idl.AnalysisDriverUnlinkedUnit {
 | 
| +  UnlinkedUnitBuilder _unit;
 | 
| +  List<String> _referencedNames;
 | 
| +
 | 
| +  @override
 | 
| +  UnlinkedUnitBuilder get unit => _unit;
 | 
| +
 | 
| +  /**
 | 
| +   * Unlinked information for the unit.
 | 
| +   */
 | 
| +  void set unit(UnlinkedUnitBuilder value) {
 | 
| +    this._unit = value;
 | 
| +  }
 | 
| +
 | 
| +  @override
 | 
| +  List<String> get referencedNames => _referencedNames ??= <String>[];
 | 
| +
 | 
| +  /**
 | 
| +   * List of external names referenced by the unit.
 | 
| +   */
 | 
| +  void set referencedNames(List<String> value) {
 | 
| +    this._referencedNames = value;
 | 
| +  }
 | 
| +
 | 
| +  AnalysisDriverUnlinkedUnitBuilder({UnlinkedUnitBuilder unit, List<String> referencedNames})
 | 
| +    : _unit = unit,
 | 
| +      _referencedNames = referencedNames;
 | 
| +
 | 
| +  /**
 | 
| +   * Flush [informative] data recursively.
 | 
| +   */
 | 
| +  void flushInformative() {
 | 
| +    _unit?.flushInformative();
 | 
| +  }
 | 
| +
 | 
| +  /**
 | 
| +   * Accumulate non-[informative] data into [signature].
 | 
| +   */
 | 
| +  void collectApiSignature(api_sig.ApiSignature signature) {
 | 
| +    if (this._referencedNames == null) {
 | 
| +      signature.addInt(0);
 | 
| +    } else {
 | 
| +      signature.addInt(this._referencedNames.length);
 | 
| +      for (var x in this._referencedNames) {
 | 
| +        signature.addString(x);
 | 
| +      }
 | 
| +    }
 | 
| +    signature.addBool(this._unit != null);
 | 
| +    this._unit?.collectApiSignature(signature);
 | 
| +  }
 | 
| +
 | 
| +  List<int> toBuffer() {
 | 
| +    fb.Builder fbBuilder = new fb.Builder();
 | 
| +    return fbBuilder.finish(finish(fbBuilder), "ADUU");
 | 
| +  }
 | 
| +
 | 
| +  fb.Offset finish(fb.Builder fbBuilder) {
 | 
| +    fb.Offset offset_unit;
 | 
| +    fb.Offset offset_referencedNames;
 | 
| +    if (_unit != null) {
 | 
| +      offset_unit = _unit.finish(fbBuilder);
 | 
| +    }
 | 
| +    if (!(_referencedNames == null || _referencedNames.isEmpty)) {
 | 
| +      offset_referencedNames = fbBuilder.writeList(_referencedNames.map((b) => fbBuilder.writeString(b)).toList());
 | 
| +    }
 | 
| +    fbBuilder.startTable();
 | 
| +    if (offset_unit != null) {
 | 
| +      fbBuilder.addOffset(1, offset_unit);
 | 
| +    }
 | 
| +    if (offset_referencedNames != null) {
 | 
| +      fbBuilder.addOffset(0, offset_referencedNames);
 | 
| +    }
 | 
| +    return fbBuilder.endTable();
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +idl.AnalysisDriverUnlinkedUnit readAnalysisDriverUnlinkedUnit(List<int> buffer) {
 | 
| +  fb.BufferContext rootRef = new fb.BufferContext.fromBytes(buffer);
 | 
| +  return const _AnalysisDriverUnlinkedUnitReader().read(rootRef, 0);
 | 
| +}
 | 
| +
 | 
| +class _AnalysisDriverUnlinkedUnitReader extends fb.TableReader<_AnalysisDriverUnlinkedUnitImpl> {
 | 
| +  const _AnalysisDriverUnlinkedUnitReader();
 | 
| +
 | 
| +  @override
 | 
| +  _AnalysisDriverUnlinkedUnitImpl createObject(fb.BufferContext bc, int offset) => new _AnalysisDriverUnlinkedUnitImpl(bc, offset);
 | 
| +}
 | 
| +
 | 
| +class _AnalysisDriverUnlinkedUnitImpl extends Object with _AnalysisDriverUnlinkedUnitMixin implements idl.AnalysisDriverUnlinkedUnit {
 | 
| +  final fb.BufferContext _bc;
 | 
| +  final int _bcOffset;
 | 
| +
 | 
| +  _AnalysisDriverUnlinkedUnitImpl(this._bc, this._bcOffset);
 | 
| +
 | 
| +  idl.UnlinkedUnit _unit;
 | 
| +  List<String> _referencedNames;
 | 
| +
 | 
| +  @override
 | 
| +  idl.UnlinkedUnit get unit {
 | 
| +    _unit ??= const _UnlinkedUnitReader().vTableGet(_bc, _bcOffset, 1, null);
 | 
| +    return _unit;
 | 
| +  }
 | 
| +
 | 
| +  @override
 | 
| +  List<String> get referencedNames {
 | 
| +    _referencedNames ??= const fb.ListReader<String>(const fb.StringReader()).vTableGet(_bc, _bcOffset, 0, const <String>[]);
 | 
| +    return _referencedNames;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +abstract class _AnalysisDriverUnlinkedUnitMixin implements idl.AnalysisDriverUnlinkedUnit {
 | 
| +  @override
 | 
| +  Map<String, Object> toJson() {
 | 
| +    Map<String, Object> _result = <String, Object>{};
 | 
| +    if (unit != null) _result["unit"] = unit.toJson();
 | 
| +    if (referencedNames.isNotEmpty) _result["referencedNames"] = referencedNames;
 | 
| +    return _result;
 | 
| +  }
 | 
| +
 | 
| +  @override
 | 
| +  Map<String, Object> toMap() => {
 | 
| +    "unit": unit,
 | 
| +    "referencedNames": referencedNames,
 | 
| +  };
 | 
| +
 | 
| +  @override
 | 
| +  String toString() => convert.JSON.encode(toJson());
 | 
| +}
 | 
| +
 | 
|  class CodeRangeBuilder extends Object with _CodeRangeMixin implements idl.CodeRange {
 | 
|    int _length;
 | 
|    int _offset;
 | 
| 
 |