anchor.diff:  /// the inherited variables.
   Future<PubProcessResult> runProcess(String executable, List<String> args,
       {workingDir, Map<String, String> environment}) {
  -  // TODO(nweiz): use _descriptorPool here.
  -  return _doProcess(Process.run, executable, args, workingDir, environment)
  -      .then((result) {
  -    // TODO(rnystrom): Remove this and change to returning one string.
  -    List<String> toLines(String output) {
  -      var lines = splitLines(output);
  -      if (!lines.isEmpty && lines.last == "") lines.removeLast();
  -      return lines;
  -    }
  -
  -    var pubResult = new PubProcessResult(toLines(result.stdout),
  -                                toLines(result.stderr),
  -                                result.exitCode);
  -
  -    log.processResult(executable, pubResult);
  -    return pubResult;
  +  return _descriptorPool.withResource(() {
  +    return _doProcess(Process.run, executable, args, workingDir, environment)
  +        .then((result) {
  +      // TODO(rnystrom): Remove this and change to returning one string.
  +      List<String> toLines(String output) {
  +        var lines = splitLines(output);
  +        if (!lines.isEmpty && lines.last == "") lines.removeLast();
  +        return lines;
  +      }
  +
  +      var pubResult = new PubProcessResult(toLines(result.stdout),
  +                                  toLines(result.stderr),
  +                                  result.exitCode);
  +
  +      log.processResult(executable, pubResult);
  +      return pubResult;
  +    });
     });
   }
   
  
positive.code:       throw new Exception("Failed to extract .tar.gz stream to $destination "
            "(exit code $exitCode).");
      }
      log.fine("Extracted .tar.gz stream to $destination. Exit code "
          "$exitCode.");
    });
  }
  
  
negative.code: /// the inherited variables.
  Future<PubProcess> startProcess(String executable, List<String> args,
      {workingDir, Map<String, String> environment}) {
    return _descriptorPool.request().then((resource) {
      return _doProcess(Process.start, executable, args, workingDir, environment)
          .then((ioProcess) {
        var process = new PubProcess(ioProcess);
        process.exitCode.whenComplete(resource.release);
        return process;
      });
    });
  }
  
  /// A wrapper around [Process] that exposes `dart:async`-style APIs.
  