private static void Execute([NotNull] PipelineStartInfo info)
        {
            using (new ProfileSection("Execute pipeline processors"))
            {
                ProfileSection.Argument("info", info);

                try
                {
                    if (info.PipelineController != null)
                    {
                        info.PipelineController.Maximum = ProcessorManager.GetProcessorsCount(info.ProcessorArgs, info._Steps);
                    }

                    bool result = ExecuteSteps(info.ProcessorArgs, info._Steps, info.PipelineController);

                    if (info.PipelineController != null)
                    {
                        info.PipelineController.Finish("Done.", result);
                    }

                    if (result)
                    {
                        info.ProcessorArgs.FireOnCompleted();
                        info.ProcessorArgs.Dispose();
                    }
                }
                catch (Exception ex)
                {
                    Log.Warn(ex, "An error occurred during executing a pipeline");
                    info.ProcessorArgs.Dispose();
                }
            }
        }