docs: static long inPlacePropagateCarry(
            final int startingLevel,
            final DoublesBufferAccessor optSrcKBuf,
            final DoublesBufferAccessor size2KBuf,
            final boolean doUpdateVersion,
            final int k,
            final DoublesSketchAccessor tgtSketchBuf,
            final long bitPattern) {
      final int endingLevel = Util.lowestZeroBitStartingAt(bitPattern, startingLevel);
      tgtSketchBuf.setLevel(endingLevel);
      if (doUpdateVersion) { // update version of computation
        // its is okay for optSrcKBuf to be null in this case
        zipSize2KBuffer(size2KBuf, tgtSketchBuf);
      } else { // mergeInto version of computation
        assert (optSrcKBuf != null);
        tgtSketchBuf.putArray(optSrcKBuf.getArray(0, k), 0, 0, k);
      }
  
      for (int lvl = startingLevel; lvl < endingLevel; lvl++) {
        assert (bitPattern & (1L << lvl)) > 0; // internal consistency check
        final DoublesSketchAccessor currLevelBuf = tgtSketchBuf.copyAndSetLevel(lvl);
        mergeTwoSizeKBuffers(
                currLevelBuf, // target level: lvl
                tgtSketchBuf, // target level: endingLevel
                size2KBuf);
        zipSize2KBuffer(size2KBuf, tgtSketchBuf);
      } // end of loop over lower levels
  
      // update bit pattern with binary-arithmetic ripple carry
      return bitPattern + (1L << startingLevel);
    }