/// <summary>
        ///     Initializes a new instance of the <see cref="JsonConfigSettingsProvider" /> class.
        /// </summary>
        /// <param name="configuration">The configuration to use</param>
        public JsonConfigSettingsProvider(Config configuration = null)
        {
            if (configuration == null)
            {
                Configuration = new Config();
            }
            else
            {
                Configuration = configuration;
            }

            UserSettingsFilename        = Configuration.UserSettingsFilename;
            ConfigurationOverrideEnvVar = Configuration.ConfigurationOverrideEnvVar;

            if (!string.IsNullOrWhiteSpace(ConfigurationOverrideEnvVar))
            {
                ConfigurationOverride = Environment.GetEnvironmentVariable(ConfigurationOverrideEnvVar);
            }

            if (Configuration.ApplicationSettingsFolder == null)
            {
                Configuration.ApplicationSettingsFolder = FileUtils.ApplicationPath();
            }

            ApplicationSettingsFilename = Path.Combine(Configuration.ApplicationSettingsFolder,
                                                       Configuration.ApplicationSettingsFilename);
            ApplicationSettingsSection = Configuration.ApplicationSettingsSection;
        }