}
public BitSet bits(IndexReader reader) throws IOException {
if (cache == null) {
log.debug("Initialising SoftLimitMRUCache with hard ref size of {}", size);
cache = new SoftLimitMRUCache(size);
}
//memory barrier ensure cache == null will not always stay true on concurrent threads
synchronized (cache) { // check cache
BitSet cached = (BitSet) cache.get(reader);