anchor.diff:  
   ''';
   
  -// TODO(kevmoo) make this a Stream
  -Future<List<GeneratedOutput>> _generate(
  -    LibraryElement unit, List<Generator> generators) async {
  -  var code = <GeneratedOutput>[];
  +// TODO(kevmoo) using async* when we can
  +Stream<GeneratedOutput> _generate(
  +    LibraryElement unit, List<Generator> generators) {
  +  var controller = new StreamController<GeneratedOutput>();
   
  -  for (var element in getElementsFromLibraryElement(unit)) {
  -    var subCode = await _processUnitMember(element, generators);
  -    code.addAll(subCode);
  -  }
  +  Future.forEach(getElementsFromLibraryElement(unit), (element) async {
  +    return controller.addStream(_processUnitMember(element, generators));
  +  }).whenComplete(() => controller.close());
   
  -  return code;
  +  return controller.stream;
   }
   
  -// TODO(kevmoo) make this a Stream
  -Future<List<GeneratedOutput>> _processUnitMember(
  -    Element element, List<Generator> generators) async {
  -  var outputs = <GeneratedOutput>[];
  +// TODO(kevmoo) use async* when we can
  +Stream<GeneratedOutput> _processUnitMember(
  +    Element element, List<Generator> generators) {
  +  var controller = new StreamController<GeneratedOutput>();
   
  -  for (var gen in generators) {
  +  Future.forEach(generators, (gen) async {
       String createdUnit;
   
       try {
  
positive.code: // TODO: ${e.todo}''';
        }
      }
      if (createdUnit != null) {
        outputs.add(new GeneratedOutput(element, gen, createdUnit));
      }
    }
  
    return outputs;
  }
  
  final _headerLine = '// '.padRight(77, '*');
  
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);
  
  