@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);
 }
 public long getUniqueTermCount() throws IOException {
   return delegateFieldsProducer.getUniqueTermCount();
 }
 @Override
 public int size() {
   return delegateFieldsProducer.size();
 }
 @Override
 public void close() throws IOException {
   delegateFieldsProducer.close();
 }
 @Override
 public Iterator<String> iterator() {
   return delegateFieldsProducer.iterator();
 }
 @Override
 public FieldsProducer getMergeInstance() throws IOException {
   return delegateProducer.getMergeInstance();
 }
 @Override
 public void checkIntegrity() throws IOException {
   delegateProducer.checkIntegrity();
 }
 @Override
 public long ramBytesUsed() {
   return (lookupFactory == null ? 0 : lookupFactory.ramBytesUsed())
       + delegateProducer.ramBytesUsed();
 }
 @Override
 public long ramBytesUsed() {
   return in.ramBytesUsed();
 }
 @Override
 public void checkIntegrity() throws IOException {
   in.checkIntegrity();
 }
 @Override
 public long getUniqueTermCount() throws IOException {
   return in.getUniqueTermCount();
 }
 @Override
 public int size() {
   return in.size();
 }
 @Override
 public Terms terms(String field) throws IOException {
   Terms terms = in.terms(field);
   return terms == null ? null : new AssertingAtomicReader.AssertingTerms(terms);
 }
 @Override
 public Iterator<String> iterator() {
   Iterator<String> iterator = in.iterator();
   assert iterator != null;
   return iterator;
 }
 @Override
 public void close() throws IOException {
   in.close();
 }