/// <summary>
        /// The MarkAsJunk operation marks an item as junk.
        /// </summary>
        /// <param name="markAsJunkRequest">Specify a request for a MarkAsJunk operation.</param>
        /// <returns>A response to MarkAsJunk operation request.</returns>
        public MarkAsJunkResponseType MarkAsJunk(MarkAsJunkType markAsJunkRequest)
        {
            MarkAsJunkResponseType markAsJunkReponse = this.exchangeServiceBinding.MarkAsJunk(markAsJunkRequest);

            Site.Assert.IsNotNull(markAsJunkReponse, "If the operation is successful, the response should not be null.");

            // SOAP version is set to 1.1, if a response can be received from server, then it means SOAP 1.1 is supported.
            this.VerifySoapVersion();

            // Verify transport type related requirement.
            this.VerifyTransportType();

            this.VerifyServerVersionInfo(this.exchangeServiceBinding.ServerVersionInfoValue, this.exchangeServiceBinding.IsSchemaValidated);
            this.VerifyMarkAsJunkResponse(markAsJunkReponse, this.exchangeServiceBinding.IsSchemaValidated);
            return(markAsJunkReponse);
        }
        /// <summary>
        /// Verify the MarkAsJunkResponseType structure.
        /// </summary>
        /// <param name="markAsJunkReponse">A MarkAsJunkResponseType instance</param>
        /// <param name="isSchemaValidated">Indicate whether schema is verified.</param>
        private void VerifyMarkAsJunkResponse(MarkAsJunkResponseType markAsJunkReponse, bool isSchemaValidated)
        {
            Site.Assert.IsTrue(isSchemaValidated, "The schema should be validated.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1791
            Site.CaptureRequirementIfIsNotNull(
                markAsJunkReponse,
                1791,
                @"[In MarkAsJunk Operation] The following is the WSDL port type specification of the MarkAsJunk operation.
                    <wsdl:operation name=""MarkAsJunk"">
                      <wsdl:input message=""tns:MarkAsJunkSoapIn""/>
                      <wsdl:output message=""tns:MarkAsJunkSoapOut""/>
                    </wsdl:operation>");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1792
            Site.CaptureRequirementIfIsNotNull(
                markAsJunkReponse,
                1792,
                @"[In MarkAsJunk Operation] The following is the WSDL binding specification of the MarkAsJunk operation
                    <wsdl:operation name=""MarkAsJunk"">
                      <soap:operation soapAction=""http://schemas.microsoft.com/exchange/services/2006/messages/MarkAsJunk""/>
                      <wsdl:input>
                        <soap:header message=""tns:MarkAsJunkSoapIn"" part=""Impersonation"" use=""literal""/>
                        <soap:header message=""tns:MarkAsJunkSoapIn"" part=""MailboxCulture"" use=""literal""/>
                        <soap:header message=""tns:MarkAsJunkSoapIn"" part=""RequestVersion"" use=""literal""/>
                        <soap:body parts=""request"" use=""literal""/>
                      </wsdl:input>
                      <wsdl:output>
                        <soap:body parts=""MarkAsJunkResult"" use=""literal""/>
                        <soap:header message=""tns:MarkAsJunkSoapOut"" part=""ServerVersion"" use=""literal""/>
                      </wsdl:output>
                    </wsdl:operation>");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1809
            Site.CaptureRequirementIfIsNotNull(
                markAsJunkReponse,
                1809,
                @"[In tns:MarkAsJunkSoapOut Message] [The MarkAsJunkSoapOut WSDL message is defined as:] <wsdl:message name=""MarkAsJunkSoapOut"">
                      <wsdl:part name=""MarkAsJunkResult"" element=""tns:MarkAsJunkResponse""/>
                      <wsdl:part name=""ServerVersion"" element=""t:ServerVersionInfo""/>
                    </wsdl:message>");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1812
            Site.CaptureRequirementIfIsNotNull(
                markAsJunkReponse,
                1812,
                @"[In tns:MarkAsJunkSoapOut Message] The type of MarkAsJunkResult is tns:MarkAsJunkResponse (section 3.1.4.6.2.2).");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1813
            // According to the schema, markAsJunkReponse is the SOAP body of a response message returned by server, this requirement can be verified directly.
            Site.CaptureRequirement(
                1813,
                @"[In tns:MarkAsJunkSoapOut Message] [The part ""MarkAsJunkResult""] Specifies the SOAP body of the response to a MarkAsJunk operation request.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1814
            Site.CaptureRequirementIfIsNotNull(
                this.exchangeServiceBinding.ServerVersionInfoValue,
                1814,
                @"[In tns:MarkAsJunkSoapOut Message] The type of ServerVersion is t:ServerVersionInfo ([MS-OXWSCDATA] section 2.2.5.10).");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1815
            // According to the schema, ServerVersion is the SOAP header that contains the server version information, this requirement can be verified directly.
            Site.CaptureRequirement(
                1815,
                @"[In tns:MarkAsJunkSoapOut Message] [The part ""ServerVersion""] Specifies a SOAP header that identifies the server version for the response to a MarkAsJunk operation request.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1818
            // MarkAsJunkResponse is the response of MarkAsJunk operation, this requirement can be captured directly.
            Site.CaptureRequirement(
                1818,
                @"[In Elements] [The element ""MarkAsJunkResponse"" is] The result data for the MarkAsJunk WSDL operation.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1821
            // MarkAsJunkResponse is the response of MarkAsJunk operation, this requirement can be captured directly.
            Site.CaptureRequirement(
                1821,
                @"[In m:MarkAsJunkResponse Element] The MarkAsJunkResponse element specifies the response for a MarkAsJunk operation, as specified in section 3.1.4.6.");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1822
            Site.CaptureRequirementIfIsNotNull(
                markAsJunkReponse,
                1822,
                @"[In m:MarkAsJunkResponse Element] [The MarkAsJunkResponse element is defined as:] <xs:element name=""MarkAsJunkResponse"" type=""m:MarkAsJunkResponseType"" />");

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1845
            Site.CaptureRequirementIfIsNotNull(
                markAsJunkReponse,
                1845,
                @"[In m:MarkAsJunkResponseType Complex Type] [The MarkAsJunkResponseType Complex Type is defined as:] <xs:complexType name=""MarkAsJunkResponseType"">
                    <xs:complexContent>
                      <xs:extension base=""m:BaseResponseMessageType"" />
                    </xs:complexContent>
                  </xs:complexType");

            // Verify the BaseResponseMessageType schema.
            this.VerifyBaseResponseMessageType(markAsJunkReponse);

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

            // Verify MS-OXWSCORE requirement: MS-OXWSCORE_R1848
            Site.CaptureRequirementIfIsNotNull(
                markAsJunkReponse,
                1848,
                @"[In m:MarkAsJunkResponseMessageType Complex Type] [The MarkAsJunkResponseMessageType Complex Type is defined as:] <xs:complexType name=""MarkAsJunkResponseMessageType"">
                    <xs:complexContent>
                      <xs:extension base=""m:ResponseMessageType"">
                        <xs:sequence>
                          <xs:sequence>
                            <xs:element name=""MovedItemId"" type=""t:ItemIdType"" minOccurs=""0"" maxOccurs=""1""/>
                          </xs:sequence>
                        </xs:sequence>
                      </xs:extension>
                    </xs:complexContent>
                  </xs:complexType>");
        }