class MultisetAssert<T> extends AbstractIterableAssert<MultisetAssert<T>, Multiset<? extends T>, T, ObjectAssert<T>> {

  protected MultisetAssert(Multiset<? extends T> actual) {
    super(actual, MultisetAssert.class);
  }

  /**
   * Verifies the actual {@link Multiset} contains the given value <b>exactly</b> the given number of times.
   * <p>
   * Example :
   *
   * <pre><code class='java'> Multiset&lt;String&gt; actual = HashMultiset.create();
   * actual.add("shoes", 2);
   *
   * // assertion succeeds
   * assertThat(actual).contains(2, "shoes");
   *
   * // assertions fail
   * assertThat(actual).contains(1, "shoes");
   * assertThat(actual).contains(3, "shoes");</code></pre>
   *
   * @param expectedCount the exact number of times the given value should appear in the set
   * @param expected the value which to expect
   *
   * @return this {@link MultisetAssert} for fluent chaining
   *
   * @throws AssertionError if the actual {@link Multiset} is null
   * @throws AssertionError if the actual {@link Multiset} contains the given value a number of times different to the given count
   */
  public MultisetAssert<T> contains(int expectedCount, T expected) {<FILL_FUNCTION_BODY>}

  /**
   * Verifies the actual {@link Multiset} contains the given value <b>at least</b> the given number of times.
   * <p>
   * Example :
   *
   * <pre><code class='java'> Multiset&lt;String&gt; actual = HashMultiset.create();
   * actual.add("shoes", 2);
   *
   * // assertions succeed
   * assertThat(actual).containsAtLeast(1, "shoes");
   * assertThat(actual).containsAtLeast(2, "shoes");
   *
   * // assertion fails
   * assertThat(actual).containsAtLeast(3, "shoes");</code></pre>
   *
   * @param minimumCount the minimum number of times the given value should appear in the set
   * @param expected the value which to expect
   *
   * @return this {@link MultisetAssert} for fluent chaining
   *
   * @throws AssertionError if the actual {@link Multiset} is null
   * @throws AssertionError if the actual {@link Multiset} contains the given value fewer times than the given count
   */
  public MultisetAssert<T> containsAtLeast(int minimumCount, T expected) {
    isNotNull();
    checkArgument(minimumCount >= 0, "The minimum count should not be negative.");
    int actualCount = actual.count(expected);
    if (actualCount < minimumCount) {
      throw assertionError(shouldContainAtLeastTimes(actual, expected, minimumCount, actualCount));
    }
    return myself;
  }

  /**
   * Verifies the actual {@link Multiset} contains the given value <b>at most</b> the given number of times.
   * <p>
   * Example :
   *
   * <pre><code class='java'> Multiset&lt;String&gt; actual = HashMultiset.create();
   * actual.add("shoes", 2);
   *
   * // assertions succeed
   * assertThat(actual).containsAtMost(3, "shoes");
   * assertThat(actual).containsAtMost(2, "shoes");
   *
   * // assertion fails
   * assertThat(actual).containsAtMost(1, "shoes");</code></pre>
   *
   *
   * @param maximumCount the maximum number of times the given value should appear in the set
   *
   * @param expected the value which to expect
   * @return this {@link MultisetAssert} for fluent chaining
   *
   * @throws AssertionError if the actual {@link Multiset} is null
   * @throws AssertionError if the actual {@link Multiset} contains the given value more times than the given count
   */
  public MultisetAssert<T> containsAtMost(int maximumCount, T expected) {
    isNotNull();
    checkArgument(maximumCount >= 0, "The maximum count should not be negative.");
    int actualCount = actual.count(expected);
    if (actualCount > maximumCount) {
      throw assertionError(shouldContainAtMostTimes(actual, expected, maximumCount, actualCount));
    }
    return myself;
  }

  @Override
  protected ObjectAssert<T> toAssert(T value, String description) {
    return null;
  }

