anchor.diff:    StoreBasedSummaryResynthesizer _resynthesizer;
     LibraryElement _libraryElement;
   
  +  final Map<FileState, LineInfo> _fileToLineInfo = {};
  +  final Map<FileState, IgnoreInfo> _fileToIgnoreInfo = {};
  +
     final Map<FileState, RecordingErrorListener> _errorListeners = {};
     final Map<FileState, ErrorReporter> _errorReporters = {};
     final List<UsedImportedElements> _usedImportedElementsList = [];
  
positive.code:     Map<FileState, UnitAnalysisResult> results = {};
      units.forEach((file, unit) {
        List<AnalysisError> errors = _getErrorListener(file).errors;
        results[file] = new UnitAnalysisResult(file, unit, errors);
      });
      return results;
  
negative.code:     analysisContext.sourceFactory = _sourceFactory.clone();
      analysisContext.contentCache = new _ContentCacheWrapper(_fsState);
      this._context = analysisContext;
    }
  
    /**
     * Return a subset of the given [errors] that are not marked as ignored in
     * the [file].
     */
    List<AnalysisError> _filterIgnoredErrors(
        FileState file, List<AnalysisError> errors) {
      if (errors.isEmpty) {
        return errors;
      }
  
      IgnoreInfo ignoreInfo = _fileToIgnoreInfo[file];
      if (!ignoreInfo.hasIgnores) {
        return errors;
      }
  
      LineInfo lineInfo = _fileToLineInfo[file];
  
      bool isIgnored(AnalysisError error) {
        int errorLine = lineInfo.getLocation(error.offset).lineNumber;
        String errorCode = error.errorCode.name.toLowerCase();
        // Ignores can be on the line or just preceding the error.
        return ignoreInfo.ignoredAt(errorCode, errorLine) ||
            ignoreInfo.ignoredAt(errorCode, errorLine - 1);
      }
  
      return errors.where((AnalysisError e) => !isIgnored(e)).toList();
    }
  
    RecordingErrorListener _getErrorListener(FileState file) =>
  