Class VersioningLock

A reentrant read-write lock used by the internal version manager for
synchronization. Unlike a normal reentrant lock, this one allows the lock
to be re-entered not just by a thread that's already holding the lock but
by any thread within the same transaction.