code: @Override
    public <E> List<E> sort(final List<E> elements) {
      for (int index = 0, size = elements.size(), length = (size - 1); index < length; index++) {
        int minIndex = index;
  
        for (int j = (index + 1); j < size; j++) {
          if (getOrderBy().compare(elements.get(j), elements.get(minIndex)) < 0) {
            minIndex = j;
          }
        }
  
        if (minIndex != index) {
          swap(elements, minIndex, index);
        }
      }
  
      return elements;
    }
docs: Uses the Selection 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