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);  }