public static <S extends Enum<S> & Setting<V>, V extends Enum<V> & Setting.State> SettingMapFactory<S, V> create(Class<S> settingsEnum, Class<V> statesEnum) {
        Objects.requireNonNull(settingsEnum, "settingsEnum");
        Objects.requireNonNull(statesEnum, "statesEnum");
        return create(settingsEnum.getEnumConstants(), statesEnum.getEnumConstants());
    }
Creates a new {@link SettingMapFactory} for the given {@link Setting} and {@link Setting.State} enums.

<p>Factories should ideally be cached (stored in a static field) in the
setting enum and reused.</p>

@param settingsEnum the setting enum
@param statesEnum the states enum
@param <S> the class type
@return a new factory
helper/src/main/java/me/lucko/helper/setting/SettingMapFactory.java