if (len < 0) throw new IndexOutOfBoundsException();
if (blockDataCount == BUFFER_SIZE) drain();
  public void write(byte[] b, int off, int len) throws IOException  {    if (writeDataAsBlocks)      {	if (len < 0)	  throw new IndexOutOfBoundsException();	if (blockDataCount + len < BUFFER_SIZE)	  {	    System.arraycopy(b, off, blockData, blockDataCount, len);	    blockDataCount += len;	  }	else	  {	    drain();	    writeBlockDataHeader(len);	    realOutput.write(b, off, len);	  }      }    else      realOutput.write(b, off, len);  }