/// <summary>
    ///     Uses the diagnostic logging.
    /// </summary>
    /// <param name="builder">The builder.</param>
    /// <param name="action">The action.</param>
    /// <returns>LaunchPadFunctionStartup.</returns>
    public static LaunchPadFunctionStartup UseDiagnosticLogging(
        this LaunchPadFunctionStartup builder,
        Action<ILoggingBuilder> action
    )
    {
        if (builder == null)
        {
            throw new ArgumentNullException(nameof(builder));
        }

        if (action == null)
        {
            throw new ArgumentNullException(nameof(action));
        }

        builder.UseDiagnosticLogger(
            new ServiceCollection()
               .AddLogging(action)
               .BuildServiceProvider()
               .GetRequiredService<ILoggerFactory>()
               .CreateLogger("DiagnosticLogger")
        );

        return builder;
    }
    // /// <summary>
    // /// Use the given dependency context for resolving assemblies
    // /// </summary>
    // /// <param name="dependencyContext"></param>
    // /// <returns></returns>
    // public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> ForDependencyContext(DependencyContext dependencyContext)
    //     => builder => new ConventionContextBuilder(new Dictionary<object, object?>()).UseDependencyContext(dependencyContext);
    //
    // /// <summary>
    // /// Use the given dependency context for resolving assemblies
    // /// </summary>
    // /// <param name="dependencyContext"></param>
    // /// <returns></returns>
    // public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> For(DependencyContext dependencyContext) => ForDependencyContext(dependencyContext);

    // /// <summary>
    // /// Use the given dependency context for resolving assemblies
    // /// </summary>
    // /// <param name="dependencyContext"></param>
    // /// <returns></returns>
    // public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> ForDependencyContext(DependencyContext dependencyContext)
    //     => builder => new ConventionContextBuilder(new Dictionary<object, object?>()).UseDependencyContext(dependencyContext);
    //
    // /// <summary>
    // /// Use the given dependency context for resolving assemblies
    // /// </summary>
    // /// <param name="dependencyContext"></param>
    // /// <returns></returns>
    // public static Func<LaunchPadFunctionStartup, ConventionContextBuilder> For(DependencyContext dependencyContext) => ForDependencyContext(dependencyContext);

    /// <summary>
    ///     Uses the assembly candidate finder.
    /// </summary>
    /// <param name="builder">The builder.</param>
    /// <param name="logger">The assembly candidate finder.</param>
    /// <returns>IConventionHostBuilder.</returns>
    public static LaunchPadFunctionStartup UseDiagnosticLogger(
        this LaunchPadFunctionStartup builder,
        ILogger logger
    )
    {
        if (builder == null)
        {
            throw new ArgumentNullException(nameof(builder));
        }

        if (logger == null)
        {
            throw new ArgumentNullException(nameof(logger));
        }

        builder._builder.Set(logger);
        return builder;
    }