anchor.diff:  StreamController _terminateWatchController;
   
   /// Start watching files and running builds.
  -Stream<BuildResult> startWatch(List<BuilderApplication> builders,
  +Future<BuildState> 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);
     });
  
positive.code:     group('simple', () {
        test('rebuilds on file updates', () async {
          var writer = new InMemoryRunnerAssetWriter();
          var results = new StreamQueue(
              startWatch([copyABuildApplication], {'a|web/a.txt': 'a'}, writer));
  
          var result = await results.next;
          checkBuild(result, outputs: {'a|web/a.txt.copy': 'a'}, writer: writer);
  
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,
  