Use a simple boolean for the "Failer" flag to save memory allocations.

This changes the Failer from an object to a simple boolean, this means there is no longer a need to allocate/create objects constantly and reduces the overhead of checking for left recursion.