public final void contains(@Nullable Object element) {
    if (!Iterables.contains(checkNotNull(actual), element)) {
      List<@Nullable Object> elementList = newArrayList(element);
      if (hasMatchingToStringPair(actual, elementList)) {
        failWithoutActual(
            fact("expected to contain", element),
            fact("an instance of", objectToTypeName(element)),
            simpleFact("but did not"),
            fact(
                "though it did contain",
                countDuplicatesAndAddTypeInfo(
                    retainMatchingToString(actual, /* itemsToCheck= */ elementList))),
            fullContents());
      } else {
        failWithActual("expected to contain", element);
      }
    }
  }
@Test
  public void iterableContainsFailure() {
    expectFailureWhenTestingThat(asList(1, 2, 3)).contains(5);
    assertFailureKeys("expected to contain", "but was");
    assertFailureValue("expected to contain", "5");
  }