### Question:
LinkedIterable implements Iterable<T> { @Nonnull public static <T> Iterable<T> over(@Nullable final T head, @Nonnull final Predicate<T> terminate, @Nonnull final Function<T, T> traverse) { return new LinkedIterable<>(head, terminate, traverse); } private  LinkedIterable(final T head, final Predicate<T> terminate,
            final Function<T, T> traverse); @Nonnull static Iterable<T> over(@Nullable final T head,
            @Nonnull final Predicate<T> terminate, @Nonnull final Function<T, T> traverse); @Nonnull static Iterable<T> over(@Nonnull final Predicate<T> terminate,
            @Nonnull final Function<T, T> traverse); @Override Iterator<T> iterator(); @Override Spliterator<T> spliterator(); static final int SPLITERATOR_CHARACTERISTICS; }### Answer:
@Test public void shouldHaveNone() { assertThat(over(Objects::isNull, identity()), is(emptyIterable())); }
@Test public void shouldHaveOne() { assertThat(over(this, Objects::isNull, t -> null), is(contains(this))); }
@Test public void shouldHaveMany() { final Predicate<Integer> terminate = t -> 3 == t; final Function<Integer, Integer> traverse = t -> t + 1; assertThat(over(0, terminate, traverse), contains(0, 1, 2)); }