anchor.diff:  
   /// Cumulative time spent scanning.
   Stopwatch scanTimer = new Stopwatch();
  +
  +/// Cumulative time spent parsing.
  +Stopwatch parseTimer = new Stopwatch();
  +
  +/// Cumulative time spent building unlinked summaries.
  +Stopwatch unlinkedSummarizeTimer = new Stopwatch();
   
   /// Factory to load and resolve app, packages, and sdk sources.
   SourceFactory sources;
  
positive.code:   scanTimer = new Stopwatch();
    var old = scanTotalChars;
    scanTotalChars = 0;
    var summarizeTimer = new Stopwatch()..start();
    for (var source in files) {
      unlinkedSummarize(source);
    }
    summarizeTimer.stop();
  
    if (old != scanTotalChars) print('input size changed? ${old} chars');
  
    // TODO(paulberry): subtract out scan/parse time?
    var summarizeTime = summarizeTimer.elapsedMicroseconds;
    report('unlinked summarize', summarizeTime);
  }
  
  /// Add to [files] all sources reachable from [start].
  
negative.code:   scanTimer = new Stopwatch();
    var old = scanTotalChars;
    scanTotalChars = 0;
    parseTimer = new Stopwatch();
    for (var source in files) {
      parseFull(source);
    }
  
    // Report size and scanning time again. See discussion above.
    if (old != scanTotalChars) print('input size changed? ${old} chars');
    report("scan", scanTimer.elapsedMicroseconds);
    report("parse", parseTimer.elapsedMicroseconds);
  }
  
  /// Produces unlinked summaries for every file in [files] and reports the time
  