public int serialize( int offset, byte[] data, EscherSerializationListener listener ) {listener.beforeRecordSerialize(offset, getRecordId(), this);LittleEndian.putShort( data, offset, getOptions() );LittleEndian.putShort( data, offset + 2, getRecordId() );LittleEndian.putInt( data, offset + 4, getRecordSize() - HEADER_SIZE );int pos = offset + HEADER_SIZE;System.arraycopy( field_1_UID, 0, data, pos, 16 );data[pos + 16] = field_2_marker;byte[] pd = getPicturedata();System.arraycopy( pd, 0, data, pos + 17, pd.length );listener.afterRecordSerialize(offset + getRecordSize(), getRecordId(), getRecordSize(), this);return HEADER_SIZE + 16 + 1 + pd.length;}

public override int Serialize(int offset, byte[] data, EscherSerializationListener listener){listener.BeforeRecordSerialize(offset, RecordId, this);LittleEndian.PutShort(data, offset, Options);LittleEndian.PutShort(data, offset + 2, RecordId);LittleEndian.PutInt(data, offset + 4, RecordSize - HEADER_SIZE);int pos = offset + HEADER_SIZE;Array.Copy(field_1_UID, 0, data, pos, 16);data[pos + 16] = field_2_marker;Array.Copy(field_pictureData, 0, data, pos + 17, field_pictureData.Length);listener.AfterRecordSerialize(offset + RecordSize, RecordId, RecordSize, this);return HEADER_SIZE + 16 + 1 + field_pictureData.Length;}
