@Contract(pure = true)
  public static @Unmodifiable @NotNull <T, TT extends T> List<T> sorted(@NotNull Iterable<TT> list, @NotNull Comparator<? super TT> comparator) {
    List<TT> sorted = newArrayList(list);
    sort(sorted, comparator);
    return Collections.unmodifiableList(sorted);
  }
@Contract(pure = true)
  public static @Unmodifiable @NotNull <T, TT extends T> List<T> sorted(@NotNull Iterable<TT> list, @NotNull Comparator<? super TT> comparator)