There is a class of bugs that involves acquiring a Collection X lock, while already holding a storage snapshot, potentially because a global lock is already held and a prior read occurred. This violates assumptions that the owner of the Collection X lock makes, which is that all writes are visible, even though they may not. These lock acquisitions should be preceded by an abandonSnapshot().
It would be interesting to add an invariant that a snapshot is is not already held while acquiring a collection X lock to evaluate whether these bugs already exist.