Recursive iterator