docs: private List<CLIQUESubspace> pruneDenseSubspaces(List<CLIQUESubspace> denseSubspaces) {
      int[][] means = computeMeans(denseSubspaces);
      double[][] diffs = computeDiffs(denseSubspaces, means[0], means[1]);
      double[] codeLength = new double[denseSubspaces.size()];
      double minCL = Double.MAX_VALUE;
      int min_i = -1;
  
      for(int i = 0; i < denseSubspaces.size(); i++) {
        int mi = means[0][i], mp = means[1][i];
        double cl = codeLength[i] = log2OrZero(mi) + diffs[0][i] + log2OrZero(mp) + diffs[1][i];
  
        if(cl <= minCL) {
          minCL = cl;
          min_i = i;
        }
      }
  
      return denseSubspaces.subList(0, min_i + 1);
    }