private void WriteOverflow(Stream dataOut, ref long dataOutWritten) {
var remainingSpace = dataOut.Length - dataOutWritten;
var maxWrite = Math.Min(_overflow.Count, remainingSpace);
if (maxWrite > 0) {
dataOut.Write(_overflow.ToArray(), 0, (int)maxWrite);
dataOutWritten += maxWrite;
}
if (maxWrite < _overflow.Count) {
_overflow.RemoveRange(0, (int)(maxWrite - 1));
} else {
_overflow.Clear();
}
}