public static <E> ImmutableMultiset<E> copyOf(Iterable<? extends E> elements) {
    if (elements instanceof ImmutableMultiset) {
      @SuppressWarnings("unchecked") // all supported methods are covariant
      ImmutableMultiset<E> result = (ImmutableMultiset<E>) elements;
      if (!result.isPartialView()) {
        return result;
      }
    }
    ImmutableMultiset.Builder<E> builder =
        new ImmutableMultiset.Builder<E>(Multisets.inferDistinctElements(elements));
    builder.addAll(elements);
    return builder.build();
  }
public static <E> ImmutableMultiset<E> copyOf(Iterable<? extends E> elements) {
    if (elements instanceof ImmutableMultiset) {
      @SuppressWarnings("unchecked") 
      ImmutableMultiset<E> result = (ImmutableMultiset<E>) elements;
      if (!result.isPartialView()) {
        return result;
      }
    }
    ImmutableMultiset.Builder<E> builder =
        new ImmutableMultiset.Builder<E>(Multisets.inferDistinctElements(elements));
    builder.addAll(elements);
    return builder.build();
  }
public static < E > ImmutableMultiset < E > copyOf ( Iterable < ? extends E > elements ) { if ( elements instanceof ImmutableMultiset ) { @ SuppressWarnings ( "unchecked" ) // all supported methods are covariant ImmutableMultiset < E > result = ( ImmutableMultiset < E > ) elements ; if ( ! result . isPartialView ( ) ) { return result ; } } ImmutableMultiset . Builder < E > builder = new ImmutableMultiset . Builder < E > ( Multisets . inferDistinctElements ( elements ) ) ; builder . addAll ( elements ) ; return builder . build ( ) ; }
Returns an immutable multiset containing the given elements, in the "grouped iteration order"
described in the class documentation.

@throws NullPointerException if any of {@code elements} is null
Returns an immutable multiset containing the given elements in the grouped iteration order described in the class documentation .