final Iterator<? extends T> iterator(@NotNull Function<? super T, ? extends Iterable<? extends T>> tree) {
      if (it != null) return it;
      it = iterable(tree).iterator();
      empty = itle == null || !it.hasNext();
      return it;
    }
final Iterator<? extends T> iterator(@NotNull Function<? super T, ? extends Iterable<? extends T>> tree)