public IPipeElement <QueuePipeContext, string, TReturn> StartWithQueueMessage <TReturn, TStepProvider>(
            string queueMessage)
        {
            var context = new QueuePipeContext(_serviceProvider, queueMessage);

            var provider = _serviceProvider.GetRequiredService <TStepProvider>();

            return(StartElement <QueuePipeContext, string, TReturn> .Create(context, queueMessage, provider));
        }
        public IPipeElement <HttpPipeContext, HttpRequest, TReturn> StartWithHttpRequest <TReturn, TStepProvider>(
            HttpRequest httpRequest)
        {
            var context = new HttpPipeContext(_serviceProvider, httpRequest);

            var provider = _serviceProvider.GetRequiredService <TStepProvider>();

            return(StartElement <HttpPipeContext, HttpRequest, TReturn> .Create(context, httpRequest, provider));
        }
        public IPipeElement <PipeContext, TInput, TReturn> StartWithActivity <TInput, TReturn, TStepProvider>(
            TInput input)
        {
            var context = new PipeContext(_serviceProvider);

            var provider = _serviceProvider.GetRequiredService <TStepProvider>();

            return(StartElement <PipeContext, TInput, TReturn> .Create(context, input, provider));
        }
        public IPipeElement <TimerPipeContext, TimerInfo, TReturn> StartWithTimer <TReturn, TStepProvider>(
            TimerInfo timer)
        {
            var context = new TimerPipeContext(_serviceProvider, timer);

            var provider = _serviceProvider.GetRequiredService <TStepProvider>();

            return(StartElement <TimerPipeContext, TimerInfo, TReturn> .Create(context, timer, provider));
        }