/// <summary>
        /// Adds Windows Registry configuration provider for <paramref name="sectionPath"/> to <paramref name="builder"/>.
        /// </summary>
        /// <param name="builder">The <see cref="IConfigurationBuilder"/> to add to.</param>
        /// <param name="registryRoot">registry root getter</param>
        /// <param name="sectionPath">section path</param>
        /// <param name="configureSource">Configures the source.</param>
        /// <returns>The <see cref="IConfigurationBuilder"/>.</returns>
        public static IConfigurationBuilder AddRegistrySection(
            this IConfigurationBuilder builder,
            Func <Microsoft.Win32.RegistryKey> registryRoot,
            string sectionPath,
            Action <WinRegistryConfigurationSource> configureSource = null !)
        {
            if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                return(builder);
            }

            var source = new WinRegistryConfigurationSource(registryRoot, sectionPath);

            configureSource?.Invoke(source);

            return(builder.Add(source));
        }
 /// <summary> Creates configuration provider for Windows Registry.
 /// </summary>
 /// <param name="source">The source settings.</param>
 public WinRegistryConfigurationProvider(WinRegistryConfigurationSource source)
 {
     _source = source ?? throw new ArgumentNullException(nameof(source));
 }