public static T AssertConfigValueIsPresent <T>(
            this IConfigProvider provider,
            string key,
            T valueIfNotPresent = default(T))
        {
            T val = provider.GetPropertyValue <T>(key);

            if (EqualityComparer <T> .Default.Equals(val, default(T)))
            {
                if (valueIfNotPresent.Equals(default(T)))
                {
                    throw new ArgumentNullException("Config value is not present : " + key);
                }
                else
                {
                    val = valueIfNotPresent;
                }
            }

            return(val);
        }