public static <E> ImmutableSortedSet<E> copyOf(
      Comparator<? super E> comparator, Iterable<? extends E> elements) {
    checkNotNull(comparator);
    boolean hasSameComparator = SortedIterables.hasSameComparator(comparator, elements);

    if (hasSameComparator && (elements instanceof ImmutableSortedSet)) {
      @SuppressWarnings("unchecked")
      ImmutableSortedSet<E> original = (ImmutableSortedSet<E>) elements;
      if (!original.isPartialView()) {
        return original;
      }
    }
    @SuppressWarnings("unchecked") // elements only contains E's; it's safe.
    E[] array = (E[]) Iterables.toArray(elements);
    return construct(comparator, array.length, array);
  }
public static <E> ImmutableSortedSet<E> copyOf(
      Comparator<? super E> comparator, Iterable<? extends E> elements) {
    checkNotNull(comparator);
    boolean hasSameComparator = SortedIterables.hasSameComparator(comparator, elements);

    if (hasSameComparator && (elements instanceof ImmutableSortedSet)) {
      @SuppressWarnings("unchecked")
      ImmutableSortedSet<E> original = (ImmutableSortedSet<E>) elements;
      if (!original.isPartialView()) {
        return original;
      }
    }
    @SuppressWarnings("unchecked") 
    E[] array = (E[]) Iterables.toArray(elements);
    return construct(comparator, array.length, array);
  }
public static < E > ImmutableSortedSet < E > copyOf ( Comparator < ? super E > comparator , Iterable < ? extends E > elements ) { checkNotNull ( comparator ) ; boolean hasSameComparator = SortedIterables . hasSameComparator ( comparator , elements ) ; if ( hasSameComparator && ( elements instanceof ImmutableSortedSet ) ) { @ SuppressWarnings ( "unchecked" ) ImmutableSortedSet < E > original = ( ImmutableSortedSet < E > ) elements ; if ( ! original . isPartialView ( ) ) { return original ; } } @ SuppressWarnings ( "unchecked" ) // elements only contains E's; it's safe. E [ ] array = ( E [ ] ) Iterables . toArray ( elements ) ; return construct ( comparator , array . length , array ) ; }
Returns an immutable sorted set containing the given elements sorted by the given {@code
Comparator}. When multiple elements are equivalent according to {@code compare()}, only the
first one specified is included. This method iterates over {@code elements} at most once.

<p>Despite the method name, this method attempts to avoid actually copying the data when it is
safe to do so. The exact circumstances under which a copy will or will not be performed are
undocumented and subject to change.

@throws NullPointerException if {@code comparator} or any of {@code elements} is null
Returns an immutable sorted set containing the given elements sorted by the given { @code Comparator } . When multiple elements are equivalent according to { @code compare () } only the first one specified is included . This method iterates over { @code elements } at most once .