Support for tracing ast rewriting and checking conditions

o Condition checking still needs testing but the hot code path is tested
These types are complex enough to have a name and not just be a tuple, wouldn't you say?