android/guava/src/com/google/common/collect/ImmutableSortedMultiset.java
public static <E> ImmutableSortedMultiset<E> copyOfSorted(SortedMultiset<E> sortedMultiset) {
    return copyOfSortedEntries(
        sortedMultiset.comparator(), Lists.newArrayList(sortedMultiset.entrySet()));
  }
public static <E> ImmutableSortedMultiset<E> copyOfSorted(SortedMultiset<E> sortedMultiset) {
    return copyOfSortedEntries(
        sortedMultiset.comparator(), Lists.newArrayList(sortedMultiset.entrySet()));
  }
public static < E > ImmutableSortedMultiset < E > copyOfSorted ( SortedMultiset < E > sortedMultiset ) { return copyOfSortedEntries ( sortedMultiset . comparator ( ) , Lists . newArrayList ( sortedMultiset . entrySet ( ) ) ) ; }
Returns an immutable sorted multiset containing the elements of a sorted multiset, sorted by
the same {@code Comparator}. That behavior differs from {@link #copyOf(Iterable)}, which always
uses the natural ordering of the elements.

<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.

<p>This method is safe to use even when {@code sortedMultiset} is a synchronized or concurrent
collection that is currently being modified by another thread.

@throws NullPointerException if {@code sortedMultiset} or any of its elements is null
Returns an immutable sorted multiset containing the elements of a sorted multiset sorted by the same { @code Comparator } . That behavior differs from { @link #copyOf ( Iterable ) } which always uses the natural ordering of the elements .