public static @NotNull <E> JBIterable<E> create(@Nullable Supplier<? extends Iterator<E>> producer) {
    if (producer == null) return empty();
    return new JBIterable<E>() {
      @Override
      public @NotNull Iterator<E> iterator() {
        return producer.get();
      }
    };
  }
public static @NotNull <E> JBIterable<E> create(@Nullable Supplier<? extends Iterator<E>> producer)