@Override
 public Terms terms(String field) throws IOException {
   FuzzySet filter = bloomsByFieldName.get(field);
   if (filter == null) {
     return delegateFieldsProducer.terms(field);
   } else {
     Terms result = delegateFieldsProducer.terms(field);
     if (result == null) {
       return null;
     }
     return new BloomFilteredTerms(result, filter);
   }
 }
 @Override
 public Terms terms(String field) throws IOException {
   final Terms terms = delegateProducer.terms(field);
   if (terms == null || lookupFactory == null) {
     return terms;
   }
   return new CompletionTerms(terms, lookupFactory);
 }
 @Override
 public Terms terms(String field) throws IOException {
   Terms terms = in.terms(field);
   return terms == null ? null : new AssertingAtomicReader.AssertingTerms(terms);
 }