code: public static <K> Matcher<Iterable<K>> subsetOf(final Iterable<? super K> comparison) {
          return IsSubsetOfIterable.subsetOf(comparison);
      }
docs: Creates a matcher for {@link Iterable}s matching when the examined {@linkplain Iterable} has all
  the elements in the comparison {@linkplain Iterable}, without repetitions (i.e. it is a subset).
  For instance:
  {@code
  List<String> comparison = Arrays.asList("bar", "bar", "foo");
  List<String> given = Arrays.asList("bar", "bar", "bar");
  assertThat(given, is(subsetOf(comparison));
  }
  returns {@code true} because each element of {@code given} is included in {@code comparison}.
  Essentially, if the set view of the given iterables guarantee that {@code given} is a subset of {@code comparison},
  then the matcher returns true