docs: private static void createTermvectorSecondRound(
        List<ComponentTermVector> termVectorList,
        Map<Integer, Integer> positionsData, List<Integer> docSet, Terms t,
        LeafReader r, LeafReaderContext lrc, Status status) throws IOException {
      if (t != null) {
        BytesRef term;
        TermsEnum termsEnum;
        PostingsEnum postingsEnum = null;
        String segmentName = "segment" + lrc.ord;
        int segmentNumber = lrc.parent.leaves().size();
        String[] mutableKey = new String[1];
        for (ComponentTermVector termVector : termVectorList) {
          if (!termVector.full && termVector.list == null
              && (termVector.subComponentFunction.dataCollector.segmentRecomputeKeyList != null
                  && termVector.subComponentFunction.dataCollector.segmentRecomputeKeyList
                      .containsKey(segmentName))) {
            Set<String> recomputeKeyList = termVector.subComponentFunction.dataCollector.segmentRecomputeKeyList
                .get(segmentName);
            if (!recomputeKeyList.isEmpty()) {
              Map<String, Automaton> automatonMap = MtasToken.createAutomatonMap(
                  termVector.prefix, new ArrayList<String>(recomputeKeyList),
                  true);
              List<CompiledAutomaton> listCompiledAutomata = MtasToken
                  .createAutomata(termVector.prefix, termVector.regexp,
                      automatonMap);
              for (CompiledAutomaton compiledAutomaton : listCompiledAutomata) {
                if (!compiledAutomaton.type
                    .equals(CompiledAutomaton.AUTOMATON_TYPE.NONE)) {
                  termsEnum = t.intersect(compiledAutomaton, null);
                  termVector.subComponentFunction.dataCollector.initNewList(
                      termVector.subComponentFunction.dataCollector.segmentKeys
                          .size(),
                      segmentName, segmentNumber, termVector.boundary);
                  RegisterStatus registerStatus = null;
                  if (termVector.functions != null) {
                    for (SubComponentFunction function : termVector.functions) {
                      function.dataCollector.initNewList((int) t.size(),
                          segmentName, segmentNumber, null);
                    }
                  }
                  if (!docSet.isEmpty()) {
                    int termDocId;
                    while ((term = termsEnum.next()) != null) {
                      if (validateTermWithStartValue(term, termVector)) {
                        termDocId = -1;
                        mutableKey[0] = null;
                        // compute numbers;
                        TermvectorNumberBasic numberBasic = computeTermvectorNumberBasic(
                            docSet, termDocId, termsEnum, r, lrc, postingsEnum);
                        if (numberBasic.docNumber > 0) {
                          registerStatus = registerValue(term, termVector,
                              numberBasic, 0, segmentNumber, true, mutableKey);
                          if (registerStatus != null) {
                            TermvectorNumberFull numberFull = computeTermvectorNumberFull(
                                docSet, termDocId, termsEnum, lrc, postingsEnum,
                                positionsData);
                            if (numberFull.docNumber > 0) {
                              registerValue(term, termVector, numberFull,
                                  mutableKey);
                            }
                          }
                        }
                      }
                    }
                  }
                  termVector.subComponentFunction.dataCollector.closeNewList();
                  if (termVector.functions != null) {
                    for (SubComponentFunction function : termVector.functions) {
                      function.dataCollector.closeNewList();
                    }
                  }
                }
              }
            }
          }
        }
      }
    }