anchor.diff:      });
   
       items[path] = type;
  -  });
  +  }
   
     return items;
   }
   
  -Future _populateFiles(Directory directory, StreamController<String> controller,
  -    {bool followLinks: false}) async {
  -  return directory
  -      .list(recursive: false, followLinks: followLinks)
  -      .asyncMap((fse) {
  +Stream<String> _populateFiles(Directory directory,
  +    {bool followLinks: false}) async* {
  +  await for (var fse
  +      in directory.list(recursive: false, followLinks: followLinks)) {
       if (p.basename(fse.path).startsWith('.')) {
  -      return null;
  +      continue;
       }
   
       if (fse is File) {
  -      controller.add(fse.path);
  +      yield fse.path;
       } else if (fse is Directory) {
  -      return _populateFiles(fse, controller, followLinks: followLinks);
  +      yield* _populateFiles(fse, followLinks: followLinks);
       }
  -  }).drain();
  +  }
   }
   
   /// Returns a new list of files that includes [paths] plus all files in the same
  
positive.code: 
    var items = <String, FileSystemEntityType>{};
  
    await Future.forEach(searchPaths, (path) async {
      var type = await FileSystemEntity.type(path);
  
      if (type != FileSystemEntityType.FILE &&
          type != FileSystemEntityType.DIRECTORY) {
        return;
      }
  
      /// If there is overlap with the provided paths, just fail.
  
negative.code: /// Returned results will be those files that match file paths or are within
  /// directories defined in the list.
  Stream<String> getFiles(String directoryPath,
      {List<String> searchList, bool followLinks: false}) async* {
    if (searchList == null) {
      searchList = <String>[];
    }
  
    var map = await _expandSearchList(directoryPath, searchList);
    var searchDirs = <String>[];
  
    for (var path in map.keys) {
      var type = map[path];
  
      if (type == FileSystemEntityType.FILE) {
        yield path;
      } else {
        searchDirs.add(path);
      }
    }
  
    for (var path in searchDirs) {
      var rootDir = new Directory(path);
  
      yield* _populateFiles(rootDir, followLinks: followLinks);
    }
  }
  
  Future<Map<String, FileSystemEntityType>> _expandSearchList(
  