Unfortunately no.
If the object you are testing (or a parent object) is invisible (or marked specifically visible) then I think it will return the correct value.
I *think* it's only wrong for the deferred at root case.
This is why more unit tests are necessary here.
Lucas