anchor.diff:    file.exists((exists) => completer.complete(exists));
   
     return completer.future;
  -  */
   }
   
   /**
  
positive.code:  * [Directory]. Returns a [Future] that completes when the deletion is done.
   */
  Future<Directory> deleteDir(dir) {
    // TODO(rnystrom): Hack! Temporary! Right now, dart:io's Directory delete
    // method can't handle directories with symlinks, which is exactly what pub
    // creates and deletes. Instead, we'll just shell out to 'rm'. Remove this
    // when dartbug.com/2646 is fixed.
    dir = _getDirectory(dir);
  
    // Sanity check!
    if (dir.path == '/' ||
        dir.path == '.' ||
        dir.path == '..' ||
        dir.path == '~' ||
        dir.path == '*') throw "(O.o) I don't think you want to do that!";
  
    return runProcess('rm', ['-rf', dir.path]).transform((_) => dir);
    // End hack!
  
    // Real code:
    /*
    final completer = new Completer<Directory>();
    dir = _getDirectory(dir);
    dir.onError = (error) => completer.completeException(error);
    dir.deleteRecursively(() => completer.complete(dir));
  
    return completer.future;
    */
  }
  
  /**
  
negative.code:  * the result.
   */
  Future<bool> fileExists(file) {
    final completer = new Completer<bool>();
  
    file = new File(_getPath(file));
  