namespace Kit.Helpers.Routes
{
    using System;
    using System.Linq.Expressions;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;

    public partial class ControllerRouteFluent<TController> : IEndPointFluent<ControllerRouteFluent<TController>>
        where TController : Controller
    {
        public delegate TResult GenericResult0Delegate<TResult>();
        public delegate Task<TResult> GenericResult0DelegateAsync<TResult>();

        public delegate TResult GenericResult1Delegate<TResult, TInput1>(TInput1 input1);
        public delegate Task<TResult> GenericResult1DelegateAsync<TResult, TInput1>(TInput1 input1);

        public delegate TResult GenericResult2Delegate<TResult, TInput1, TInput2>(TInput1 input1, TInput2 input2);
        public delegate Task<TResult> GenericResult2DelegateAsync<TResult, TInput1, TInput2>(TInput1 input1, TInput2 input2);

        public delegate TResult GenericResult3Delegate<TResult, TInput1, TInput2, TInput3>(TInput1 input1, TInput2 input2, TInput3 input3);
        public delegate Task<TResult> GenericResult3DelegateAsync<TResult, TInput1, TInput2, TInput3>(TInput1 input1, TInput2 input2, TInput3 input3);

        public delegate TResult GenericResult4Delegate<TResult, TInput1, TInput2, TInput3, TInput4>(TInput1 input1, TInput2 input2, TInput3 input3, TInput4 input4);
        public delegate Task<TResult> GenericResult4DelegateAsync<TResult, TInput1, TInput2, TInput3, TInput4>(TInput1 input1, TInput2 input2, TInput3 input3, TInput4 input4);

        public delegate TResult GenericResult5Delegate<TResult, TInput1, TInput2, TInput3, TInput4, TInput5>(TInput1 input1, TInput2 input2, TInput3 input3, TInput4 input4, TInput5 input5);
        public delegate Task<TResult> GenericResult5DelegateAsync<TResult, TInput1, TInput2, TInput3, TInput4, TInput5>(TInput1 input1, TInput2 input2, TInput3 input3, TInput4 input4, TInput5 input5);


        #region TResult Actions

        public ControllerRouteFluent<TController> GenericAction<TResult>(string url, Expression<Func<TController, GenericResult0Delegate<TResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> GenericActionAsync<TResult>(string url, Expression<Func<TController, GenericResult0DelegateAsync<TResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> GenericAction<TResult, TInput1>(string url, Expression<Func<TController, GenericResult1Delegate<TResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> GenericActionAsync<TResult, TInput1>(string url, Expression<Func<TController, GenericResult1DelegateAsync<TResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> GenericAction<TResult, TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2Delegate<TResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> GenericActionAsync<TResult, TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2DelegateAsync<TResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> GenericAction<TResult, TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3Delegate<TResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> GenericActionAsync<TResult, TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3DelegateAsync<TResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> GenericAction<TResult, TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4Delegate<TResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> GenericActionAsync<TResult, TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4DelegateAsync<TResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> GenericAction<TResult, TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5Delegate<TResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> GenericActionAsync<TResult, TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5DelegateAsync<TResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        #endregion


        #region JsonResult Actions

        public ControllerRouteFluent<TController> JsonAction(string url, Expression<Func<TController, GenericResult0Delegate<JsonResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> JsonActionAsync(string url, Expression<Func<TController, GenericResult0DelegateAsync<JsonResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> JsonAction<TInput1>(string url, Expression<Func<TController, GenericResult1Delegate<JsonResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> JsonActionAsync<TInput1>(string url, Expression<Func<TController, GenericResult1DelegateAsync<JsonResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> JsonAction<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2Delegate<JsonResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> JsonActionAsync<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2DelegateAsync<JsonResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> JsonAction<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3Delegate<JsonResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> JsonActionAsync<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3DelegateAsync<JsonResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> JsonAction<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4Delegate<JsonResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> JsonActionAsync<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4DelegateAsync<JsonResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> JsonAction<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5Delegate<JsonResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> JsonActionAsync<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5DelegateAsync<JsonResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        #endregion


        #region EmptyResult Actions

        public ControllerRouteFluent<TController> EmptyAction(string url, Expression<Func<TController, GenericResult0Delegate<EmptyResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> EmptyActionAsync(string url, Expression<Func<TController, GenericResult0DelegateAsync<EmptyResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> EmptyAction<TInput1>(string url, Expression<Func<TController, GenericResult1Delegate<EmptyResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> EmptyActionAsync<TInput1>(string url, Expression<Func<TController, GenericResult1DelegateAsync<EmptyResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> EmptyAction<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2Delegate<EmptyResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> EmptyActionAsync<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2DelegateAsync<EmptyResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> EmptyAction<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3Delegate<EmptyResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> EmptyActionAsync<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3DelegateAsync<EmptyResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> EmptyAction<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4Delegate<EmptyResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> EmptyActionAsync<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4DelegateAsync<EmptyResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> EmptyAction<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5Delegate<EmptyResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> EmptyActionAsync<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5DelegateAsync<EmptyResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        #endregion


        #region ContentResult Actions

        public ControllerRouteFluent<TController> ContentAction(string url, Expression<Func<TController, GenericResult0Delegate<ContentResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ContentActionAsync(string url, Expression<Func<TController, GenericResult0DelegateAsync<ContentResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ContentAction<TInput1>(string url, Expression<Func<TController, GenericResult1Delegate<ContentResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ContentActionAsync<TInput1>(string url, Expression<Func<TController, GenericResult1DelegateAsync<ContentResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ContentAction<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2Delegate<ContentResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ContentActionAsync<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2DelegateAsync<ContentResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ContentAction<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3Delegate<ContentResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ContentActionAsync<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3DelegateAsync<ContentResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ContentAction<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4Delegate<ContentResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ContentActionAsync<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4DelegateAsync<ContentResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ContentAction<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5Delegate<ContentResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ContentActionAsync<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5DelegateAsync<ContentResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        #endregion


        #region ViewResult Actions

        public ControllerRouteFluent<TController> ViewAction(string url, Expression<Func<TController, GenericResult0Delegate<ViewResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ViewActionAsync(string url, Expression<Func<TController, GenericResult0DelegateAsync<ViewResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ViewAction<TInput1>(string url, Expression<Func<TController, GenericResult1Delegate<ViewResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ViewActionAsync<TInput1>(string url, Expression<Func<TController, GenericResult1DelegateAsync<ViewResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ViewAction<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2Delegate<ViewResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ViewActionAsync<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2DelegateAsync<ViewResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ViewAction<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3Delegate<ViewResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ViewActionAsync<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3DelegateAsync<ViewResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ViewAction<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4Delegate<ViewResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ViewActionAsync<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4DelegateAsync<ViewResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ViewAction<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5Delegate<ViewResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ViewActionAsync<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5DelegateAsync<ViewResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        #endregion


        #region PartialViewResult Actions

        public ControllerRouteFluent<TController> PartialViewAction(string url, Expression<Func<TController, GenericResult0Delegate<PartialViewResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> PartialViewActionAsync(string url, Expression<Func<TController, GenericResult0DelegateAsync<PartialViewResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> PartialViewAction<TInput1>(string url, Expression<Func<TController, GenericResult1Delegate<PartialViewResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> PartialViewActionAsync<TInput1>(string url, Expression<Func<TController, GenericResult1DelegateAsync<PartialViewResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> PartialViewAction<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2Delegate<PartialViewResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> PartialViewActionAsync<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2DelegateAsync<PartialViewResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> PartialViewAction<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3Delegate<PartialViewResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> PartialViewActionAsync<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3DelegateAsync<PartialViewResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> PartialViewAction<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4Delegate<PartialViewResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> PartialViewActionAsync<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4DelegateAsync<PartialViewResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> PartialViewAction<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5Delegate<PartialViewResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> PartialViewActionAsync<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5DelegateAsync<PartialViewResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        #endregion


        #region IActionResult Actions

        public ControllerRouteFluent<TController> ActionAction(string url, Expression<Func<TController, GenericResult0Delegate<IActionResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ActionActionAsync(string url, Expression<Func<TController, GenericResult0DelegateAsync<IActionResult>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ActionAction<TInput1>(string url, Expression<Func<TController, GenericResult1Delegate<IActionResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ActionActionAsync<TInput1>(string url, Expression<Func<TController, GenericResult1DelegateAsync<IActionResult, TInput1>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ActionAction<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2Delegate<IActionResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ActionActionAsync<TInput1, TInput2>(string url, Expression<Func<TController, GenericResult2DelegateAsync<IActionResult, TInput1, TInput2>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ActionAction<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3Delegate<IActionResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ActionActionAsync<TInput1, TInput2, TInput3>(string url, Expression<Func<TController, GenericResult3DelegateAsync<IActionResult, TInput1, TInput2, TInput3>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ActionAction<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4Delegate<IActionResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ActionActionAsync<TInput1, TInput2, TInput3, TInput4>(string url, Expression<Func<TController, GenericResult4DelegateAsync<IActionResult, TInput1, TInput2, TInput3, TInput4>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        public ControllerRouteFluent<TController> ActionAction<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5Delegate<IActionResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);
            
        public ControllerRouteFluent<TController> ActionActionAsync<TInput1, TInput2, TInput3, TInput4, TInput5>(string url, Expression<Func<TController, GenericResult5DelegateAsync<IActionResult, TInput1, TInput2, TInput3, TInput4, TInput5>>> actionSelector)
            => this.AddRouteLambda(url, actionSelector);



        #endregion


    }
}