### Question:
IdStack implements Iterable<String> { public E remove(final String id) { if (!containsId(id)) { return null; } deque.remove(id); return map.remove(id); }  void push(String id, E item); void set(String id, E item, int index); E peek(); E pop(); boolean isEmpty(); int size(); String peekId(); void clear(); E get(final String id); E get(final int index); boolean containsId(final String id); E remove(final String id); boolean isTop(final String id); @NonNull @Override Iterator<String> iterator(); Collection<E> values(); void remove(Iterator<String> iterator, String id);  }### Answer:
@Test public void remove() { assertThat(uut.remove("123")).isNull(); uut.push("123", 123); uut.push("456", 456); assertThat(uut.remove("123")).isEqualTo(123); }