  @Override
  protected MultisetAssert<T> newAbstractIterableAssert(Iterable<? extends T> iterable) {
    // actual may not have been a HashMultiset but there is no easy elegant to build the same Multiset subtype.
    Multiset<T> filtered = HashMultiset.create();
    iterable.forEach(filtered::add);
    return new MultisetAssert<>(filtered);
  }
}

    isNotNull();
    checkArgument(expectedCount >= 0, "The expected count should not be negative.");
    int actualCount = actual.count(expected);
    if (actualCount != expectedCount) {
      throw assertionError(shouldContainTimes(actual, expected, expectedCount, actualCount));
    }
    return myself;
  
<methods>public MultisetAssert<T> allMatch(Predicate<? super T>) ,public MultisetAssert<T> allMatch(Predicate<? super T>, java.lang.String) ,public MultisetAssert<T> allSatisfy(Consumer<? super T>) ,public MultisetAssert<T> allSatisfy(ThrowingConsumer<? super T>) ,public MultisetAssert<T> anyMatch(Predicate<? super T>) ,public MultisetAssert<T> anySatisfy(Consumer<? super T>) ,public MultisetAssert<T> anySatisfy(ThrowingConsumer<? super T>) ,public MultisetAssert<T> are(Condition<? super T>) ,public MultisetAssert<T> areAtLeast(int, Condition<? super T>) ,public MultisetAssert<T> areAtLeastOne(Condition<? super T>) ,public MultisetAssert<T> areAtMost(int, Condition<? super T>) ,public MultisetAssert<T> areExactly(int, Condition<? super T>) ,public MultisetAssert<T> areNot(Condition<? super T>) ,public transient MultisetAssert<T> as(java.lang.String, java.lang.Object[]) ,public MultisetAssert<T> as(org.assertj.core.description.Description) ,public final transient MultisetAssert<T> contains(T[]) ,public MultisetAssert<T> containsAll(Iterable<? extends T>) ,public MultisetAssert<T> containsAnyElementsOf(Iterable<? extends T>) ,public final transient MultisetAssert<T> containsAnyOf(T[]) ,public final transient MultisetAssert<T> containsExactly(T[]) ,public MultisetAssert<T> containsExactlyElementsOf(Iterable<? extends T>) ,public final transient MultisetAssert<T> containsExactlyInAnyOrder(T[]) ,public MultisetAssert<T> containsExactlyInAnyOrderElementsOf(Iterable<? extends T>) ,public MultisetAssert<T> containsNull() ,public final transient MultisetAssert<T> containsOnly(T[]) ,public MultisetAssert<T> containsOnlyElementsOf(Iterable<? extends T>) ,public MultisetAssert<T> containsOnlyNulls() ,public final transient MultisetAssert<T> containsOnlyOnce(T[]) ,public MultisetAssert<T> containsOnlyOnceElementsOf(Iterable<? extends T>) ,public final transient MultisetAssert<T> containsSequence(T[]) ,public MultisetAssert<T> containsSequence(Iterable<? extends T>) ,public final transient MultisetAssert<T> containsSubsequence(T[]) ,public MultisetAssert<T> containsSubsequence(Iterable<? extends T>) ,public MultisetAssert<T> describedAs(org.assertj.core.description.Description) ,public transient MultisetAssert<T> describedAs(java.lang.String, java.lang.Object[]) ,public MultisetAssert<T> doNotHave(Condition<? super T>) ,public final transient MultisetAssert<T> doesNotContain(T[]) ,public MultisetAssert<T> doesNotContainAnyElementsOf(Iterable<? extends T>) ,public MultisetAssert<T> doesNotContainNull() ,public final transient MultisetAssert<T> doesNotContainSequence(T[]) ,public MultisetAssert<T> doesNotContainSequence(Iterable<? extends T>) ,public final transient MultisetAssert<T> doesNotContainSubsequence(T[]) ,public MultisetAssert<T> doesNotContainSubsequence(Iterable<? extends T>) ,public MultisetAssert<T> doesNotHave(Condition<? super Multiset<? extends T>>) ,public transient MultisetAssert<T> doesNotHaveAnyElementsOfTypes(Class<?>[]) ,public MultisetAssert<T> doesNotHaveDuplicates() ,public MultisetAssert<T> doesNotHaveSameClassAs(java.lang.Object) ,public ObjectAssert<T> element(int) ,public ASSERT element(int, InstanceOfAssertFactory<?,ASSERT>) ,public transient MultisetAssert<T> elements(int[]) ,public final transient MultisetAssert<T> endsWith(T, T[]) ,public MultisetAssert<T> endsWith(T[]) ,public AbstractListAssert<?,List<? extends java.lang.Object>,java.lang.Object,ObjectAssert<java.lang.Object>> extracting(java.lang.String) ,public AbstractListAssert<?,List<? extends P>,P,ObjectAssert<P>> extracting(java.lang.String, Class<P>) ,public transient AbstractListAssert<?,List<? extends org.assertj.core.groups.Tuple>,org.assertj.core.groups.Tuple,ObjectAssert<org.assertj.core.groups.Tuple>> extracting(java.lang.String[]) ,public AbstractListAssert<?,List<? extends V>,V,ObjectAssert<V>> extracting(Function<? super T,V>) ,public AbstractListAssert<?,List<? extends V>,V,ObjectAssert<V>> extracting(ThrowingExtractor<? super T,V,EXCEPTION>) ,public final transient AbstractListAssert<?,List<? extends org.assertj.core.groups.Tuple>,org.assertj.core.groups.Tuple,ObjectAssert<org.assertj.core.groups.Tuple>> extracting(Function<? super T,?>[]) ,public AbstractListAssert<?,List<? extends java.lang.Object>,java.lang.Object,ObjectAssert<java.lang.Object>> extractingResultOf(java.lang.String) ,public AbstractListAssert<?,List<? extends P>,P,ObjectAssert<P>> extractingResultOf(java.lang.String, Class<P>) ,public MultisetAssert<T> filteredOn(java.lang.String, java.lang.Object) ,public MultisetAssert<T> filteredOn(java.lang.String, FilterOperator<?>) ,public MultisetAssert<T> filteredOn(Condition<? super T>) ,public MultisetAssert<T> filteredOn(Function<? super T,T>, T) ,public MultisetAssert<T> filteredOn(Predicate<? super T>) ,public MultisetAssert<T> filteredOnAssertions(Consumer<? super T>) ,public MultisetAssert<T> filteredOnAssertions(ThrowingConsumer<? super T>) ,public MultisetAssert<T> filteredOnNull(java.lang.String) ,public ObjectAssert<T> first() ,public ASSERT first(InstanceOfAssertFactory<?,ASSERT>) ,public AbstractListAssert<?,List<? extends V>,V,ObjectAssert<V>> flatExtracting(Function<? super T,? extends Collection<V>>) ,public AbstractListAssert<?,List<? extends V>,V,ObjectAssert<V>> flatExtracting(ThrowingExtractor<? super T,? extends Collection<V>,EXCEPTION>) ,public final transient AbstractListAssert<?,List<? extends java.lang.Object>,java.lang.Object,ObjectAssert<java.lang.Object>> flatExtracting(Function<? super T,?>[]) ,public final transient AbstractListAssert<?,List<? extends java.lang.Object>,java.lang.Object,ObjectAssert<java.lang.Object>> flatExtracting(ThrowingExtractor<? super T,?,EXCEPTION>[]) ,public AbstractListAssert<?,List<? extends java.lang.Object>,java.lang.Object,ObjectAssert<java.lang.Object>> flatExtracting(java.lang.String) ,public transient AbstractListAssert<?,List<? extends java.lang.Object>,java.lang.Object,ObjectAssert<java.lang.Object>> flatExtracting(java.lang.String[]) ,public AbstractListAssert<?,List<? extends V>,V,ObjectAssert<V>> flatMap(Function<? super T,? extends Collection<V>>) ,public AbstractListAssert<?,List<? extends V>,V,ObjectAssert<V>> flatMap(ThrowingExtractor<? super T,? extends Collection<V>,EXCEPTION>) ,public final transient AbstractListAssert<?,List<? extends java.lang.Object>,java.lang.Object,ObjectAssert<java.lang.Object>> flatMap(Function<? super T,?>[]) ,public final transient AbstractListAssert<?,List<? extends java.lang.Object>,java.lang.Object,ObjectAssert<java.lang.Object>> flatMap(ThrowingExtractor<? super T,?,EXCEPTION>[]) ,public MultisetAssert<T> has(Condition<? super Multiset<? extends T>>) ,public MultisetAssert<T> hasAtLeastOneElementOfType(Class<?>) ,public transient MultisetAssert<T> hasExactlyElementsOfTypes(Class<?>[]) ,public MultisetAssert<T> hasOnlyElementsOfType(Class<?>) ,public transient MultisetAssert<T> hasOnlyElementsOfTypes(Class<?>[]) ,public MultisetAssert<T> hasOnlyOneElementSatisfying(Consumer<? super T>) ,public MultisetAssert<T> hasSameClassAs(java.lang.Object) ,public MultisetAssert<T> hasSameElementsAs(Iterable<? extends T>) ,public MultisetAssert<T> hasSameSizeAs(java.lang.Object) ,public MultisetAssert<T> hasSameSizeAs(Iterable<?>) ,public MultisetAssert<T> hasSize(int) ,public MultisetAssert<T> hasSizeBetween(int, int) ,public MultisetAssert<T> hasSizeGreaterThan(int) ,public MultisetAssert<T> hasSizeGreaterThanOrEqualTo(int) ,public MultisetAssert<T> hasSizeLessThan(int) ,public MultisetAssert<T> hasSizeLessThanOrEqualTo(int) ,public MultisetAssert<T> hasToString(java.lang.String) ,public MultisetAssert<T> have(Condition<? super T>) ,public MultisetAssert<T> haveAtLeast(int, Condition<? super T>) ,public MultisetAssert<T> haveAtLeastOne(Condition<? super T>) ,public MultisetAssert<T> haveAtMost(int, Condition<? super T>) ,public MultisetAssert<T> haveExactly(int, Condition<? super T>) ,public MultisetAssert<T> inBinary() ,public MultisetAssert<T> inHexadecimal() ,public MultisetAssert<T> is(Condition<? super Multiset<? extends T>>) ,public void isEmpty() ,public MultisetAssert<T> isEqualTo(java.lang.Object) ,public MultisetAssert<T> isExactlyInstanceOf(Class<?>) ,public MultisetAssert<T> isIn(Iterable<?>) ,public transient MultisetAssert<T> isIn(java.lang.Object[]) ,public MultisetAssert<T> isInstanceOf(Class<?>) ,public transient MultisetAssert<T> isInstanceOfAny(Class<?>[]) ,public MultisetAssert<T> isNot(Condition<? super Multiset<? extends T>>) ,public MultisetAssert<T> isNotEmpty() ,public MultisetAssert<T> isNotEqualTo(java.lang.Object) ,public MultisetAssert<T> isNotExactlyInstanceOf(Class<?>) ,public MultisetAssert<T> isNotIn(Iterable<?>) ,public transient MultisetAssert<T> isNotIn(java.lang.Object[]) ,public MultisetAssert<T> isNotInstanceOf(Class<?>) ,public transient MultisetAssert<T> isNotInstanceOfAny(Class<?>[]) ,public MultisetAssert<T> isNotNull() ,public transient MultisetAssert<T> isNotOfAnyClassIn(Class<?>[]) ,public MultisetAssert<T> isNotSameAs(java.lang.Object) ,public void isNullOrEmpty() ,public transient MultisetAssert<T> isOfAnyClassIn(Class<?>[]) ,public MultisetAssert<T> isSameAs(java.lang.Object) ,public MultisetAssert<T> isSubsetOf(Iterable<? extends T>) ,public final transient MultisetAssert<T> isSubsetOf(T[]) ,public ObjectAssert<T> last() ,public ASSERT last(InstanceOfAssertFactory<?,ASSERT>) ,public AbstractListAssert<?,List<? extends V>,V,ObjectAssert<V>> map(Function<? super T,V>) ,public AbstractListAssert<?,List<? extends V>,V,ObjectAssert<V>> map(ThrowingExtractor<? super T,V,EXCEPTION>) ,public final transient AbstractListAssert<?,List<? extends org.assertj.core.groups.Tuple>,org.assertj.core.groups.Tuple,ObjectAssert<org.assertj.core.groups.Tuple>> map(Function<? super T,?>[]) ,public MultisetAssert<T> noneMatch(Predicate<? super T>) ,public MultisetAssert<T> noneSatisfy(Consumer<? super T>) ,public MultisetAssert<T> noneSatisfy(ThrowingConsumer<? super T>) ,public transient MultisetAssert<T> overridingErrorMessage(java.lang.String, java.lang.Object[]) ,public final transient MultisetAssert<T> satisfiesExactly(Consumer<? super T>[]) ,public final transient MultisetAssert<T> satisfiesExactly(ThrowingConsumer<? super T>[]) ,public final transient MultisetAssert<T> satisfiesExactlyInAnyOrder(Consumer<? super T>[]) ,public final transient MultisetAssert<T> satisfiesExactlyInAnyOrder(ThrowingConsumer<? super T>[]) ,public MultisetAssert<T> satisfiesOnlyOnce(Consumer<? super T>) ,public MultisetAssert<T> satisfiesOnlyOnce(ThrowingConsumer<? super T>) ,public ObjectAssert<T> singleElement() ,public ASSERT singleElement(InstanceOfAssertFactory<?,ASSERT>) ,public AbstractIterableSizeAssert<MultisetAssert<T>,Multiset<? extends T>,T,ObjectAssert<T>> size() ,public final transient MultisetAssert<T> startsWith(T[]) ,public MultisetAssert<T> usingComparator(Comparator<? super Multiset<? extends T>>) ,public MultisetAssert<T> usingComparator(Comparator<? super Multiset<? extends T>>, java.lang.String) ,public transient MultisetAssert<T> usingComparatorForElementFieldsWithNames(Comparator<T>, java.lang.String[]) ,public MultisetAssert<T> usingComparatorForElementFieldsWithType(Comparator<T>, Class<T>) ,public MultisetAssert<T> usingComparatorForType(Comparator<T>, Class<T>) ,public MultisetAssert<T> usingDefaultComparator() ,public MultisetAssert<T> usingDefaultElementComparator() ,public MultisetAssert<T> usingElementComparator(Comparator<? super T>) ,public transient MultisetAssert<T> usingElementComparatorIgnoringFields(java.lang.String[]) ,public transient MultisetAssert<T> usingElementComparatorOnFields(java.lang.String[]) ,public MultisetAssert<T> usingFieldByFieldElementComparator() ,public org.assertj.core.api.RecursiveAssertionAssert usingRecursiveAssertion() ,public org.assertj.core.api.RecursiveAssertionAssert usingRecursiveAssertion(org.assertj.core.api.recursive.assertion.RecursiveAssertionConfiguration) ,public RecursiveComparisonAssert<?> usingRecursiveComparison() ,public RecursiveComparisonAssert<?> usingRecursiveComparison(org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration) ,public MultisetAssert<T> usingRecursiveFieldByFieldElementComparator() ,public MultisetAssert<T> usingRecursiveFieldByFieldElementComparator(org.assertj.core.api.recursive.comparison.RecursiveComparisonConfiguration) ,public transient MultisetAssert<T> usingRecursiveFieldByFieldElementComparatorIgnoringFields(java.lang.String[]) ,public transient MultisetAssert<T> usingRecursiveFieldByFieldElementComparatorOnFields(java.lang.String[]) ,public transient MultisetAssert<T> withFailMessage(java.lang.String, java.lang.Object[]) ,public MultisetAssert<T> withThreadDumpOnError() ,public MultisetAssert<T> zipSatisfy(Iterable<OTHER_ELEMENT>, BiConsumer<? super T,OTHER_ELEMENT>) <variables>private static final java.lang.String ASSERT,private org.assertj.core.internal.TypeComparators comparatorsByType,private Map<java.lang.String,Comparator<?>> comparatorsForElementPropertyOrFieldNames,private org.assertj.core.internal.TypeComparators comparatorsForElementPropertyOrFieldTypes,protected org.assertj.core.internal.Iterables iterables