Should it have `Thread.in_recursion_guard?` as well? That's only used by the outer guard.