public ContactChange(Contact contact)
        {
            this.Email = contact.Email;
            this.Voice = contact.Voice;
            this.Fax   = contact.Fax;

            this.PostalInfo   = contact.PostalInfo;
            this.DiscloseFlag = contact.DiscloseFlag;
            this.DiscloseMask = contact.DiscloseMask;
        }
        public ContactChange(Contact contact)
        {
            this.Email = contact.Email;
            this.Voice = contact.Voice;
            this.Fax = contact.Fax;

            this.PostalInfo = contact.PostalInfo;
            this.DiscloseFlag = contact.DiscloseFlag;
            this.DiscloseMask = contact.DiscloseMask;
        }
        protected XmlElement DiscloseToXml(XmlDocument doc, Contact.DiscloseFlags discloseMask, bool discloseFlag)
        {
            XmlElement discloseElement = doc.CreateElement("contact:disclose", namespaceUri);

            discloseElement.SetAttribute("flag", discloseFlag ? "1" : "0");

            Contact.DiscloseFlags mask = discloseFlag ? discloseMask : ~discloseMask;

            if ((mask & Contact.DiscloseFlags.Voice) != 0)
            {
                AddXmlElement(doc, discloseElement, "contact:voice", null, namespaceUri);
            }
            if ((mask & Contact.DiscloseFlags.Fax) != 0)
            {
                AddXmlElement(doc, discloseElement, "contact:fax", null, namespaceUri);
            }
            if ((mask & Contact.DiscloseFlags.Email) != 0)
            {
                AddXmlElement(doc, discloseElement, "contact:email", null, namespaceUri);
            }
            if ((mask & Contact.DiscloseFlags.NameInt) != 0)
            {
                XmlElement nameInt = AddXmlElement(doc, discloseElement, "contact:name", null, namespaceUri);
                nameInt.SetAttribute("type", "int");
            }
            if ((mask & Contact.DiscloseFlags.NameLoc) != 0)
            {
                XmlElement nameLoc = AddXmlElement(doc, discloseElement, "contact:name", null, namespaceUri);
                nameLoc.SetAttribute("type", "loc");
            }
            if ((mask & Contact.DiscloseFlags.OrganizationInt) != 0)
            {
                XmlElement orgInt = AddXmlElement(doc, discloseElement, "contact:org", null, namespaceUri);
                orgInt.SetAttribute("type", "int");
            }
            if ((mask & Contact.DiscloseFlags.OrganizationLoc) != 0)
            {
                XmlElement orgLoc = AddXmlElement(doc, discloseElement, "contact:org", null, namespaceUri);
                orgLoc.SetAttribute("type", "loc");
            }
            if ((mask & Contact.DiscloseFlags.AddressInt) != 0)
            {
                XmlElement addrInt = AddXmlElement(doc, discloseElement, "contact:addr", null, namespaceUri);
                addrInt.SetAttribute("type", "int");
            }
            if ((mask & Contact.DiscloseFlags.AddressLoc) != 0)
            {
                XmlElement addrLoc = AddXmlElement(doc, discloseElement, "contact:addr", null, namespaceUri);
                addrLoc.SetAttribute("type", "loc");
            }

            return(discloseElement);
        }