public final @NotNull <T> JBIterable<E> append(@Nullable Iterable<? extends T> other,
                                                 @NotNull Function<? super T, ? extends Iterable<? extends E>> fun) {
    return other == null ? this :
           this == EMPTY ? from(other).flatten(fun) :
           append(from(other).flatten(fun));
  }
public final @NotNull <T> JBIterable<E> append(@Nullable Iterable<? extends T> other,
                                                 @NotNull Function<? super T, ? extends Iterable<? extends E>> fun)