docs: static long[] bitMatrixOfSketch(final CpcSketch sketch) {
      final int k = (1 << sketch.lgK);
      final int offset = sketch.windowOffset;
      assert (offset >= 0) && (offset <= 56);
  
      final long[] matrix = new long[k];
  
      if (sketch.numCoupons == 0) {
        return matrix; // Returning a matrix of zeros rather than NULL.
      }
  
      //Fill the matrix with default rows in which the "early zone" is filled with ones.
      //This is essential for the routine's O(k) time cost (as opposed to O(C)).
      final long defaultRow = (1L << offset) - 1L;
      Arrays.fill(matrix, defaultRow);
  
      final byte[] window = sketch.slidingWindow;
      if (window != null) { // In other words, we are in window mode, not sparse mode.
        for (int i = 0; i < k; i++) { // set the window bits, trusting the sketch's current offset.
          matrix[i] |= ((window[i] & 0XFFL) << offset);
        }
      }
      final PairTable table = sketch.pairTable;
      assert (table != null);
      final int[] slots = table.getSlotsArr();
      final int numSlots = 1 << table.getLgSizeInts();
  
      for (int i = 0; i < numSlots; i++) {
        final int rowCol = slots[i];
        if (rowCol != -1) {
          final int col = rowCol & 63;
          final int row = rowCol >>> 6;
          // Flip the specified matrix bit from its default value.
          // In the "early" zone the bit changes from 1 to 0.
          // In the "late" zone the bit changes from 0 to 1.
          matrix[row] ^= (1L << col);
        }
      }
      return matrix;
    }