/// <summary>
        /// Capture PhoneNumberDictionaryType Complex Type related requirements.
        /// </summary>
        /// <param name="responsePhoneNumberDictionaryType">The array of PhoneNumberDictionaryEntryType element from the response package of GetItem operation.</param>
        /// <param name="requestPhoneNumberDictionaryType">The array of PhoneNumberDictionaryEntryType element from the request package of CreateItem operation.</param>
        private void VerifyPhoneNumberDictionaryTypeComplexType(PhoneNumberDictionaryEntryType[] responsePhoneNumberDictionaryType, PhoneNumberDictionaryEntryType[] requestPhoneNumberDictionaryType)
        {
            Site.Assert.IsNotNull(responsePhoneNumberDictionaryType, "The PhoneNumbers element should not be null!");

            for (int i = 0; i < responsePhoneNumberDictionaryType.Length; i++)
            {
                // Verify the PhoneNumberDictionaryEntryType element of PhoneNumberDictionaryType Complex Type.
                this.VerifyPhoneNumberDictionaryEntryTypeComplexType(responsePhoneNumberDictionaryType[i], requestPhoneNumberDictionaryType[i]);

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

                // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R253
                bool isVerifyR253 = this.IsSchemaValidated && (responsePhoneNumberDictionaryType[i] != null);

                Site.CaptureRequirementIfIsTrue(
                    isVerifyR253,
                    253,
                    @"[In t:PhoneNumberDictionaryType Complex Type] The type of the child element of Entry is t:PhoneNumberDictionaryEntryType (3.1.4.1.1.14).");
            }

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R251
            // R251 can be captured directly after each telephone number entry is validated.
            this.Site.CaptureRequirement(
                251,
                @"[In t:PhoneNumberDictionaryType Complex Type] The PhoneNumberDictionaryType complex type represents telephone numbers for a contact (2).");
        }
        /// <summary>
        /// Capture PhoneNumberDictionaryEntryType Complex Type related requirements.
        /// </summary>
        /// <param name="responsePhoneNumberDictionaryEntryType">The PhoneNumberDictionaryEntryType element from the response package of GetItem operation.</param>
        /// <param name="requestPhoneNumberDictionaryEntryType">The PhoneNumberDictionaryEntryType element from the request package of CreateItem operation.</param>
        private void VerifyPhoneNumberDictionaryEntryTypeComplexType(PhoneNumberDictionaryEntryType responsePhoneNumberDictionaryEntryType, PhoneNumberDictionaryEntryType requestPhoneNumberDictionaryEntryType)
        {
            Site.Assert.IsNotNull(responsePhoneNumberDictionaryEntryType, "The entry in PhoneNumbers element should not be null!");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R249
            // Key element is a required element in schema, PhoneNumberKeyType is verified when the schema is validated.
            Site.CaptureRequirementIfIsTrue(
                this.IsSchemaValidated,
                249,
                @"[In t:PhoneNumberDictionaryEntryType Complex Type] The type of the attribute of Key is t:PhoneNumberKeyType (3.1.4.1.2.6).");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R250
            this.Site.CaptureRequirementIfAreEqual<PhoneNumberKeyType>(
                requestPhoneNumberDictionaryEntryType.Key,
                responsePhoneNumberDictionaryEntryType.Key,
                250,
                @"[In t:PhoneNumberDictionaryEntryType Complex Type] Key attribute: Represents types of telephone numbers for a contact (2).");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R247
            // Because R247 is captured based on R249 and R250, so if both of them are captured successfully, R247 also should be captured.
            this.Site.CaptureRequirement(
                247,
                @"[In t:PhoneNumberDictionaryEntryType Complex Type] The PhoneNumberDictionaryEntryType complex type contains a telephone number for a contact (2).");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R43
            // Because R43 is captured in the same condition with R250, so if R250 is captured successfully, R43 also should be captured.
            this.Site.CaptureRequirement(
                43,
                @"[In t:ContactItemType Complex Type] PhoneNumbers element: Represents a collection of telephone numbers for a contact (2).");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R254
            // Because R254 is captured in the same condition with R250, so if R250 is captured successfully, R254 also should be captured.
            this.Site.CaptureRequirement(
                254,
                @"[In t:PhoneNumberDictionaryType Complex Type] Entry child element: Contains a telephone number for a contact (2).");
        }