text: public int serialize(int offset, byte[] data, EscherSerializationListener listener) {listener.beforeRecordSerialize( offset, getRecordId(), this );int pos = offset;LittleEndian.putShort( data, pos, getOptions() );     pos += 2;LittleEndian.putShort( data, pos, getRecordId() );    pos += 2;int remainingBytes = getRecordSize() - 8;LittleEndian.putInt( data, pos, remainingBytes );              pos += 4;LittleEndian.putInt( data, pos, field_1_shapeIdMax );          pos += 4;LittleEndian.putInt( data, pos, getNumIdClusters() );          pos += 4;LittleEndian.putInt( data, pos, field_3_numShapesSaved );      pos += 4;LittleEndian.putInt( data, pos, field_4_drawingsSaved );       pos += 4;for (FileIdCluster fic : field_5_fileIdClusters) {LittleEndian.putInt( data, pos, fic.getDrawingGroupId() );   pos += 4;LittleEndian.putInt( data, pos, fic.getNumShapeIdsUsed() );  pos += 4;}listener.afterRecordSerialize( pos, getRecordId(), getRecordSize(), this );return getRecordSize();}