Tail recursion optimization
Elvis operator support
Tail recursion optimization
Removed unnecessary enum parameter
Tail recursion optimization
More tests