public override int Read(byte[] buffer, int offset, int count) {
if (offset < 0) {
throw new System.ArgumentOutOfRangeException("offset", offset, "offset is negative");
}
if (count < 0) {
throw new System.ArgumentOutOfRangeException("count", count, "count is negative");
}
if (count > this.chunkSize - this.Position) {
count = (int)(this.chunkSize - this.Position);
}
count = this.source.Read(buffer, offset, count);
this.position += count;
return count;
}