The rationale was two fold:
1. The previous class was called RecursiveLookup, even though it was not doing recursive lookups, RecursiveGuard is more descriptive as to the intent of the class, i.e. guarding against recursive lookups, rather than performing them.
2. The previous class performed the scope lookup in the guard, which was confusing and made it difficult to add hiera lookup support.