/// <summary>
        /// Add a health check for multiple uri's.
        /// </summary>
        /// <param name="builder">The <see cref="IHealthChecksBuilder"/>.</param>
        /// <param name="uris">The collection of uri's to be checked.</param>
        /// <param name="httpMethod">The http method to be used.</param>
        /// <param name="name">The health check name. Optional. If <c>null</c> the type name 'uri-group' will be used for the name.</param>
        /// <param name="failureStatus">
        /// The <see cref="HealthStatus"/> that should be reported when the health check fails. Optional. If <c>null</c> then
        /// the default status of <see cref="HealthStatus.Unhealthy"/> will be reported.
        /// </param>
        /// <param name="tags">A list of tags that can be used to filter sets of health checks. Optional.</param>
        /// <param name="timeout">An optional <see cref="TimeSpan"/> representing the timeout of the check.</param>
        /// <param name="configureClient">An optional setup action to configure the Uris HealthCheck http client</param>
        /// <param name="configureHttpMessageHandler">An optional setup action to configure the Uris HealthCheck http client message handler</param>
        /// <returns>The specified <paramref name="builder"/>.</returns>
        public static IHealthChecksBuilder AddUrlGroup(
            this IHealthChecksBuilder builder,
            IEnumerable <Uri> uris,
            HttpMethod httpMethod,
            string?name = default,
            HealthStatus?failureStatus = default,
            IEnumerable <string>?tags  = default,
            TimeSpan?timeout           = default,
            Action <IServiceProvider, HttpClient>?configureClient = null,
            Func <IServiceProvider, HttpMessageHandler>?configureHttpMessageHandler = null)
        {
            var registrationName = name ?? NAME;

            ConfigureUrisClient(builder, configureClient, configureHttpMessageHandler, registrationName);

            return(builder.Add(new HealthCheckRegistration(
                                   registrationName,
                                   sp =>
            {
                var options = UriHealthCheckOptions
                              .CreateFromUris(uris)
                              .UseHttpMethod(httpMethod);

                return CreateHealthCheck(sp, registrationName, options);
            },
                                   failureStatus,
                                   tags,
                                   timeout)));
        }
        /// <summary>
        /// Add a health check for multiple uri's.
        /// </summary>
        /// <param name="builder">The <see cref="IHealthChecksBuilder"/>.</param>
        /// <param name="uris">The collection of uri's to be checked.</param>
        /// <param name="name">The health check name. Optional. If <c>null</c> the type name 'uri-group' will be used for the name.</param>
        /// <param name="failureStatus">
        /// The <see cref="HealthStatus"/> that should be reported when the health check fails. Optional. If <c>null</c> then
        /// the default status of <see cref="HealthStatus.Unhealthy"/> will be reported.
        /// </param>
        /// <param name="tags">A list of tags that can be used to filter sets of health checks. Optional.</param>
        public static IHealthChecksBuilder AddUrlGroup(this IHealthChecksBuilder builder, IEnumerable <Uri> uris, string name = default, HealthStatus?failureStatus = default, IEnumerable <string> tags = default)
        {
            var options = UriHealthCheckOptions.CreateFromUris(uris);

            return(builder.Add(new HealthCheckRegistration(
                                   name ?? NAME,
                                   sp => new UriHealthCheck(options),
                                   failureStatus,
                                   tags)));
        }
        /// <summary>
        /// Add a health check for multiple uri's.
        /// </summary>
        /// <param name="builder">The <see cref="IHealthChecksBuilder"/>.</param>
        /// <param name="uris">The collection of uri's to be checked.</param>
        /// <param name="name">The health check name. Optional. If <c>null</c> the type name 'uri-group' will be used for the name.</param>
        /// <param name="failureStatus">
        /// The <see cref="HealthStatus"/> that should be reported when the health check fails. Optional. If <c>null</c> then
        /// the default status of <see cref="HealthStatus.Unhealthy"/> will be reported.
        /// </param>
        /// <param name="tags">A list of tags that can be used to filter sets of health checks. Optional.</param>
        public static IHealthChecksBuilder AddUrlGroup(this IHealthChecksBuilder builder, IEnumerable <Uri> uris, string name = default, HealthStatus?failureStatus = default, IEnumerable <string> tags = default)
        {
            builder.Services.AddHttpClient();

            var registrationName = name ?? NAME;

            return(builder.Add(new HealthCheckRegistration(
                                   registrationName,
                                   sp => CreateHealthCheck(sp, registrationName, UriHealthCheckOptions.CreateFromUris(uris)),
                                   failureStatus,
                                   tags)));
        }
        /// <summary>
        /// Add a health check for multiple uri's.
        /// </summary>
        /// <param name="builder">The <see cref="IHealthChecksBuilder"/>.</param>
        /// <param name="uris">The collection of uri's to be checked.</param>
        /// <param name="httpMethod">The http method to be used.</param>
        /// <param name="name">The health check name. Optional. If <c>null</c> the type name 'uri-group' will be used for the name.</param>
        /// <param name="failureStatus">
        /// The <see cref="HealthStatus"/> that should be reported when the health check fails. Optional. If <c>null</c> then
        /// the default status of <see cref="HealthStatus.Unhealthy"/> will be reported.
        /// </param>
        /// <param name="tags">A list of tags that can be used to filter sets of health checks. Optional.</param>
        /// <param name="timeout">An optional System.TimeSpan representing the timeout of the check.</param>
        /// <returns>The <see cref="IHealthChecksBuilder"/>.</returns></param>
        public static IHealthChecksBuilder AddUrlGroup(this IHealthChecksBuilder builder, IEnumerable <Uri> uris, HttpMethod httpMethod, string name = default, HealthStatus?failureStatus = default, IEnumerable <string> tags = default, TimeSpan?timeout = default)
        {
            builder.Services.AddHttpClient();

            var registrationName = name ?? NAME;

            return(builder.Add(new HealthCheckRegistration(
                                   registrationName,
                                   sp =>
            {
                var options = UriHealthCheckOptions
                              .CreateFromUris(uris)
                              .UseHttpMethod(httpMethod);

                return CreateHealthCheck(sp, registrationName, options);
            },
                                   failureStatus,
                                   tags,
                                   timeout)));
        }