anchor.diff:   */
   Future<File> deleteFile(file) {
     return new File(_getPath(file)).delete();
  +}
  +
  +/// Writes [stream] to a new file at [path], which may be a [String] or a
  +/// [File]. Will replace any file already at that path. Completes when the file
  +/// is done being written.
  +Future<File> createFileFromStream(InputStream stream, path) {
  +  path = _getPath(path);
  +
  +  var completer = new Completer<File>();
  +  var file = new File(path);
  +  var outputStream = file.openOutputStream();
  +  stream.pipe(outputStream);
  +
  +  outputStream.onClosed = () {
  +    completer.complete(file);
  +  };
  +
  +  completeError(error) {
  +    if (!completer.isComplete) completer.completeException(error);
  +  }
  +
  +  stream.onError = completeError;
  +  outputStream.onError = completeError;
  +
  +  return completer.future;
   }
   
   /**
  
positive.code: }
  
  Future<bool> _extractTarGzWindows(InputStream stream, String destination) {
    // Find 7zip.
    var scriptPath = new File(new Options().script).fullPathSync();
    var scriptDir = new Path.fromNative(scriptPath).directoryPath;
  
negative.code:   // Note: This line of code gets munged by create_sdk.py to be the correct
    // relative path to 7zip in the SDK.
    var pathTo7zip = '../../third_party/7zip/7za.exe';
    var command = scriptDir.append(pathTo7zip).canonicalize().toNativePath();
  
    var tempDir;
  
    return createTempDir().chain((temp) {
      // Write the archive to a temp file.
      tempDir = temp;
      return createFileFromStream(stream, join(tempDir, 'data.tar.gz'));
    }).chain((tarGz) {
      // 7zip can't unarchive from gzip -> tar -> destination all in one step
      // first we un-gzip it to a tar file.
      // Note: Setting the working directory instead of passing in a full file
      // path because 7zip says "A full path is not allowed here."
      return runProcess(command, ['e', 'data.tar.gz'], workingDir: tempDir);
    }).chain((result) {
      if (result.exitCode != 0) {
        throw 'Could not un-gzip (exit code ${result.exitCode}). Error:\n'
            '${Strings.join(result.stderr, "\n")}';
      }
  
      // Find the tar file we just created since we don't know its name.
      return listDir(tempDir);
    }).chain((files) {
      var tarFile;
      for (var file in files) {
        if (new Path(file).extension == 'tar') {
          tarFile = file;
          break;
        }
      }
  
      if (tarFile == null) throw 'The gzip file did not contain a tar file.';
  
      // Untar the archive into the destination directory.
      return runProcess(command, ['x', '-o"$destination"', tarFile],
          workingDir: tempDir);
    }).chain((result) {
      if (result.exitCode != 0) {
        throw 'Could not un-tar (exit code ${result.exitCode}). Error:\n'
            '${Strings.join(result.stderr, "\n")}';
      }
  
      // Clean up the temp directory.
      // TODO(rnystrom): Should also delete this if anything fails.
      return deleteDir(tempDir);
    }).transform((_) => true);
  }
  
  /**
  