Removing recursion via explicit callstack simulation

[Self post] Bridging the Object-Oriented and Functional Divide with the Visitor pattern