docs: public static <ElementT> void shuffleHead(
        @NonNull ElementT[] elements, int n, @NonNull ThreadLocalRandom random) {
      if (n > elements.length) {
        throw new ArrayIndexOutOfBoundsException(
            String.format(
                "Can't shuffle the first %d elements, there are only %d", n, elements.length));
      }
      if (n > 1) {
        for (int i = n - 1; i > 0; i--) {
          int j = random.nextInt(i + 1);
          swap(elements, i, j);
        }
      }
    }