@Override
    public T nextImpl() {
      while (!queue.isEmpty()) {
        T result = ourNotNullizer.nullize(queue.remove());
        Iterable<? extends T> children = tree.fun(result);
        Iterator<? extends T> it = children == null ? null: children.iterator();
        if (it == null || !it.hasNext()) return result;
        while (it.hasNext()) queue.add(ourNotNullizer.notNullize(it.next()));
      }
      return stop();
    }
@Override
    public T nextImpl()