internal static void Read(XmlReader reader, Sender sender)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }

            if (reader.IsEmptyElement)
            {
                SerializationHelper.SkipNode(reader);
                return;
            }

            reader.ReadStartElement(SenderSerializer.Sender);
            reader.MoveToContent();

            while (!reader.EOF)
            {
                if (SerializationHelper.IsEndElement(reader, SenderSerializer.Sender))
                {
                    SerializationHelper.SkipNode(reader);
                    break;
                }

                if (reader.NodeType == XmlNodeType.Element)
                {
                    switch (reader.Name)
                    {
                    case SenderSerializer.Name:
                        sender.Name = reader.ReadElementContentAsString();
                        break;

                    case SenderSerializer.Email:
                        sender.Email = reader.ReadElementContentAsString();
                        break;

                    case PhoneSerializer.Phone:
                        Phone phone = new Phone();
                        PhoneSerializer.Read(reader, phone);
                        sender.Phone = phone;
                        break;

                    default:
                        SerializationHelper.SkipElement(reader);
                        break;
                    }
                }
                else
                {
                    SerializationHelper.SkipNode(reader);
                }
            }
        }
        internal static void Write(XmlWriter writer, Sender sender)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            if (sender == null)
            {
                throw new ArgumentNullException("sender");
            }

            writer.WriteStartElement(SenderSerializer.Sender);

            SerializationHelper.WriteElementStringNotNull(writer, SenderSerializer.Name, sender.Name);
            SerializationHelper.WriteElementStringNotNull(writer, SenderSerializer.Email, sender.Email);

            if (sender.Phone != null)
            {
                PhoneSerializer.Write(writer, sender.Phone);
            }
            writer.WriteEndElement();
        }