text: public FSTTermsReader(SegmentReadState state, PostingsReaderBase postingsReader) throws IOException {final String termsFileName = IndexFileNames.segmentFileName(state.segmentInfo.name, state.segmentSuffix, FSTTermsWriter.TERMS_EXTENSION);this.postingsReader = postingsReader;final IndexInput in = state.directory.openInput(termsFileName, state.context);boolean success = false;try {CodecUtil.checkIndexHeader(in, FSTTermsWriter.TERMS_CODEC_NAME,FSTTermsWriter.TERMS_VERSION_START,FSTTermsWriter.TERMS_VERSION_CURRENT,state.segmentInfo.getId(), state.segmentSuffix);CodecUtil.checksumEntireFile(in);this.postingsReader.init(in, state);seekDir(in);final FieldInfos fieldInfos = state.fieldInfos;final int numFields = in.readVInt();for (int i = 0; i < numFields; i++) {int fieldNumber = in.readVInt();FieldInfo fieldInfo = fieldInfos.fieldInfo(fieldNumber);long numTerms = in.readVLong();long sumTotalTermFreq = in.readVLong();long sumDocFreq = fieldInfo.getIndexOptions() == IndexOptions.DOCS ? sumTotalTermFreq : in.readVLong();int docCount = in.readVInt();TermsReader current = new TermsReader(fieldInfo, in, numTerms, sumTotalTermFreq, sumDocFreq, docCount);TermsReader previous = fields.put(fieldInfo.name, current);checkFieldSummary(state.segmentInfo, in, current, previous);}success = true;} finally {if (success) {IOUtils.close(in);} else {IOUtils.closeWhileHandlingException(in);}}}