docs: private static boolean needSecondRoundTermvector(
        List<ComponentTermVector> termVectorList) throws IOException {
      boolean needSecondRound = false;
      for (ComponentTermVector termVector : termVectorList) {
        if (!termVector.full && termVector.list == null) {
          boolean doCheck;
          doCheck = termVector.subComponentFunction.dataCollector.segmentRegistration != null
              && (termVector.subComponentFunction.dataCollector.segmentRegistration
                  .equals(MtasDataCollector.SEGMENT_SORT_ASC)
                  || termVector.subComponentFunction.dataCollector.segmentRegistration
                      .equals(MtasDataCollector.SEGMENT_SORT_DESC))
              && termVector.number > 0;
          doCheck |= termVector.subComponentFunction.dataCollector.segmentRegistration != null
              && (termVector.subComponentFunction.dataCollector.segmentRegistration
                  .equals(MtasDataCollector.SEGMENT_BOUNDARY_ASC)
                  || termVector.subComponentFunction.dataCollector.segmentRegistration
                      .equals(MtasDataCollector.SEGMENT_BOUNDARY_DESC))
              && termVector.number > 0;
          if (doCheck) {
            termVector.subComponentFunction.dataCollector.recomputeSegmentKeys();
            if (!termVector.subComponentFunction.dataCollector
                .checkExistenceNecessaryKeys()) {
              needSecondRound = true;
            }
            termVector.subComponentFunction.dataCollector.reduceToSegmentKeys();
          }
        }
      }
      return needSecondRound;
    }