code: protected synchronized NumericTermsSet getTermsSet() {
      if (encodedTerms != null) { // late decoding of the encoded terms
        long start = System.nanoTime();
        termsSet = (NumericTermsSet) TermsSet.readFrom(new BytesRef(encodedTerms));
        logger.debug("{}: Deserialized {} terms - took {} ms", new Object[] { Thread.currentThread().getName(), termsSet.size(), (System.nanoTime() - start) / 1000000 });
        encodedTerms = null; // release reference to the byte array to be able to reclaim memory
      }
      return termsSet;
    }
docs: Returns the set of terms. This method will perform a late-decoding of the encoded terms, and will release the
  byte array. This method needs to be synchronized as each segment thread will call it concurrently.