@Override
    public @NotNull <T> It<T> createIterator(@NotNull Iterable<? extends T> roots,
                                             @NotNull Function<? super T, ? extends Iterable<? extends T>> tree) {
      TraversalArgs<T> adjusted = interceptor.intercept(new TraversalArgs<>(roots, tree));
      return original.createIterator(adjusted.roots, adjusted.tree);
    }
@Override
    public @NotNull <T> It<T> createIterator(@NotNull Iterable<? extends T> roots,
                                             @NotNull Function<? super T, ? extends Iterable<? extends T>> tree)