anchor.diff:        terminateEventStream: _terminateWatchController.stream,
         logLevel: Level.OFF,
         skipBuildScriptCheck: true);
  -  buildState
  -      .then((s) => buildResults.addStream(s.buildResults))
  -      .then((_) => buildResults.close());
  -  return buildResults.stream;
   }
   
   /// Tells the program to stop watching files and terminate.
  
positive.code: StreamController _terminateWatchController;
  
  /// Start watching files and running builds.
  Stream<BuildResult> startWatch(List<BuilderApplication> builders,
      Map<String, String> inputs, InMemoryRunnerAssetWriter writer,
      {PackageGraph packageGraph}) {
    var buildResults = new StreamController<BuildResult>.broadcast();
    inputs.forEach((serializedId, contents) {
      writer.writeAsString(makeAssetId(serializedId), contents);
    });
  
negative.code: 
        test('rebuilds properly update asset_graph.json', () async {
          var writer = new InMemoryRunnerAssetWriter();
          var buildState = await startWatch([copyABuildApplication],
              {'a|web/a.txt': 'a', 'a|web/b.txt': 'b'}, writer);
          var results = new StreamQueue(buildState.buildResults);
  
          var result = await results.next;
          checkBuild(result,
  