anchor.diff:   * 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();
  -
  -  final ResourceProvider resourceProvider;
  -  final String dartSdkPath;
   
     AnalyzerWorkerLoop(this.resourceProvider, AsyncWorkerConnection connection,
         {this.dartSdkPath})
  
positive.code:   final ResourceProvider resourceProvider;
    final CommandLineOptions options;
    final AnalysisStats stats;
  
    SummaryDataStore summaryDataStore;
    AnalysisOptions analysisOptions;
  
negative.code:    */
    @override
    Future<WorkResponse> performRequest(WorkRequest request) async {
      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;
        }
      });
    }
  
    /**
  