docs: private double generateDistributionsAndSurfaceSums(int minEntries, int maxEntries, int[] entriesByLB, int[] entriesByUB) {
      // the old variant is minimally slower
      // double surfaceSum = 0;
      // for(int limit = minEntries; limit <= maxEntries; limit++) {
      // HyperBoundingBox mbr1 = mbr(entriesByLB, 0, limit);
      // HyperBoundingBox mbr2 = mbr(entriesByLB, limit, entriesByLB.length);
      // surfaceSum += mbr1.perimeter() + mbr2.perimeter();
      // mbr1 = mbr(entriesByUB, 0, limit);
      // mbr2 = mbr(entriesByUB, limit, entriesByUB.length);
      // surfaceSum += mbr1.perimeter() + mbr2.perimeter();
      // }
      // return surfaceSum;
      int dim = tree.getDimensionality();
      // get surface sum for lower-bound sorting
      double surfaceSum = getSurfaceSums4Sorting(minEntries, maxEntries, entriesByLB, dim);
      // get surface sum for upper-bound sorting
      surfaceSum += getSurfaceSums4Sorting(minEntries, maxEntries, entriesByUB, dim);
      return surfaceSum;
    }