// 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);
            }