code: public static <T> Iterable<T> unmodifiableIterable(
        final Iterable<T> iterable) {
      checkNotNull(iterable);
      if (iterable instanceof UnmodifiableIterable ||
          iterable instanceof ImmutableCollection) {
        return iterable;
      }
      return new UnmodifiableIterable<T>(iterable);
    }
docs: Returns an unmodifiable view of {@code iterable}.