IterableWithMarkers { public static <T> IterableWithMarker<T> from(Iterable<T> elements) { return from(elements, null); }  static IterableWithMarker<T> from(Iterable<T> elements); static IterableWithMarker<T> from(final Iterable<T> elements, @Nullable final Object marker); @SuppressWarnings("rawtypes")
   static final IterableWithMarker EMPTY; }
@Test public void testElementsEqual() { IterableWithMarker<String> initial = IterableWithMarkers.from(ImmutableSet.of("foo", "bar")); Assert.assertEquals(initial.toSet(), ImmutableSet.of("foo", "bar")); Assert.assertEquals(initial.nextMarker(), Optional.absent()); }
@Test public void testMarkerEqual() { IterableWithMarker<String> initial = IterableWithMarkers.from(ImmutableSet.of("foo", "bar"), "MARKER"); Assert.assertEquals(initial.toSet(), ImmutableSet.of("foo", "bar")); Assert.assertEquals(initial.nextMarker(), Optional.of("MARKER")); }