anchor.diff:    @override
     Stream<String> validateEntity(FileSystemEntity entity) {
       assert(entity != null);
  -    return _streamFromIterableFuture(_getValidation(entity));
  +    return _oneOrNoneOnNull(_getValidation(entity));
     }
   
  -  Future<List<String>> _getValidation(FileSystemEntity entity) {
  +  Future<String> _getValidation(FileSystemEntity entity) {
       assert(entity != null);
   
       final entType = _getType(entity);
  
positive.code:   return completer.future;
  }
  
  // TODO: move to bot?
  Stream _streamFromIterableFuture(Future<Iterable> future) {
    final controller = new StreamController();
  
    future
      .then((Iterable values) {
        for(var value in values) {
          controller.add(value);
        }
      })
      .catchError((error, stack) {
        controller.addError(error, stack);
      })
      .whenComplete(() {
        controller.close();
      });
  
    return controller.stream;
  }
  
  String _getStringSha1(String content) {
    final bytes = UTF8.encode(content);
  
negative.code:     var future = fileSha1Hex(entity)
          .then((String sha1) {
            if(sha1 == targetSha) {
              return null;
            } else {
              return 'content does not match: $entity';
            }
          });
  
      return _oneOrNoneOnNull(future);
    }
  
    static Stream<String> validateDirectoryFromMap(FileSystemEntity entity,
  