public static void UseConsoleProfile <T>(this IPipeConfigurator <T> configurator, long trivialThreshold = 0)
            where T : class, PipeContext
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            var pipeBuilderConfigurator = new ProfilePipeSpecification <T>(ConsoleProfileWriter, trivialThreshold);

            configurator.AddPipeSpecification(pipeBuilderConfigurator);
        }
        public static void UseProfile <T>(this IPipeConfigurator <T> configurator, long trivialThreshold, ReportProfileData <T> reportProfileData)
            where T : class, PipeContext
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }
            if (reportProfileData == null)
            {
                throw new ArgumentNullException(nameof(reportProfileData));
            }

            var specification = new ProfilePipeSpecification <T>(reportProfileData, trivialThreshold);

            configurator.AddPipeSpecification(specification);
        }