// create mod option based on underlying type and attributes of cfgField public static ModOption create(Config.Field cfgField) { ModOption option = null; #if DEBUG // trying to use all creators to check for ambiguity foreach (var c in creators) { var optionTmp = c.create(cfgField); Debug.assert(option == null || optionTmp == null, $"Options.Factory: ambiguity for field '{cfgField.path}' (both {option?.GetType().Name} and {optionTmp?.GetType().Name})"); option ??= optionTmp; } #else foreach (var c in creators) { if ((option = c.create(cfgField)) != null) { break; } } #endif if (option != null) { modifiers.ForEach(m => m.process(option)); } return(option); }