Tail recursion optimization
Rename upward visitor