docs: @SuppressWarnings("InnerAssignment")
      private void quickSort(PagesIndex pagesIndex, int from, int to)
      {
          int len = to - from;
          // Insertion sort on smallest arrays
          if (len < SMALL) {
              for (int i = from; i < to; i++) {
                  for (int j = i; j > from && (comparator.compareTo(pagesIndex, j - 1, j) > 0); j--) {
                      pagesIndex.swap(j, j - 1);
                  }
              }
              return;
          }
  
          // Choose a partition element, v
          int m = from + len / 2; // Small arrays, middle element
          if (len > SMALL) {
              int l = from;
              int n = to - 1;
              if (len > MEDIUM) { // Big arrays, pseudomedian of 9
                  int s = len / 8;
                  l = median3(pagesIndex, l, l + s, l + 2 * s);
                  m = median3(pagesIndex, m - s, m, m + s);
                  n = median3(pagesIndex, n - 2 * s, n - s, n);
              }
              m = median3(pagesIndex, l, m, n); // Mid-size, med of 3
          }
          // int v = x[m];
  
          int a = from;
          int b = a;
          int c = to - 1;
          // Establish Invariant: v* (<v)* (>v)* v*
          int d = c;
          while (true) {
              int comparison;
              while (b <= c && ((comparison = comparator.compareTo(pagesIndex, b, m)) <= 0)) {
                  if (comparison == 0) {
                      if (a == m) {
                          m = b; // moving target; DELTA to JDK !!!
                      }
                      else if (b == m) {
                          m = a; // moving target; DELTA to JDK !!!
                      }
                      pagesIndex.swap(a++, b);
                  }
                  b++;
              }
              while (c >= b && ((comparison = comparator.compareTo(pagesIndex, c, m)) >= 0)) {
                  if (comparison == 0) {
                      if (c == m) {
                          m = d; // moving target; DELTA to JDK !!!
                      }
                      else if (d == m) {
                          m = c; // moving target; DELTA to JDK !!!
                      }
                      pagesIndex.swap(c, d--);
                  }
                  c--;
              }
              if (b > c) {
                  break;
              }
              if (b == m) {
                  m = d; // moving target; DELTA to JDK !!!
              }
              else if (c == m) {
                  m = c; // moving target; DELTA to JDK !!!
              }
              pagesIndex.swap(b++, c--);
          }
  
          // Swap partition elements back to middle
          int s;
          int n = to;
          s = Math.min(a - from, b - a);
          vectorSwap(pagesIndex, from, b - s, s);
          s = Math.min(d - c, n - d - 1);
          vectorSwap(pagesIndex, b, n - s, s);
  
          // Recursively sort non-partition-elements
          if ((s = b - a) > 1) {
              quickSort(pagesIndex, from, from + s);
          }
          if ((s = d - c) > 1) {
              quickSort(pagesIndex, n - s, n);
          }
      }