/// <summary>
        /// Capture requirements related with CoauthSubResponseDataType.
        /// </summary>
        /// <param name="coauthSubResponseData">The CoauthSubResponseDataType</param>
        /// <param name="site">Instance of ITestSite</param>
        public static void ValidateCoauthSubResponseDataType(CoauthSubResponseDataType coauthSubResponseData, ITestSite site)
        {
            // Verify MS-FSSHTTP requirement: MS-FSSHTTP_R994
            // if can launch this method, the schema matches.
            site.CaptureRequirement(
                     "MS-FSSHTTP",
                     994,
                     @"[In Coauth Subrequest] CoauthSubResponseDataType defines the type of the SubResponseData element inside the coauthoring SubResponse element.");

            // Verify MS-FSSHTTP requirement: MS-FSSHTTP_R602
            // If SubResponseData exists,its schema will have been validated before invoking the method CaptureJoinCoauthoringSessionRelatedRequirements.
            // So MS-FSSHTTP_R602 can be captured.
            site.CaptureRequirement(
                     "MS-FSSHTTP",
                     602,
                     @"[In CoauthSubResponseDataType][CoauthSubResponseDataType schema is:]
                     <xs:complexType name=""CoauthSubResponseDataType"">
                         <xs:attribute name=""LockType"" type=""tns:LockTypes"" use=""optional"" />
                         <xs:attribute name=""CoauthStatus"" type=""tns:CoauthStatusType"" use=""optional""/>
                         <xs:attribute name=""TransitionID"" type=""tns:guid"" use=""optional""/>
                         <xs:attribute name=""ExclusiveLockReturnReason"" type=""tns:ExclusiveLockReturnReasonTypes"" use=""optional"" />
                     </xs:complexType>");

            // Verify MS-FSSHTTP requirement: MS-FSSHTTP_R999
            // if can launch this method, the schema matches.
            site.CaptureRequirement(
                     "MS-FSSHTTP",
                     999,
                     @"[In Coauth Subrequest] The SubResponseData element returned for a coauthoring subrequest is of type CoauthSubResponseDataType.");

            // Verify MS-FSSHTTP requirement: MS-FSSHTTP_R1392
            // if can launch this method, the schema matches
            site.CaptureRequirement(
                     "MS-FSSHTTP",
                     1392,
                     @"[In SubResponseDataGenericType][SubResponseDataGenericType MUST take one of the forms described in the following table] CoauthSubResponseDataType: Type definition for coauthoring subresponse data.");

            if (coauthSubResponseData.LockTypeSpecified)
            {
                ValidateLockTypes(site);

                // Verify MS-FSSHTTP requirement: MS-FSSHTTP_R998
                // if can launch this method, the schema matches.
                site.CaptureRequirement(
                         "MS-FSSHTTP",
                         998,
                         @"[In Coauth Subrequest] The lock type is specified in the LockType attribute in the coauthoring SubResponseData element.");
            }

            if (coauthSubResponseData.CoauthStatusSpecified)
            {
                // Verify the CoauthStatusType schema related requirements. 
                ValidateCoauthStatusType(site);
            }

            if (coauthSubResponseData.TransitionID != null)
            {
                // Verify MS-FSSHTTP requirement: MS-FSSHTTP_R2075, since TransitionID is marked as "tns:guid" type, the following 
                // 2 requirements can be capture if the schema is valid.
                site.CaptureRequirement(
                         "MS-FSSHTTP",
                         2075,
                         @"[In SubResponseDataOptionalAttributes] TransitionID: A guid that specifies the file identifier stored for that file on the protocol server.");

                // Verify the GUID schema related requirements. 
                ValidateGUID(site);
            }

            if (coauthSubResponseData.ExclusiveLockReturnReasonSpecified)
            {
                // Verify the ExclusiveLockReturnReasonTypes schema related requirements.
                ValidateExclusiveLockReturnReasonTypes(site);
            }
        }