public virtual Config WithFallback(Config fallback)
{
if (fallback == this)
throw new ArgumentException("Config can not have itself as fallback", "fallback");
Config clone = Copy();
Config current = clone;
while (current.Fallback != null)
{
current = current.Fallback;
}
current.Fallback = fallback;
return clone;
}