Why traversal matters
Without a shared traversal layer, every parser, generator, and analyzer ends up re-implementing slightly different recursion rules.
That duplication usually hides subtle inconsistencies. A common traversal model reduces those inconsistencies and makes extension work more predictable.