anchor.diff:            int colNumber = int.parse(groups[5]);
             try {
               File source = new File(filename);
  -            List<String> sourceLines = source.readAsLinesSync();
  +            List<String> sourceLines = cache.getSourceFor(source);
               if (lineNumber > sourceLines.length)
                 throw new FileChanged();
               String sourceLine = sourceLines[lineNumber-1];
  
positive.code:     return '${severity.toLowerCase().padLeft(7)} $sep $message $sep $relativePath:$startLine:$startColumn';
    }
  }
  
negative.code: 
      Set<String> changedFiles = new Set<String>(); // files about which we've complained that they changed
  
      _SourceCache cache = new _SourceCache(10);
  
      int membersMissingDocumentation = 0;
      List<String> errorLines = output.toString().split('\n');
      for (String errorLine in errorLines) {
  