Proxy structure that keeps the monitor of the given object locked until it
goes out of scope.
Any unshared members of the object are safely accessible during this time. The usual
way to use it is by calling lock.
|Returns an unshared reference to the locked object.