Java Tail Recursion Optimization And Engineering