/// <summary>
        /// Verifies the response of GetMeetingsInformation.
        /// </summary>
        /// <param name="result">The response information of GetMeetingsInformation</param>
        /// <param name="requestFlags">The flag of the request</param>
        private void VerifyGetMeetingsInformationResponse(GetMeetingsInformationResponseGetMeetingsInformationResult result, MeetingInfoTypes? requestFlags)
        {
            bool isResponseValid = ValidationResult.Success == SchemaValidation.ValidationResult;

            // If the server response pass the validation successfully, we can make sure that the server responds with a GetMeetingsInformationSoapOut response message.
            Site.CaptureRequirementIfIsTrue(
                isResponseValid,
                168,
                @"[In GetMeetingsInformation]This operation[GetMeetingsInformation] is defined as follows. 
               <wsdl:operation name=""GetMeetingsInformation"">
                <wsdl:input message=""GetMeetingsInformationSoapIn"" />
                <wsdl:output message=""GetMeetingsInformationSoapOut"" />
               </wsdl:operation>");

            // If the server response pass the validation successfully, we can make sure that the server responds with a GetMeetingsInformationSoapOut response message.
            // Verifies MS-MEETS requirement: MS-MEETS_R170.
            Site.CaptureRequirementIfIsTrue(
                isResponseValid,
                170,
                @"[In GetMeetingsInformation][if the client sends a GetMeetingsInformationSoapIn request message]and the protocol server responds with a GetMeetingsInformationSoapOut response message (section 3.1.4.5.1.2).");

            // Verifies MS-MEETS requirement: MS-MEETS_R176.
            Site.CaptureRequirementIfIsTrue(
                this.ResponseExists(SchemaValidation.LastRawResponseXml, "GetMeetingsInformationResponse"),
                176,
                @"[In GetMeetingsInformationSoapOut]The SOAP body contains a GetMeetingsInformationResponse element  (section 3.1.4.5.2.2).");

            // If the server response pass the validation successfully, we can make sure that the GetMeetingsInformationResponse is defined according to the schema.
            // Verifies MS-MEETS requirement: MS-MEETS_R188.
            Site.CaptureRequirementIfIsTrue(
                isResponseValid,
                188,
                 @"[In GetMeetingsInformationResponse]This element [GetMeetingsInformationResponse]is defined as follows.
                    <s:element name=""GetMeetingsInformationResponse"">
                      <s:complexType>
                        <s:sequence>
                          <s:element minOccurs=""0"" maxOccurs=""1"" name=""GetMeetingsInformationResult"">
                            <s:complexType mixed=""true"">
                              <s:sequence>
                                <s:element name=""MeetingsInformation"">
                                  <s:complexType mixed=""true"">
                                    <s:element minOccurs=""0"" maxOccurs=""1"" name=""AllowCreate"" type=""tns:CaseInsensitiveTrueFalse"" />
                                    <s:element name=""ListTemplateLanguages"" minOccurs=""0"">
                                      <s:complexType>
                                        <s:sequence>
                                         <s:element minOccurs=""0"" maxOccurs=""unbounded"" name=""LCID"" type=""s:string"" />
                                         </s:sequence>
                                       </s:complexType>
                                     </s:element>
                                     <s:element name=""ListTemplates"" minOccurs=""0"">
                                       <s:complexType>
                                        <s:sequence>
                                          <s:element minOccurs=""0"" maxOccurs=""unbounded"" name=""Template"" type=""tns:Template"" />
                                        </s:sequence>
                                      </s:complexType>
                                    </s:element>
                                    <s:element minOccurs=""0"" maxOccurs=""1"" name=""WorkspaceStatus"" type=""tns:WorkspaceStatus"" />                
                                  </s:complexType>
                                </s:element>
                              </s:sequence>
                            </s:complexType>
                          </s:element>
                        </s:sequence>
                      </s:complexType>
                    </s:element>");

            // If the GetMeetingsInformationResult element exist, check the following requirements.
            if (result != null)
            {
                // Check response xml content and requestFlags parameter relationship and capture related requirements
                if (requestFlags.HasValue && (requestFlags & MeetingInfoTypes.AllowCreate) != 0)
                {
                    // If AllowCreate is exist and server response pass the validation successfully, MS-MEETS_R192 can be verified.
                    Site.CaptureRequirementIfIsTrue(
                        isResponseValid,
                        192,
                         @"[In GetMeetingsInformationResponse][AllowCreate is defined as follows:]
                    <s:element name=""AllowCreate"" type=""CaseInsensitiveTrueFalse"" minOccurs=""0""/>");

                    // If server response pass the validation successfully, MS-MEETS_R2931 can be verified.                    
                    Site.CaptureRequirementIfIsTrue(
                        isResponseValid,
                        2931,
                        @"[In CaseInsensitiveTrueFalse]The definition of the CaseInsensitiveTrueFalse simple type is as follows:
                    <s:simpleType name=""CaseInsensitiveTrueFalse"">
                      <s:restriction base=""s:string"">
                        <s:pattern value=""[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee]""/>
                      </s:restriction>
                    </s:simpleType>");
                }

                if (requestFlags.HasValue && (requestFlags & MeetingInfoTypes.QueryLanguages) != 0)
                {
                    // Verifies MS-MEETS requirement: MS-MEETS_R3041
                    Site.CaptureRequirementIfIsTrue(
                        isResponseValid,
                        3041,
                       @"[In GetMeetingsInformationResponse][ListTemplateLanguages is defined as follows:]
                        <s:element name=""ListTemplateLanguages"" minOccurs=""0"">
                          <s:complexType>
                            <s:sequence>
                              <s:element minOccurs=""0"" maxOccurs=""unbounded"" name=""LCID"" type=""s:string""/>
                            </s:sequence>
                          </s:complexType>
                        </s:element>");
                }

                if (requestFlags.HasValue && (requestFlags & MeetingInfoTypes.QueryTemplates) != 0)
                {
                    // Verifies MS-MEETS requirement: MS-MEETS_R201
                    Site.CaptureRequirementIfIsTrue(
                        isResponseValid,
                        201,
                         @"[In GetMeetingsInformationResponse][ListTemplates is defined as:]
                    <s:element name=""ListTemplates"" minOccurs=""0"">
                      <s:complexType>
                        <s:sequence>
                          <s:element minOccurs=""0"" maxOccurs=""unbounded"" name=""Template"" type=""tns:Template""/>
                        </s:sequence>
                      </s:complexType>
                    </s:element>");

                    if (this.ElementExists(SchemaValidation.LastRawResponseXml, "Template"))
                    {
                        // If Template element exist, and the server response pass the validation successfully, 
                        // we can make sure Template is defined according to the schema.
                        Site.CaptureRequirementIfIsTrue(
                            isResponseValid,
                            20101,
                            @"[In GetMeetingsInformationResponse][Template complex type is defined as follows:]
                                <s:complexType name=""Template"">
                                  <s:attribute name=""Name"" type=""s:string""/>
                                  <s:attribute name=""Title"" type=""s:string""/>
                                  <s:attribute name=""Id"" type=""s:int""/>
                                  <s:attribute name=""Description"" type=""s:string""/>
                                  <s:attribute name=""ImageUrl"" type=""s:string""/>
                                </s:complexType>");
                    }
                }

                if (requestFlags.HasValue && (requestFlags & MeetingInfoTypes.QueryOthers) != 0)
                {
                    // Verifies MS-MEETS requirement: MS-MEETS_R212.
                    Site.CaptureRequirementIfIsTrue(
                        this.ElementExists(SchemaValidation.LastRawResponseXml, "WorkspaceStatus"),
                        212,
                        @"[In GetMeetingsInformationResponse]This element [WorkspaceStatus]is present in the response when bit flag 0x8 is specified inrequestFlags.");

                   // Verifies MS-MEETS requirement: MS-MEETS_R21201.
                  Site.CaptureRequirementIfIsTrue(
                    isResponseValid,
                    21201,
                    @"[In GetMeetingsInformationResponse][WorkspaceStatus element is defined as follows:]
                    <s:element name=""WorkspaceStatus"" type=""tns: WorkspaceStatus"" minOccurs=""0""/>
                      < s:complexType name = ""WorkspaceStatus"" >
                        < s:attribute name = ""UniquePermissions"" type = ""tns:CaseInsensitiveTrueFalseOrEmpty"" />
                        < s:attribute name = ""MeetingCount"" type = ""tns:IntOrEmpty"" />
                        < s:attribute name = ""AnonymousAccess"" type = ""tns:CaseInsensitiveTrueFalseOrEmpty"" />
                        < s:attribute name = ""AllowAuthenticatedUsers"" type = ""tns:CaseInsensitiveTrueFalseOrEmpty"" />
                      </ s:complexType >
                    </ s:element > ");

                    // Verifies MS-MEETS requirement: MS-MEETS_R18801.          
                    Site.CaptureRequirementIfIsTrue(
                        isResponseValid,
                        18801,
                         @"[In GetMeetingsInformationResponse][WorkspaceStatus complex type is defined as follows:]
                        <s:complexType name=""WorkspaceStatus"">
                          <s:attribute name=""UniquePermissions"" type=""tns:CaseInsensitiveTrueFalseOrEmpty""/>
                          <s:attribute name=""MeetingCount"" type=""tns:UnsignedIntOrEmpty""/>
                          <s:attribute name=""AnonymousAccess"" type=""tns:CaseInsensitiveTrueFalseOrEmpty""/>
                          <s:attribute name=""AllowAuthenticatedUsers"" type=""tns:CaseInsensitiveTrueFalseOrEmpty""/>
                        </s:complexType>");

                    // Verifies MS-MEETS requirement: MS-MEETS_R2932.
                    Site.CaptureRequirementIfIsTrue(
                        isResponseValid,
                        2932,
                        @"[In CaseInsensitiveTrueFalseOrEmpty]The definition of the CaseInsensitiveTrueFalseOrEmpty simple type is as follows:
                    <s:simpleType name=""CaseInsensitiveTrueFalseOrEmpty"">
                      <s:restriction base=""s:string"">
                        <s:pattern value=""([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])?""/>
                      </s:restriction>
                    </s:simpleType>");

                    // Verifies MS-MEETS requirement: MS-MEETS_R2933.
                    Site.CaptureRequirementIfIsTrue(
                        isResponseValid,
                        2933,
                        @"[In IntOrEmpty]The definition of the IntOrEmpty simple type is as follows:
                        <s:simpleType name=""IntOrEmpty"">
                          < s:union memberTypes = ""s:Int tns:Empty"" />
                        </ s:simpleType > ");

                    // Verifies MS-MEETS requirement: MS-MEETS_R2934.                       
                    Site.CaptureRequirementIfIsTrue(
                        isResponseValid,
                        2934,
                        @"[In Empty]The definition of the Empty simple type is as follows.
                        <s:simpleType name=""Empty"">
                           <s:restriction base=""s:string"">
                             <s:maxLength value=""0""/>
                           </s:restriction>
                         </s:simpleType>");
                }

                // Since the situation of requestFlag set to 0x1(AllowCreate),0x2(QueryLanguages),0x4(QueryTemplates),0x8(QueryOthers) have verified in above capture code, so MS-MEETS_R191 can be captured directly. 
            Site.CaptureRequirement(
                191,
                @"[In GetMeetingsInformationResponse]An element [AllowCreate or ListTemplateLanguages or ListTemplates or WorkspaceStatus]is present, if its corresponding requestFlags was set as follows.");
            }
        }
        /// <summary>
        /// Queries information from a Web site about meeting workspaces on it or information about a meeting workspace itself.
        /// </summary>
        /// <param name="requestFlags">Bit flags that specify what information to request from the Web site. Null if not specified.</param>
        /// <param name="lcid">The locale ID of the meeting workspace templates to return. Null if not specified.</param>
        /// <returns>The aggregation of GetMeetingsInformationResponseGetMeetingsInformationResult response or SoapException thrown.</returns>
        public SoapResult<GetMeetingsInformationResponseGetMeetingsInformationResult> GetMeetingsInformation(MeetingInfoTypes? requestFlags, uint? lcid)
        {
            GetMeetingsInformationResponseGetMeetingsInformationResult result = null;
            SoapException exception = null;
            try
            {
                // Call GetMeetingsInformation method.
                result = this.service.GetMeetingsInformation((uint)(requestFlags ?? 0), requestFlags.HasValue, lcid ?? 0, lcid.HasValue);

                // As response successfully returned, the transport related requirements can be captured.
                this.CaptureTransportRelatedRequirements();
                this.ValidateAndCaptureCommonMessageSyntax();
                this.VerifyGetMeetingsInformationResponse(result, requestFlags);
            }
            catch (SoapException ex)
            {
                exception = ex;

                // As response successfully returned, the transport related requirements can be captured.
                this.CaptureTransportRelatedRequirements();

                // Validate soap fault message structure and capture related requirements.
                this.ValidateAndCaptureSoapFaultRequirements(exception);
            }

            return new SoapResult<GetMeetingsInformationResponseGetMeetingsInformationResult>(result, exception);
        }