anchor.diff:     */
     @override
     Future<WorkResponse> performRequest(WorkRequest request) async {
  -    errorBuffer.clear();
  -    outBuffer.clear();
  -    try {
  -      // Add in the dart-sdk argument if `dartSdkPath` is not null, otherwise it
  -      // will try to find the currently installed sdk.
  -      var arguments = new List<String>.from(request.arguments);
  -      if (dartSdkPath != null &&
  -          !arguments.any((arg) => arg.startsWith('--dart-sdk'))) {
  -        arguments.add('--dart-sdk=$dartSdkPath');
  -      }
  -      // Prepare options.
  -      CommandLineOptions options =
  -          CommandLineOptions.parse(arguments, printAndFail: (String msg) {
  -        throw new ArgumentError(msg);
  -      });
  -      // Analyze and respond.
  -      await analyze(options);
  -      String msg = _getErrorOutputBuffersText();
  -      return new WorkResponse()
  -        ..exitCode = EXIT_CODE_OK
  -        ..output = msg;
  -    } catch (e, st) {
  -      String msg = _getErrorOutputBuffersText();
  -      msg += '$e\n$st';
  -      return new WorkResponse()
  -        ..exitCode = EXIT_CODE_ERROR
  -        ..output = msg;
  -    }
  +    return logger.run('Perform request', () async {
  +      errorBuffer.clear();
  +      outBuffer.clear();
  +      try {
  +        // Add in the dart-sdk argument if `dartSdkPath` is not null,
  +        // otherwise it will try to find the currently installed sdk.
  +        var arguments = request.arguments.toList();
  +        if (dartSdkPath != null &&
  +            !arguments.any((arg) => arg.startsWith('--dart-sdk'))) {
  +          arguments.add('--dart-sdk=$dartSdkPath');
  +        }
  +        // Prepare options.
  +        CommandLineOptions options =
  +            CommandLineOptions.parse(arguments, printAndFail: (String msg) {
  +          throw new ArgumentError(msg);
  +        });
  +        // Analyze and respond.
  +        await analyze(options);
  +        String msg = _getErrorOutputBuffersText();
  +        return new WorkResponse()
  +          ..exitCode = EXIT_CODE_OK
  +          ..output = msg;
  +      } catch (e, st) {
  +        String msg = _getErrorOutputBuffersText();
  +        msg += '$e\n$st';
  +        return new WorkResponse()
  +          ..exitCode = EXIT_CODE_ERROR
  +          ..output = msg;
  +      }
  +    });
     }
   
     /**
  
positive.code:    * Performs analysis with given [options].
     */
    Future<Null> analyze(CommandLineOptions options) async {
      var buildMode =
          new BuildMode(resourceProvider, options, new AnalysisStats());
      await buildMode.analyze();
      AnalysisEngine.instance.clearCaches();
    }
  
negative.code:  * Persistent Bazel worker.
   */
  class AnalyzerWorkerLoop extends AsyncWorkerLoop {
    final ResourceProvider resourceProvider;
    final PerformanceLog logger = new PerformanceLog(null);
    final String dartSdkPath;
  
    final StringBuffer errorBuffer = new StringBuffer();
    final StringBuffer outBuffer = new StringBuffer();
  
    AnalyzerWorkerLoop(this.resourceProvider, AsyncWorkerConnection connection,
        {this.dartSdkPath})
  