### Question:
CircularStack implements Iterable<E> { public void push(final E element) { this.elements.add(element); if (this.elements.size() > this.limit) { this.elements.remove(0); } } CircularStack(final int limit); void shallowCopyTo(final CircularStack<E> destination); void push(final E element); E peek(); void pop(); int size(); @Override Iterator<E> iterator();  }### Answer:
@Test public void canIterateOverStackFromOldestToNewestElement() { final CircularStack<Integer> intStack = this.createStack(3); for (int i = 0; i < 3; ++i) { intStack.push(123 + i); } int i = 123; for (final Integer elem : intStack) { MatcherAssert.assertThat(elem, IsEqual.equalTo(i)); ++i; } }