private int Dequeue()
{
var idx = _queueHead & _mask;
if (FuzzingMode)
{
var swapWith = (ThreadLocalRandom.Current.Next(_queueTail - _queueHead) + _queueHead) & _mask;
var ev = _eventQueue[swapWith];
_eventQueue[swapWith] = _eventQueue[idx];
_eventQueue[idx] = ev;
}
var element = _eventQueue[idx];
_eventQueue[idx] = NoEvent;
_queueHead++;
return element;
}