deep iterator recursion