<% if (method.language.default.description) {-%>
        /// <summary>
        /// <%=project.helper.wrapComments('        ', '/// ', method.language.default.description)%>
<%# ToDo: add externaldocsurl -%>
        /// </summary>
<% };-%>
<%# ToDo: add remark if both description and summary is provided, question here is in m4, there is no summary provided-%>
<%  if(method.parameters&&!method.language.default.pageable?.nextPageOperation) { method.parameters.filter(p => p.implementation != 'Client' && !project.helper.IsConstantParameter(p) && !(p.extensions && p.extensions['x-ms-parameter-grouping'])).forEach(function (parameter) {-%>
<%# ToDo: should use camel name instead of pascal name here -%>
        /// <param name='<%-parameter.language.default.name%>'>
        /// <%=project.helper.wrapComments('        ', '/// ', parameter.language.default.description)%>
        /// </param>
<% });}-%>
<% if(!method.language.default.pageable?.nextPageOperation) {-%>
<% (method.requests[0].parameters || []).filter(p=>p.protocol.http.in == 'body' && !project.helper.IsConstantEnumParameter(p)).forEach(function(parameter){-%>
<%if(parameter.extensions && parameter.extensions['x-ms-client-flatten'] ) {-%>
<%project.helper.GetAllPublicVirtualProperties(parameter.schema.language.default.virtualProperties).filter(p => !project.helper.IsConstantEnumProperty(p) && !p.readOnly).forEach(function(vp) {-%>
        /// <param name='<%-vp.property.language.default.name%>'>
        /// <%=project.helper.wrapComments('        ', '/// ', vp.property.language.default.description)%>
        /// </param>
<%});-%>
<%} else {-%>
        /// <param name='<%-parameter.language.default.name%>'>
        /// <%=project.helper.wrapComments('        ', '/// ', parameter.language.default.description)%>
        /// </param>
<%}-%>
<% });-%>
<% } -%>
<% if(method.language.default.pageable?.nextPageOperation) {-%>
        /// <param name='nextPageLink'>
        /// The NextLink from the previous successful call to List operation.
        /// </param>
<% } -%>
        /// <param name='customHeaders'>
        /// Headers that will be added to request.
        /// </param>
        /// <param name='cancellationToken'>
        /// The cancellation token.
        /// </param>
        public async System.Threading.Tasks.Task<<%-method.language.default.responseType%>> <%-method.language.default.name%>WithHttpMessagesAsync(<%-method.language.default.asyncMethodParameterDeclarationWithCustomHeader%>)
        {
                // Send Request
                <%-method.language.default.responseType%> _response = await Begin<%-method.language.default.name%>WithHttpMessagesAsync(<%-method.language.default.asyncMethodInvocationArgsWithCustomerHeaders%>).ConfigureAwait(false);
                return await this<%-clientPrefix%>.<%-(method.requests[0].protocol.http.method == 'put' || method.requests[0].protocol.http.method == 'patch')?'GetPutOrPatch':(method.requests[0].protocol.http.method == 'post' || method.requests[0].protocol.http.method == 'delete')?'GetPostOrDelete':''%>OperationResultAsync(_response, customHeaders, cancellationToken).ConfigureAwait(false);
        }
