private void EnsureDataAvailable(int needed)
{
if (needed > _length - _position)
{
var available = _length - _position;
var message = string.Format(
"Not enough input bytes available. Needed {0}, but only {1} are available (at position {2}).",
needed, available, _position);
throw new EndOfStreamException(message);
}
}