public override sealed long Seek(long offset, SeekOrigin origin)
{
switch (origin)
{
case SeekOrigin.Begin: position = (int)offset; break;
case SeekOrigin.Current: position += (int)offset; break;
case SeekOrigin.End: position = (int)(Length + offset); break;
default: throw new ArgumentOutOfRangeException("origin");
}
UpdateBuffer();
return position;
}