code: 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();
    }
docs: 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