### Question:
Stepper { public T next() { T ret = Iterables.size(values) > step ? Iterables.get(values, step) : null; step++; return ret; } Stepper(Iterable<T> steps, Function<T, Serializable> toId); T next(); int positionOfIdAfterCurrent(T t); boolean isEmpty();  }### Answer:
@Test public void shouldStepOverAll() throws Exception { List<Step> steps = newArrayList(step("1"), step("2"), step("3")); Stepper<Step> underTest = new Stepper<Step>(steps, toId); assertThat(underTest.next(), is(steps.get(0))); assertThat(underTest.next(), is(steps.get(1))); assertThat(underTest.next(), is(steps.get(2))); assertNull(underTest.next()); }