protected void save() throws IOException {
  if (blockOutputStream.size() == 0) {
    return;
  }
  writeInt(nextSequenceNumber++);
  byte[] buffer=blockOutputStream.toByteArray();
  md5.update(buffer);
  outputStream.write(md5.digest());
  writeInt(buffer.length);
  outputStream.write(buffer);
  outputStream.flush();
  blockOutputStream.reset();
}

protected void save ( ) throws IOException { if ( blockOutputStream . size ( ) == 0 ) { return ; } writeInt ( nextSequenceNumber ++ ) ; byte [ ] buffer = blockOutputStream . toByteArray ( ) ; md5 . update ( buffer ) ; outputStream . write ( md5 . digest ( ) ) ; writeInt ( buffer . length ) ; outputStream . write ( buffer ) ; outputStream . flush ( ) ; blockOutputStream . reset ( ) ; }
saqve the internal buffer to the underlying stream as a hash block
