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, getPropertiesSize() );int pos = offset + 8;for ( EscherProperty property : properties ){pos += property.serializeSimplePart( data, pos );}for ( EscherProperty property : properties ){pos += property.serializeComplexPart( data, pos );}listener.afterRecordSerialize( pos, getRecordId(), pos - offset, this );return pos - offset;}

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, PropertiesSize);int pos = offset + 8;foreach (EscherProperty property in properties){pos += property.SerializeSimplePart(data, pos);}foreach (EscherProperty property in properties){pos += property.SerializeComplexPart(data, pos);}listener.AfterRecordSerialize(pos, RecordId, pos - offset, this);return pos - offset;}
