anchor.diff:     * [changeFile] invocation.
      */
     void changeFile(String path) {
  -    // TODO(scheglov) Don't clear, schedule API signature validation.
  -    _fileContentHashMap.clear();
  -    _dependencySignatureMap.clear();
  +    _filesToVerifyUnlinkedSignature.add(path);
       _filesToAnalyze.add(path);
  -    _filesToAnalyze.addAll(_explicitFiles);
  -    // TODO(scheglov) name?!
       _hasWorkStreamController.add('do it!');
     }
   
  
positive.code:   }
  
    /**
     * Ensure that the [contentHash] is filled.
     *
     * If the hash is already in the current file state, return the current
     * value. Otherwise, read the [content], compute the hash, put it into
     * the current file state, and update the [contentHash] field.
     *
     * The client should not remember values of this property, because its value
     * might change when [content] is read and the hash is recomputed.
     */
    String get contentHash {
      _contentHash ??= driver._fileContentHashMap[path];
      if (_contentHash == null) {
        _readContentAndComputeHash();
      }
      return _contentHash;
    }
  
    String get path => source.fullName;
  
negative.code:   final _explicitFiles = new LinkedHashSet<String>();
  
    /**
     * The set of files were reported as changed through [changeFile] and for
     * which API signatures should be recomputed and compared before performing
     * any other analysis.
     */
    final _filesToVerifyUnlinkedSignature = new Set<String>();
  
    /**
     * The set of files that are currently scheduled for analysis.
     */
    final _filesToAnalyze = new LinkedHashSet<String>();
  