public SepPostingsReader(
      Directory dir,
      FieldInfos fieldInfos,
      SegmentInfo segmentInfo,
      IOContext context,
      IntStreamFactory intFactory,
      String segmentSuffix)
      throws IOException {
    boolean success = false;
    try {

      final String docFileName =
          IndexFileNames.segmentFileName(
              segmentInfo.name, segmentSuffix, SepPostingsWriter.DOC_EXTENSION);
      docIn = intFactory.openInput(dir, docFileName, context);

      skipIn =
          dir.openInput(
              IndexFileNames.segmentFileName(
                  segmentInfo.name, segmentSuffix, SepPostingsWriter.SKIP_EXTENSION),
              context);

      if (fieldInfos.hasFreq()) {
        freqIn =
            intFactory.openInput(
                dir,
                IndexFileNames.segmentFileName(
                    segmentInfo.name, segmentSuffix, SepPostingsWriter.FREQ_EXTENSION),
                context);
      } else {
        freqIn = null;
      }
      if (fieldInfos.hasProx()) {
        posIn =
            intFactory.openInput(
                dir,
                IndexFileNames.segmentFileName(
                    segmentInfo.name, segmentSuffix, SepPostingsWriter.POS_EXTENSION),
                context);
        payloadIn =
            dir.openInput(
                IndexFileNames.segmentFileName(
                    segmentInfo.name, segmentSuffix, SepPostingsWriter.PAYLOAD_EXTENSION),
                context);
      } else {
        posIn = null;
        payloadIn = null;
      }
      success = true;
    } finally {
      if (!success) {
        close();
      }
    }
  }