public final @NotNull <T> JBIterable<T> traversal(final @NotNull Iterable<? extends T> roots, final @NotNull Function<? super T, ? extends Iterable<? extends T>> tree) {
    return new JBIterable<T>() {
      @Override
      public @NotNull Iterator<T> iterator() {
        return createIterator(roots, tree);
      }
    };
  }
public final @NotNull <T> JBIterable<T> traversal(final @NotNull Iterable<? extends T> roots, final @NotNull Function<? super T, ? extends Iterable<? extends T>> tree)