anchor.diff:  
           processArgs.addAll([filePath.toNativePath()]);
   
  -        return Process.run('dart_analyzer', processArgs);
  +        return Process.start('dart_analyzer', processArgs);
         })
  -      .then((ProcessResult processResult) {
  -        if (processResult.exitCode == 127) {
  -          // Check for exit code, something went wrong here.
  -          var sb = new StringBuffer();
  -          sb.add(processResult.stderr);
  -          sb.add(processResult.stdout);
  -          sb.add("Exit Code 127");
  -          throw sb.toString();
  +      .then((process) {
  +        if(verbose) {
  +          return pipeProcess(process,
  +              stdOutWriter: context.fine,
  +              stdErrWriter: context.severe);
           } else {
  -          var analyzerResult = new _AnalyzerResult(filePath, processResult);
  -          return analyzerResult;
  +          return pipeProcess(process);
           }
         })
         .whenComplete(() {
  
positive.code: // TODO(adam): use verbose
  
  part of hop_tasks;
  
  class _AnalyzerResult {
    final ProcessResult processResult;
    final Path path;
  
    _AnalyzerResult(this.path, this.processResult);
  
    String toString() {
      return "${_getPrefix(processResult.exitCode)}: $path";
    }
  
    String toVerboseString() {
      return '''${toString()}
  ${processResult.stdout}
  ${processResult.stderr}''';
    }
  
    static String _getPrefix(int exitCode) {
      switch(exitCode) {
        case 0:
          return "PASSED";
        case 1:
          return "WARNING";
        case 2:
          return "ERROR";
        default:
          return "Unknown exit code $exitCode";
      }
    }
  }
  
  Task createDartAnalyzerTask(Iterable<String> files) {
    return new Task.async((context) {
  
negative.code: 
  Future<bool> _processAnalyzerFile(TaskContext context, List<Path> analyzerFilePaths,
      bool enableTypeChecks, bool verbose) {
  
    int errorsCount = 0;
    int passedCount = 0;
    int warningCount = 0;
  
    return Future.forEach(analyzerFilePaths, (Path path) {
      return _analyzer(context, path, enableTypeChecks, verbose)
          .then((int exitCode) {
  
            String prefix;
  
            switch(exitCode) {
              case 0:
                prefix = "PASSED";
                passedCount++;
                break;
              case 1:
                prefix = "WARNING";
                warningCount++;
                break;
              case 2:
                prefix =  "ERROR";
                errorsCount++;
                break;
              default:
                prefix = "Unknown exit code $exitCode";
                errorsCount++;
                break;
            }
  
            context.info("$prefix - $path");
          });
      })
      .then((_) {
        context.info("PASSED: ${passedCount}, WARNING: ${warningCount}, ERROR: ${errorsCount}");
        return errorsCount == 0;
      });
  }
  
  Future<int> _analyzer(TaskContext context, Path filePath, bool enableTypeChecks,
      bool verbose) {
    TempDir tmpDir;
  
    return TempDir.create()
  