anchor.diff:     * [changeFile] invocation.
      */
     void changeFile(String path) {
  -    _filesToVerifyUnlinkedSignature.add(path);
  +    _changedFiles.add(path);
       _filesToAnalyze.add(path);
       _hasWork.notify();
     }
  
positive.code:     try {
        PerformanceLogSection analysisSection = null;
        while (true) {
          // TODO(scheglov) implement state transitioning
          await _hasWork.signal;
  
          if (analysisSection == null) {
            analysisSection = _logger.enter('Analyzing');
          }
  
          // TODO(scheglov) verify one file at a time
          _verifyUnlinkedSignatureOfChangedFiles();
  
          // Analyze the first file in the general queue.
          if (_filesToAnalyze.isNotEmpty) {
            String path = _filesToAnalyze.first;
            _filesToAnalyze.remove(path);
            _File file = _fileForPath(path);
            AnalysisResult result = _computeAnalysisResult(file);
            yield result;
          }
  
          // If there is work to do, notify the monitor.
          if (_filesToAnalyze.isNotEmpty) {
            _hasWork.notify();
          } else {
            analysisSection.exit();
            analysisSection = null;
          }
        }
        // TODO(scheglov) implement
      } finally {
  
negative.code:   final _explicitFiles = new LinkedHashSet<String>();
  
    /**
     * The set of files were reported as changed through [changeFile] and not
     * checked for actual changes yet.
     */
    final _changedFiles = new LinkedHashSet<String>();
  
    /**
     * The set of files that are currently scheduled for analysis.
  