guava/src/com/google/common/collect/Multimaps.java
public static <K, V> SortedSetMultimap<K, V> unmodifiableSortedSetMultimap(
      SortedSetMultimap<K, V> delegate) {
    if (delegate instanceof UnmodifiableSortedSetMultimap) {
      return delegate;
    }
    return new UnmodifiableSortedSetMultimap<>(delegate);
  }
public static <K, V> SortedSetMultimap<K, V> unmodifiableSortedSetMultimap(
      SortedSetMultimap<K, V> delegate) {
    if (delegate instanceof UnmodifiableSortedSetMultimap) {
      return delegate;
    }
    return new UnmodifiableSortedSetMultimap<>(delegate);
  }
public static < K , V > SortedSetMultimap < K , V > unmodifiableSortedSetMultimap ( SortedSetMultimap < K , V > delegate ) { if ( delegate instanceof UnmodifiableSortedSetMultimap ) { return delegate ; } return new UnmodifiableSortedSetMultimap <> ( delegate ) ; }
Returns an unmodifiable view of the specified {@code SortedSetMultimap}. Query operations on
the returned multimap "read through" to the specified multimap, and attempts to modify the
returned multimap, either directly or through the multimap's views, result in an {@code
UnsupportedOperationException}.

<p>The returned multimap will be serializable if the specified multimap is serializable.

@param delegate the multimap for which an unmodifiable view is to be returned
@return an unmodifiable view of the specified multimap
Returns an unmodifiable view of the specified { @code SortedSetMultimap } . Query operations on the returned multimap read through to the specified multimap and attempts to modify the returned multimap either directly or through the multimap s views result in an { @code UnsupportedOperationException } .