anchor.diff:  // TODO: ${e.todo}''';
         }
       }
  +
       if (createdUnit != null) {
  -      outputs.add(new GeneratedOutput(element, gen, createdUnit));
  +      controller.add(new GeneratedOutput(element, gen, createdUnit));
       }
  -  }
  +  }).whenComplete(() => controller.close());
   
  -  return outputs;
  +  return controller.stream;
   }
   
   final _headerLine = '// '.padRight(77, '*');
  
positive.code: 
  ''';
  
  // TODO(kevmoo) make this a Stream
  Future<List<GeneratedOutput>> _generate(
      LibraryElement unit, List<Generator> generators) async {
    var code = <GeneratedOutput>[];
  
    for (var element in getElementsFromLibraryElement(unit)) {
      var subCode = await _processUnitMember(element, generators);
      code.addAll(subCode);
    }
  
    return code;
  }
  
  // TODO(kevmoo) make this a Stream
  Future<List<GeneratedOutput>> _processUnitMember(
      Element element, List<Generator> generators) async {
    var outputs = <GeneratedOutput>[];
  
    for (var gen in generators) {
      String createdUnit;
  
      try {
  
negative.code: 
  Future<String> _generateForLibrary(LibraryElement library, String projectPath,
      List<Generator> generators) async {
    var generatedOutputs = await _generate(library, generators).toList();
  
    var genFileName = _getGeterateFilePath(library, projectPath);
  
  