code: @Override
    public <E> List<E> sort(final List<E> elements) {
      boolean swapped = true;
  
      for (int size = elements.size(), gap = size; gap > 0 && swapped; ) {
        gap = Math.max(1, (int) Math.floor(gap / SHRINK));
        swapped = false;
  
        for (int index = 0; index + gap < size; index++) {
          if (getOrderBy().compare(elements.get(index), elements.get(index + gap)) > 0) {
            swap(elements, index, index + gap);
            swapped = true;
          }
        }
      }
  
      return elements;
    }
docs: Uses the Comb (Bubble) Sort algorithm to sort a List of elements as defined by the Comparator, or as determined
  by the elements in the collection if the elements are Comparable.
  
  @param <E> the type of elements in the List.
  @param elements the List of elements to sort.
  @return the collection of elements sorted.
  @see java.util.List