@Override public BitDocIdSet getDocIdSet(LeafReaderContext context) throws IOException { final LeafReader reader = context.reader(); final Object key = reader.getCoreCacheKey(); DocIdSet docIdSet = cache.get(key); if (docIdSet == null) { docIdSet = filter.getDocIdSet(context, null); docIdSet = docIdSetToCache(docIdSet, reader); if (docIdSet == null) { // We use EMPTY as a sentinel for the empty set, which is cacheable docIdSet = DocIdSet.EMPTY; } cache.put(key, docIdSet); } return docIdSet == DocIdSet.EMPTY ? null : (BitDocIdSet) docIdSet; }