docs: private int computeRequiredBufferNum(int numChildNodes, int combineDegree)
    {
      // numChildrenForLastNode used to determine that the last node is needed for the current level.
      // Please see buildCombineTree() for more details.
      final int numChildrenForLastNode = numChildNodes % combineDegree;
      final int numCurLevelNodes = numChildNodes / combineDegree + (numChildrenForLastNode > 1 ? 1 : 0);
      final int numChildOfParentNodes = numCurLevelNodes + (numChildrenForLastNode == 1 ? 1 : 0);
  
      if (numChildOfParentNodes == 1) {
        return numCurLevelNodes;
      } else {
        return numCurLevelNodes +
               computeRequiredBufferNum(numChildOfParentNodes, intermediateCombineDegree);
      }
    }