public LockCookie ReleaseLock()
{
LockCookie cookie;
lock (this) {
cookie = GetLockCookie ();
if (cookie.WriterLocks != 0)
ReleaseWriterLock (cookie.WriterLocks);
else if (cookie.ReaderLocks != 0) {
ReleaseReaderLock (cookie.ReaderLocks, cookie.ReaderLocks);
}
}
return cookie;
}