fast path for a common case
reduce number of dict lookups and calls to is_recursive
don't allocate dict if not needed
being recursive is a property only of the lambda