@CanIgnoreReturnValue
  public final Ordered containsExactly(@Nullable Object @Nullable ... varargs) {
    List<@Nullable Object> expected =
        (varargs == null) ? newArrayList((@Nullable Object) null) : asList(varargs);
    return containsExactlyElementsIn(
        expected, varargs != null && varargs.length == 1 && varargs[0] instanceof Iterable);
  }
@Test
  public void iterableContainsExactlyWithEmptyStringAndUnexpectedItem() {
    expectFailureWhenTestingThat(asList("a", null)).containsExactly("");

    assertFailureKeys("missing (1)", "unexpected (2)", "---", "expected", "but was");
    assertFailureValue("missing (1)", "");
    assertFailureValue("unexpected (2)", "a, null");
  }