OneOrMore implements Iterable<T> { @Override public Iterator<T> iterator() { if (null == collection) { if (null == singleItem) { return Collections.emptyIterator(); } return Iterators.singletonIterator(singleItem); } return collection.iterator(); } OneOrMore();  OneOrMore(final boolean deduplicate);  OneOrMore(final boolean deduplicate, final T item); boolean add(final T item); boolean addAll(final Collection<? extends T> items); void removeAnyItem(); int size(); boolean isEmpty(); boolean contains(final Object o); @Override Iterator<T> iterator(); @Override boolean equals(final Object obj); @Override int hashCode(); @Override String toString();  }
@Test public void shouldGetEmptyIterator() { final OneOrMore<Integer> collection = new OneOrMore<>(); final Iterator<Integer> itr = collection.iterator(); assertFalse(itr.hasNext()); }