protected virtual void AdvancePosition(int count)
{
_incomingBufferPosition = (_incomingBufferPosition + count) % _incomingBuffer.Length; // increase the pointer and wrap it if needed
_incomingBufferValidLength -= count; // keep the virtual end at the same position
if (_incomingBufferValidLength == 0)
{
_incomingBufferPosition = 0;
}
}