anchor.diff:    /// Checks whether [id] can be read by this step - attempting to build the
     /// asset if necessary.
     FutureOr<bool> _isReadable(AssetId id) {
  -    _assetsRead.add(id);
  +    assetsRead.add(id);
       var node = _assetGraph.get(id);
       if (node == null) {
         _assetGraph.add(new SyntheticSourceAssetNode(id));
  
positive.code: /// tracking.
  class SingleStepReader implements AssetReader {
    final AssetGraph _assetGraph;
    final _assetsRead = new SplayTreeSet<AssetId>();
    final AssetReader _delegate;
    final _globsRan = new Set<Glob>();
    final int _phaseNumber;
  
negative.code:   /// other packages by actions which do hide their outputs.
    final bool _outputsHidden;
  
    /// The assets read during this step in sorted order.
    final assetsRead = new SplayTreeSet<AssetId>();
  
    SingleStepReader(this._delegate, this._assetGraph, this._phaseNumber,
        this._outputsHidden, this._primaryPackage, this._runPhaseForInput);
  
    /// The [Glob]s which have been searched with [findAssets].
    ///
  