private void ReleaseEvents()
{
Debug.Assert((_state & LockStates.CachingEvents) == LockStates.CachingEvents);
// Save events
AutoResetEvent writerEvent = _writerEvent;
_writerEvent = null;
ManualResetEventSlim readerEvent = _readerEvent;
_readerEvent = null;
// Allow readers and writers to continue
Interlocked.Add(ref _state, -LockStates.CachingEvents);
// Cache events
// TODO: (old) Disposing events for now. What is needed is an event cache to which the events are released.
writerEvent?.Dispose();
readerEvent?.Dispose();
}