text: public override int Serialize(int offset, byte[] data, EscherSerializationListener listener){listener.BeforeRecordSerialize(offset, RecordId, this);int pos = offset;LittleEndian.PutShort(data, pos, Options); pos += 2;LittleEndian.PutShort(data, pos, RecordId); pos += 2;int remainingBytes = RecordSize - 8;LittleEndian.PutInt(data, pos, remainingBytes); pos += 4;LittleEndian.PutInt(data, pos, field_1_shapeIdMax); pos += 4;LittleEndian.PutInt(data, pos, NumIdClusters); pos += 4;LittleEndian.PutInt(data, pos, field_3_numShapesSaved); pos += 4;LittleEndian.PutInt(data, pos, field_4_drawingsSaved); pos += 4;for (int i = 0; i < field_5_fileIdClusters.Length; i++){LittleEndian.PutInt(data, pos, field_5_fileIdClusters[i].DrawingGroupId); pos += 4;LittleEndian.PutInt(data, pos, field_5_fileIdClusters[i].NumShapeIdsUsed); pos += 4;}listener.AfterRecordSerialize(pos, RecordId, RecordSize, this);return RecordSize;}