code: public static <K, V> SetMultimap<K, V> unmodifiableSetMultimap(SetMultimap<K, V> delegate) {
      if (delegate instanceof UnmodifiableSetMultimap || delegate instanceof ImmutableSetMultimap) {
        return delegate;
      }
      return new UnmodifiableSetMultimap<K, V>(delegate);
    }
docs: Returns an unmodifiable view of the specified {@code SetMultimap}. 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>Note that the generated multimap's {@link Multimap#removeAll} and
  {@link Multimap#replaceValues} methods return collections that are
  modifiable.
  
  <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