JBIterable<E> (@Nullable Iterable<? extends E> other) { if (other == null || other == EMPTY) return this; if (this == EMPTY) return from(other); Appended<E> parent = this instanceof Appended ? (Appended<E>)this : new Appended<>(this, null); // to keep append lazy, ignore the fact that 'other' can also be an Appended return new Appended<>(other, parent); }