/// <summary>
        /// Capture PhysicalAddressDictionaryType Complex Type related requirements.
        /// </summary>
        /// <param name="responsePhysicalAddressDictionaryType">The array of PhysicalAddressDictionaryEntryType element from the response package of GetItem operation.</param>
        /// <param name="requestPhysicalAddressDictionaryType">The array of PhysicalAddressDictionaryEntryType element from the request package of CreateItem operation.</param>
        private void VerifylPhysicalAddressDictionaryTypeComplexType(PhysicalAddressDictionaryEntryType[] responsePhysicalAddressDictionaryType, PhysicalAddressDictionaryEntryType[] requestPhysicalAddressDictionaryType)
        {
            Site.Assert.IsNotNull(responsePhysicalAddressDictionaryType, "The PhysicalAddresses element should not be null!");

            for (int i = 0; i < responsePhysicalAddressDictionaryType.Length; i++)
            {
                // Verify the PhysicalAddressDictionaryEntryType element of PhysicalAddressDictionaryType Complex Type.
                this.VerifyPhysicalAddressDictionaryEntryTypeComplexType(responsePhysicalAddressDictionaryType[i], requestPhysicalAddressDictionaryType[i]);

                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R271");

                // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R271
                bool isVerifyR271 = this.IsSchemaValidated && (responsePhysicalAddressDictionaryType[i] != null);

                Site.CaptureRequirementIfIsTrue(
                    isVerifyR271,
                    271,
                    @"[In t:PhysicalAddressDictionaryType Complex Type] The type of the child element of entry is t:PhysicalAddressDictionaryEntryType (section 3.1.4.1.1.16).");
            }

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R269");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R269
            // R269 can be captured directly after each physical address entry is validated.
            this.Site.CaptureRequirement(
                269,
                @"[In t:PhysicalAddressDictionaryType Complex Type] The PhysicalAddressDictionaryType complex type contains physical addresses that are associated with a contact (2).");
        }
        /// <summary>
        /// Capture PhysicalAddressDictionaryEntryType Complex Type related requirements.
        /// </summary>
        /// <param name="responsePhysicalAddressDictionaryEntryType">The PhysicalAddressDictionaryEntryType element from the response package of GetItem operation.</param>
        /// <param name="requestPhysicalAddressDictionaryEntryType">The PhysicalAddressDictionaryEntryType element from the request package of CreateItem operation.</param>
        private void VerifyPhysicalAddressDictionaryEntryTypeComplexType(PhysicalAddressDictionaryEntryType responsePhysicalAddressDictionaryEntryType, PhysicalAddressDictionaryEntryType requestPhysicalAddressDictionaryEntryType)
        {
            Site.Assert.IsNotNull(responsePhysicalAddressDictionaryEntryType, "The PhysicalAddresses element should not contain null entry!");

            Site.Assert.IsNotNull(responsePhysicalAddressDictionaryEntryType.Street, "The Street of the PhysicalAddressDictionaryEntryType element from response should not be null.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R257");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R257
            Site.CaptureRequirementIfIsTrue(
                this.IsSchemaValidated,
                257,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] The type of the child element of Street is xs:string [XMLSCHEMA2]");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R258");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R258
            this.Site.CaptureRequirementIfAreEqual<string>(
                requestPhysicalAddressDictionaryEntryType.Street,
                responsePhysicalAddressDictionaryEntryType.Street,
                258,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] Street child element: Contains the street address for a contact (2) item.");

            Site.Assert.IsNotNull(responsePhysicalAddressDictionaryEntryType.City, "The City of the PhysicalAddressDictionaryEntryType element from response should not be null.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R259");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R259
            Site.CaptureRequirementIfIsTrue(
                this.IsSchemaValidated,
                259,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] The type of the child element of City is xs:string");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R260");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R260
            this.Site.CaptureRequirementIfAreEqual<string>(
                requestPhysicalAddressDictionaryEntryType.City,
                responsePhysicalAddressDictionaryEntryType.City,
                260,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] City child element: Contains the city name for a contact (2) item.");

            Site.Assert.IsNotNull(responsePhysicalAddressDictionaryEntryType.State, "The State of the PhysicalAddressDictionaryEntryType element from response should not be null.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R261");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R261
            Site.CaptureRequirementIfIsTrue(
                this.IsSchemaValidated,
                261,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] The type of the child element of State is xs:string");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R262");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R262
            this.Site.CaptureRequirementIfAreEqual<string>(
                requestPhysicalAddressDictionaryEntryType.State,
                responsePhysicalAddressDictionaryEntryType.State,
                262,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] State child element: Contains the state for a contact (2) item.");

            Site.Assert.IsNotNull(responsePhysicalAddressDictionaryEntryType.CountryOrRegion, "The CountryOrRegion of the PhysicalAddressDictionaryEntryType element from response should not be null.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R263");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R263
            Site.CaptureRequirementIfIsTrue(
                this.IsSchemaValidated,
                263,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] The type of the child element of CountryOrRegion is xs:string");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R264");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R264
            this.Site.CaptureRequirementIfAreEqual<string>(
                requestPhysicalAddressDictionaryEntryType.CountryOrRegion,
                responsePhysicalAddressDictionaryEntryType.CountryOrRegion,
                264,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] CountryOrRegion child element: Contains the country or region for a contact (2) item.");

            Site.Assert.IsNotNull(responsePhysicalAddressDictionaryEntryType.PostalCode, "The PostalCode of the PhysicalAddressDictionaryEntryType element from response should not be null.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R265");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R265
            Site.CaptureRequirementIfIsTrue(
                this.IsSchemaValidated,
                265,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] The type of the child element of PostalCode is xs:string");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R266");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R266
            this.Site.CaptureRequirementIfAreEqual<string>(
                requestPhysicalAddressDictionaryEntryType.PostalCode,
                responsePhysicalAddressDictionaryEntryType.PostalCode,
                266,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] PostalCode child element: Contains the postal code for a contact (2) item.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R267");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R267
            // Key element is a required element in schema, PhysicalAddressKeyType is verified when the schema is validated.
            Site.CaptureRequirementIfIsTrue(
                this.IsSchemaValidated,
                267,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] The type of the attribute of Key is t:PhysicalAddressKeyType (section 3.1.4.1.2.8)");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R268");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R268
            this.Site.CaptureRequirementIfAreEqual<PhysicalAddressKeyType>(
                requestPhysicalAddressDictionaryEntryType.Key,
                responsePhysicalAddressDictionaryEntryType.Key,
                268,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] Key attribute: Identifies the types of physical addresses for a contact (2).");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R184");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R184
            // Because R184 is captured based on R267 and R268, so if both of them are captured successfully, R184 can be captured.
            this.Site.CaptureRequirement(
                184,
                @"[In t:PhysicalAddressKeyType Simple Type] The PhysicalAddressKeyType simple type identifies the types of physical addresses for a contact (2).");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R255");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R255
            // Because R255 is captured based on R258, R260, R262, R264, R266 and R268, so if all of them are captured successfully, R255 also should be captured.
            this.Site.CaptureRequirement(
                255,
                @"[In t:PhysicalAddressDictionaryEntryType Complex Type] The PhysicalAddressDictionaryEntryType complex type contains information that defines a physical address, such as a street address.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R272");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R272
            // Because R272 is captured based on R258, R260, R262, R264, R266 and R268, so if all of them are captured successfully, R272 can be captured.
            this.Site.CaptureRequirement(
                272,
                @"[In t:PhysicalAddressDictionaryType Complex Type] entry child element: Contains information that defines a physical address, such as a street address.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXWSCONT_R41");

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R41
            // Because R41 is captured based on R258, R260, R262, R264, R266 and R268, so if all of them are captured successfully, R41 can be captured.
            this.Site.CaptureRequirement(
                41,
                @"[In t:ContactItemType Complex Type] PhysicalAddresses element: Represents a collection of physical addresses that are associated with a contact.");
        }