Inheritance: EntityType
        /// <summary>
        /// Verify the ContactType structure
        /// </summary>
        /// <param name="contact">An ContactType instance.</param>
        private void VerifyContactType(ContactType contact)
        {
            if (Common.IsRequirementEnabled(1279, this.Site))
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1279");

                // The contact element is ContactType type, if schema is validated and the element is not null
                // This requirement can be verified.
                Site.CaptureRequirementIfIsNotNull(
                    contact,
                    1279,
                    @"[In Appendix C: Product Behavior] Implementation does support the ContactType complex type which specifies the type of a contact. (Exchange 2013 and above follow this behavior.)
                                <xs:complexType name=""ContactType"">
                                    <xs:sequence>
                                      <xs:element name=""PersonName"" type=""xs:string"" minOccurs=""0"" />
                                      <xs:element name=""BusinessName"" type=""xs:string"" minOccurs=""0"" />
                                      <xs:element name=""PhoneNumbers"" type=""t:ArrayOfPhonesType"" minOccurs=""0"" maxOccurs=""1"" />
                                      <xs:element name=""Urls"" type=""t:ArrayOfUrlsType"" minOccurs=""0"" maxOccurs=""1"" />
                                      <xs:element name=""EmailAddresses"" type=""t:ArrayOfExtractedEmailAddresses"" minOccurs=""0"" maxOccurs=""1"" />
                                      <xs:element name=""Addresses"" type=""t:ArrayOfAddressesType"" minOccurs=""0"" maxOccurs=""1"" />
                                      <xs:element name=""ContactString"" type=""xs:string"" minOccurs=""0"" />
                                    </xs:sequence>
                                  </xs:complexType>");
            }

            if (contact.PhoneNumbers != null)
            {
                if (Common.IsRequirementEnabled(1281, this.Site))
                {
                    // Add the debug information
                    Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1281");

                    // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1281
                    // The PhoneNumbers element is ArrayOfPhonesType type, if schema is validated and the element is not null
                    // This requirement can be verified.
                    Site.CaptureRequirement(
                        1281,
                        @"[In Appendix C: Product Behavior] Implementation does support the ArrayOfPhonesType complex type which specifies an array of phone numbers. (Exchange 2013 and above follow this behavior.)
                            <xs:complexType name=""ArrayOfPhonesType"">
                                <xs:sequence>
                                    <xs:element name=""Phone"" type=""t:PhoneType"" minOccurs=""0"" maxOccurs=""unbounded"" />
                                </xs:sequence>
                                </xs:complexType>");
                }

                foreach (PhoneType phoneNumber in contact.PhoneNumbers)
                {
                    if (Common.IsRequirementEnabled(1282, this.Site))
                    {
                        // Add the debug information
                        Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1282");

                        // The phoneNumber element is PhoneEntityType type, if schema is validated and the element is not null
                        // This requirement can be verified.
                        Site.CaptureRequirementIfIsNotNull(
                            phoneNumber,
                            1282,
                            @"[In Appendix C: Product Behavior] Implementation does support the PhoneType complex type which specifies a phone number and its type. (Exchange 2013 and above follow this behavior.)
                                <xs:complexType name=""PhoneType"">
                                    <xs:sequence>
                                      <xs:element name=""OriginalPhoneString"" type=""xs:string"" minOccurs=""0"" />
                                      <xs:element name=""PhoneString"" type=""xs:string"" minOccurs=""0"" />
                                      <xs:element name=""Type"" type=""xs:string"" minOccurs=""0"" />
                                    </xs:sequence>
                                  </xs:complexType>");
                    }
                }
            }

            if (contact.Urls != null)
            {
                if (Common.IsRequirementEnabled(1280, this.Site))
                {
                    // Add the debug information
                    Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1280");

                    // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1280
                    // The Urls element is ArrayOfUrlsType type, if schema is validated and the element is not null
                    // This requirement can be verified.
                    Site.CaptureRequirement(
                        1280,
                        @"[In Appendix C: Product Behavior] Implementation does support the ArrayOfUrlsType complex type which specifies an array of URLs. (Exchange 2013 and above follow this behavior.) 
                            <xs:complexType name=""ArrayOfUrlsType"">
                                <xs:sequence>
                                  <xs:element name=""Url"" type=""xs:string"" minOccurs=""0"" maxOccurs=""unbounded""/>
                                </xs:sequence>
                              </xs:complexType>");
                }
            }

            if (contact.EmailAddresses != null)
            {
                if (Common.IsRequirementEnabled(1287, this.Site))
                {
                    // Add the debug information
                    Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1287");

                    // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1287
                    // The EmailAddresses element is ArrayOfExtractedEmailAddresses type, if schema is validated and the element is not null
                    // This requirement can be verified.
                    Site.CaptureRequirement(
                        1287,
                        @"[In Appendix C: Product Behavior] Implementation does support the ArrayOfExtractedEmailAddresses complex type which specifies an array of email addresses. (Exchange 2013 and above follow this behavior.)
                            <xs:complexType name=""ArrayOfExtractedEmailAddresses"">
                                <xs:sequence>
                                  <xs:element name=""EmailAddress"" type=""xs:string"" minOccurs=""0"" maxOccurs=""unbounded""/>
                                </xs:sequence>
                              </xs:complexType>");
                }
            }

            if (contact.Addresses != null)
            {
                if (Common.IsRequirementEnabled(1272, this.Site))
                {
                    // Add the debug information
                    Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCORE_R1272");

                    // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1272
                    // The Addresses element is ArrayOfAddressesType type, if schema is validated and the element is not null
                    // This requirement can be verified.
                    Site.CaptureRequirement(
                        1272,
                        @"[In Appendix C: Product Behavior] Implementation does support the ArrayOfAddressesType complex type which specifies an array of addresses.(Exchange 2013 and above follow this behavior.)
                             <xs:complexType name=""ArrayOfAddressesType"">
                                <xs:sequence>
                                  <xs:element name=""Address"" type=""xs:string"" minOccurs=""0"" maxOccurs=""unbounded""/>
                                </xs:sequence>
                              </xs:complexType>");
                }
            }
        }