public override void ReadBytes(byte[] b, int offset, int len)
{
while (len > curAvail)
{
curBuf.Read(b, offset, curAvail);
len -= curAvail;
offset += curAvail;
curBufIndex++;
if (curBufIndex >= buffers.Length)
throw new System.IO.IOException("read past EOF");
curBuf = buffers[curBufIndex];
curBuf.Seek(0, System.IO.SeekOrigin.Begin);
curAvail = bufSizes[curBufIndex];
}
curBuf.Read(b, offset, len);
curAvail -= len;
}