text: 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);int remainingBytes = _thedata.Length;for (IEnumerator iterator = ChildRecords.GetEnumerator(); iterator.MoveNext(); ){EscherRecord r = (EscherRecord)iterator.Current;remainingBytes += r.RecordSize;}LittleEndian.PutInt(data, offset + 4, remainingBytes);Array.Copy(_thedata, 0, data, offset + 8, _thedata.Length);int pos = offset + 8 + _thedata.Length;for (IEnumerator iterator = ChildRecords.GetEnumerator(); iterator.MoveNext(); ){EscherRecord r = (EscherRecord)iterator.Current;pos += r.Serialize(pos, data);}listener.AfterRecordSerialize(pos, RecordId, pos - offset, this);return pos - offset;}