public final @NotNull JBIterable<E> append(@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);
  }
public final @NotNull JBIterable<E> append(@Nullable Iterable<? extends E> other)