anchor.diff:    final List<Source> explicitSources = <Source>[];
     final List<PackageBundle> unlinkedBundles = <PackageBundle>[];
   
  -  PerformanceLog logger = new PerformanceLog(null);
     AnalysisDriver analysisDriver;
   
     PackageBundleAssembler assembler;
     final Set<Source> processedSources = new Set<Source>();
     final Map<String, UnlinkedUnit> uriToUnit = <String, UnlinkedUnit>{};
   
  -  BuildMode(this.resourceProvider, this.options, this.stats);
  +  BuildMode(this.resourceProvider, this.options, this.stats,
  +      {PerformanceLog logger})
  +      : logger = logger ?? new PerformanceLog(null);
   
     bool get _shouldOutputSummary =>
         options.buildSummaryOutput != null ||
  
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:    */
    @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;
        }
      });
    }
  
    /**
  