As I mentioned, this returning on first hit and starting over seems like overkill. I can't see how the rewrites would perturb the iteration/recursion even if this weren't a strict tree structure.

What I didn't mention is that our coding standards SHOULD forbid use of Tarzan/Tonto verb conjugation in function names "This first equals expression smell like in, Kimosabe, Ungawa!"