public Pipeline([NotNull] PipelineDefinition pipelineDefinition, [NotNull] ProcessorArgs args, [CanBeNull] IPipelineController controller = null, bool isAsync = true)
        {
            Assert.ArgumentNotNull(pipelineDefinition, nameof(pipelineDefinition));
            Assert.ArgumentNotNull(args, nameof(args));

            Controller         = controller;
            PipelineDefinition = pipelineDefinition;
            Title   = pipelineDefinition.Title;
            _Steps  = Step.CreateSteps(PipelineDefinition.Steps, args, controller);
            IsAsync = isAsync;

            // Storing args for restarting pipeline
            ProcessorArgs = args;
        }
        public Pipeline([NotNull] PipelineDefinition pipelineDefinition, [NotNull] ProcessorArgs args, [CanBeNull] IPipelineController controller = null, bool isAsync = true)
        {
            Assert.ArgumentNotNull(pipelineDefinition, "pipelineDefinition");
            Assert.ArgumentNotNull(args, "args");

            this.controller         = controller;
            this.pipelineDefinition = pipelineDefinition;
            this.title   = pipelineDefinition.Title;
            this.steps   = Step.CreateSteps(this.pipelineDefinition.Steps, args, controller);
            this.isAsync = isAsync;

            // Storing args for restarting pipeline
            this.processorArgs = args;
        }