@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 iterableContainsExactlyInOrderWithOneShotIterable() {
    Iterator<Object> iterator = asList((Object) 1, null, 3).iterator();
    Iterable<Object> iterable =
        new Iterable<Object>() {
          @Override
          public Iterator<Object> iterator() {
            return iterator;
          }
        };
    assertThat(iterable).containsExactly(1, null, 3).inOrder();
  }