public void readBytes(byte[] b, int offset, int len) {assert b.length >= offset + len;final int offsetEnd = offset + len;while (true) {final int blockLeft = blockSize - currentBlockUpto;final int left = offsetEnd - offset;if (blockLeft < left) {System.arraycopy(currentBlock, currentBlockUpto,b, offset,blockLeft);nextBlock();offset += blockLeft;} else {System.arraycopy(currentBlock, currentBlockUpto,b, offset,left);currentBlockUpto += left;break;}}}

public void readBytes ( byte [ ] b , int offset , int len ) { assert b . length >= offset + len ; final int offsetEnd = offset + len ; while ( true ) { final int blockLeft = blockSize - currentBlockUpto ; final int left = offsetEnd - offset ; if ( blockLeft < left ) { System . arraycopy ( currentBlock , currentBlockUpto , b , offset , blockLeft ) ; nextBlock ( ) ; offset += blockLeft ; } else { System . arraycopy ( currentBlock , currentBlockUpto , b , offset , left ) ; currentBlockUpto += left ; break ; } } }
public override void ReadBytes(byte[] b, int offset, int len){Debug.Assert(b.Length >= offset + len);int offsetEnd = offset + len;while (true){int blockLeft = outerInstance.blockSize - currentBlockUpto;int left = offsetEnd - offset;if (blockLeft < left){System.Buffer.BlockCopy(currentBlock, currentBlockUpto, b, offset, blockLeft);NextBlock();offset += blockLeft;}else{System.Buffer.BlockCopy(currentBlock, currentBlockUpto, b, offset, left);currentBlockUpto += left;break;}}}
