/**
         * Calculates the string representation of this record.  This Is
         * simply a dump of all the records.
         */
        public override String ToString()
        {
            String nl = Environment.NewLine;

            StringBuilder result = new StringBuilder();

            result.Append('[').Append(RecordName).Append(']' + nl);
            for (IEnumerator iterator = EscherRecords.GetEnumerator(); iterator.MoveNext();)
            {
                EscherRecord escherRecord = (EscherRecord)iterator.Current;
                result.Append(escherRecord.ToString());
            }
            result.Append("[/").Append(RecordName).Append(']' + nl);

            return(result.ToString());
        }
        public override int Serialize(int offset, byte [] data)
        {
            byte[] rawData = RawData;
            if (EscherRecords.Count == 0 && rawData != null)
            {
                return(WriteData(offset, data, rawData));
            }
            else
            {
                byte[] buffer = new byte[RawDataSize];
                int    pos    = 0;
                for (IEnumerator iterator = EscherRecords.GetEnumerator(); iterator.MoveNext();)
                {
                    EscherRecord r = (EscherRecord)iterator.Current;
                    pos += r.Serialize(pos, buffer, new NullEscherSerializationListener());
                }

                return(WriteData(offset, data, buffer));
            }
        }