public @NotNull <T> JBIterable<T> flatten(@NotNull Function<? super E, ? extends Iterable<? extends T>> function) {
    return intercept(new FlattenFun<>(function));
  }
public @NotNull <T> JBIterable<T> flatten(@NotNull Function<? super E, ? extends Iterable<? extends T>> function)