/// <summary>
        /// Capture ImAddressDictionaryType Complex Type related requirements.
        /// </summary>
        /// <param name="responseInstantMessageAddressDictionary">The array of ImAddressDictionaryEntryType element from the response package of GetItem operation.</param>
        /// <param name="requestInstantMessageAddressDictionary">The array of ImAddressDictionaryEntryType element from the request package of CreateItem operation.</param>
        private void VerifyImAddressDictionaryTypeComplexType(ImAddressDictionaryEntryType[] responseInstantMessageAddressDictionary, ImAddressDictionaryEntryType[] requestInstantMessageAddressDictionary)
        {
            Site.Assert.IsNotNull(responseInstantMessageAddressDictionary, "The ImAddresses element should not be null!");

            for (int i = 0; i < responseInstantMessageAddressDictionary.Length; i++)
            {
                // Verify the ImAddressDictionaryEntryType element of ImAddressDictionaryType Complex Type.
                this.VerifyImAddressDictionaryEntryTypeComplexType(responseInstantMessageAddressDictionary[i], requestInstantMessageAddressDictionary[i]);

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

                // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R245
                bool isVerifyR245 = this.IsSchemaValidated && (responseInstantMessageAddressDictionary[i] != null);

                Site.CaptureRequirementIfIsTrue(
                    isVerifyR245,
                    245,
                    @"[In t:ImAddressDictionaryType Complex Type] The type of the child element of Entry is t:ImAddressDictionaryEntryType (3.1.4.1.1.14)");
            }

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R243
            // R243 can be captured directly after each instant messaging address entry is validated.
            this.Site.CaptureRequirement(
                243,
                @"[In t:ImAddressDictionaryType Complex Type] The ImAddressDictionaryType complex type contains instant messaging addresses for a contact (2).");
        }
        /// <summary>
        /// Capture ImAddressDictionaryEntryType Complex Type related requirements.
        /// </summary>
        /// <param name="responseInstantMessageAddressDictionaryEntry">The ImAddressDictionaryEntryType element from the response package of GetItem operation.</param>
        /// <param name="requestInstantMessageAddressDictionaryEntry">The ImAddressDictionaryEntryType element from the request package of CreateItem operation.</param>
        private void VerifyImAddressDictionaryEntryTypeComplexType(ImAddressDictionaryEntryType responseInstantMessageAddressDictionaryEntry, ImAddressDictionaryEntryType requestInstantMessageAddressDictionaryEntry)
        {
            Site.Assert.IsNotNull(responseInstantMessageAddressDictionaryEntry, "The ImAddresses element should not contain null entry!");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R241
            // Key element is a required element in schema, ImAddressKeyType is verified when the schema is validated.
            Site.CaptureRequirementIfIsTrue(
                this.IsSchemaValidated,
                241,
                @"[In t:ImAddressDictionaryEntryType Complex Type] The type of the attribute of key is t:ImAddressKeyType (3.1.4.1.2.5)");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R242
            this.Site.CaptureRequirementIfAreEqual<ImAddressKeyType>(
                requestInstantMessageAddressDictionaryEntry.Key,
                responseInstantMessageAddressDictionaryEntry.Key,
                242,
                @"[In t:ImAddressDictionaryEntryType Complex Type] t:ImAddressKeyType attribute: Represents the instant messaging addresses for a contact (2).");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R239
            // Because R239 is captured based on R241 and R242, so if both of them are captured successfully, R239 also should be captured.
            this.Site.CaptureRequirement(
                239,
                @"[In t:ImAddressDictionaryEntryType Complex Type] The ImAddressDictionaryEntryType complex type represents a collection of instant messaging addresses for a contact (2).");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R61
            // Because R61 is captured in the same condition with R242, so if R242 is captured successfully, R61 also should be captured.
            this.Site.CaptureRequirement(
                61,
                @"[In t:ContactItemType Complex Type] ImAddresses element: Contains instant messaging addresses for a contact (2).");

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

            // Verify MS-OXWSCONT requirement: MS-OXWSCONT_R246
            // Because R246 is captured in the same condition with R242, so if R242 is captured successfully, R246 also should be captured.
            this.Site.CaptureRequirement(
                246,
                @"[In t:ImAddressDictionaryType Complex Type] Entry child element: Represents a collection of instant messaging addresses for a contact (2).");
        }