public override long Seek(long offset, SeekOrigin origin) {
if (!CanSeek) {
throw new NotSupportedException();
}
long oldLen = _originalStream.Length;
long newLen;
switch (origin) {
case SeekOrigin.Begin:
newLen = offset;
break;
case SeekOrigin.Current:
newLen = _originalStream.Position + offset;
break;
case SeekOrigin.End:
newLen = oldLen + offset;
break;
default:
throw new ArgumentException(SR.GetString(SR.UnknownSeekOrigin), "origin");
}
EnsureQuota(Math.Max(oldLen, newLen));
return _originalStream.Seek(offset, origin);
}