public static List<Settings.EffectiveSetting> CalculateThisFile(ConfigMasterParsed configMaster, string configFilename)
        {
            var Result = new List<Settings.EffectiveSetting>();

            var configFileInfo = configMaster.GlobalRecipe.ListOfRecipeConfigFiles.FirstOrDefault(q => q.ConfigFilePath == configFilename);
            if (configFileInfo != null)
            {
                var CurrentEnvironment = configFileInfo.Environment;
                var CurrentServer = configFileInfo.ComputerName;
                var CurrentComponent = configFileInfo.Component;

                var ApplicableSettings = configMaster.GlobalSettings.ListOfSettings.Where(q => q.ListOfApplicableComponents.Contains(CurrentComponent));

                foreach (var sett in ApplicableSettings)
                {
                    var newSetting = new Settings.EffectiveSetting()
                    {
                        Key = sett.Key,
                        Name = sett.Name,
                        DesiredValue = sett.GlobalDefaultValue
                    };

                    // See if we should override the value
                    var ComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment == null && y.Server == null);
                    if (ComponentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ComponentOverriders?.OverrideValue;
                    }


                    var EnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server == null);
                    if (EnvironmentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = EnvironmentOverriders?.OverrideValue;
                    }


                    var ServerOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment == null && y.Server?.ToLower() == CurrentServer?.ToLower());
                    if (ServerOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ServerOverriders?.OverrideValue;
                    }


                    // More specific: Component and Environment
                    var ComponentEnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server == null);
                    if (ComponentEnvironmentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ComponentEnvironmentOverriders?.OverrideValue;
                    }


                    var ServerEnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server?.ToLower() == CurrentServer?.ToLower());
                    if (ServerEnvironmentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ServerEnvironmentOverriders?.OverrideValue;
                    }


                    var ServerComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment == null && y.Server?.ToLower() == CurrentServer?.ToLower());
                    if (ServerComponentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ServerComponentOverriders?.OverrideValue;
                    }


                    // Most Specific:  Component and Environment and Server
                    var EnvironmentServerComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server?.ToLower() == CurrentServer?.ToLower());
                    if (EnvironmentServerComponentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = EnvironmentServerComponentOverriders?.OverrideValue;
                    }


                    Result.Add(newSetting);
                }
            }

            return Result;
        }
        public static List <Settings.EffectiveSetting> CalculateThisFile(ConfigMasterParsed configMaster, string configFilename)
        {
            var Result = new List <Settings.EffectiveSetting>();

            var configFileInfo = configMaster.GlobalRecipe.ListOfRecipeConfigFiles.FirstOrDefault(q => q.ConfigFilePath == configFilename);

            if (configFileInfo != null)
            {
                var CurrentEnvironment = configFileInfo.Environment;
                var CurrentServer      = configFileInfo.ComputerName;
                var CurrentComponent   = configFileInfo.Component;

                var ApplicableSettings = configMaster.GlobalSettings.ListOfSettings.Where(q => q.ListOfApplicableComponents.Contains(CurrentComponent));

                foreach (var sett in ApplicableSettings)
                {
                    var newSetting = new Settings.EffectiveSetting()
                    {
                        Key          = sett.Key,
                        Name         = sett.Name,
                        DesiredValue = sett.GlobalDefaultValue
                    };

                    // See if we should override the value
                    var ComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment == null && y.Server == null);
                    if (ComponentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ComponentOverriders?.OverrideValue;
                    }


                    var EnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server == null);
                    if (EnvironmentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = EnvironmentOverriders?.OverrideValue;
                    }


                    var ServerOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment == null && y.Server?.ToLower() == CurrentServer?.ToLower());
                    if (ServerOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ServerOverriders?.OverrideValue;
                    }


                    // More specific: Component and Environment
                    var ComponentEnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server == null);
                    if (ComponentEnvironmentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ComponentEnvironmentOverriders?.OverrideValue;
                    }


                    var ServerEnvironmentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component == null && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server?.ToLower() == CurrentServer?.ToLower());
                    if (ServerEnvironmentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ServerEnvironmentOverriders?.OverrideValue;
                    }


                    var ServerComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment == null && y.Server?.ToLower() == CurrentServer?.ToLower());
                    if (ServerComponentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = ServerComponentOverriders?.OverrideValue;
                    }


                    // Most Specific:  Component and Environment and Server
                    var EnvironmentServerComponentOverriders = sett.ListOfOverrides.FirstOrDefault(y => y.Component?.ToLower() == CurrentComponent?.ToLower() && y.Environment?.ToLower() == CurrentEnvironment?.ToLower() && y.Server?.ToLower() == CurrentServer?.ToLower());
                    if (EnvironmentServerComponentOverriders?.OverrideValue != null)
                    {
                        newSetting.DesiredValue = EnvironmentServerComponentOverriders?.OverrideValue;
                    }


                    Result.Add(newSetting);
                }
            }

            return(Result);
        }