A guarded method can be active for an object only when no other method requiring exclusive
access to the object's variable pool is active in the same object. This
restriction does not apply if an object sends itself a message to run a method
and it already has exclusive use of the same object variable pool. In this
case, the method runs immediately regardless of its guarded state.