<% methodGroup.operations.forEach(function(method){ -%>
<%# ToDo: support for ExcludeFromInterface -%>
<% if(method.language.default.description) {-%>
        /// <summary>
        /// <%=project.helper.wrapComments('        ', '/// ', method.language.default.description)%>
<%# ToDo: support for  ExternalDocsUrl -%>
        /// </summary>
        /// <remarks>
        /// <%=project.helper.wrapComments('        ', '/// ', method.language.default.description)%>
        /// </remarks>
<% };-%>
<% if(!method.language.default.pageable?.nextPageOperation) {-%>
<% method.parameters.filter(p=>p.implementation != 'Client' && !project.helper.IsConstantParameter(p) && p.protocol.http?.in != 'complexHeader' && !(p.extensions && p.extensions['x-ms-parameter-grouping'])).forEach(function(parameter){-%>
        /// <param name='<%-parameter.language.default.name%>'>
        /// <%=project.helper.wrapComments('        ', '/// ', parameter.language.default.description)%>
        /// </param>
<% }); -%>
<% (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'>
        /// The headers that will be added to request.
        /// </param>
        /// <param name='cancellationToken'>
        /// The cancellation token.
        /// </param>
<%# ToDo: Need to figure out whether we could hand code the exception here -%>
        /// <exception cref="Microsoft.Rest.Azure.CloudException">
        /// Thrown when the operation returned an invalid status code
        /// </exception>
<% if ((method.responses || []).filter(r => r.schema).length > 0) {-%>
        /// <exception cref="Microsoft.Rest.SerializationException">
        /// Thrown when unable to deserialize the response
        /// </exception>
<% }; -%>
<% if (method.parameters.filter(p => p.required && p.nullable).length > 0 || (method.requests[0].parameters || []).filter(p => p.required && p.nullable).length > 0) {-%>
        /// <exception cref="Microsoft.Rest.ValidationException">
        /// Thrown when a required parameter is null
        /// </exception>
<% }; -%>
<%# ToDo: support GetObsoleteAttribute, deprecated message?-%>
        System.Threading.Tasks.Task<<%-method.language.default.responseType %>> <%- method.language.default.name%>WithHttpMessagesAsync(<%-method.language.default.asyncMethodParameterDeclarationWithCustomHeader%>);

<% }); -%>