@SuppressWarnings("unchecked")
	public <T> ConfigComponentFactory<T> getFactory(@Nonnull ConfigContainer container, @Nonnull ConfigValue<T> value) {
		// Get factory for config value ID.
		String id = container.getGroupAndId() + ConfigGroups.PACKAGE_SPLIT + value.getId();
		ConfigComponentFactory<?> factory = keyToConfigurator.get(id);
		if (factory != null)
			return (ConfigComponentFactory<T>) factory;

		// Get factory for config value type.
		Class<T> type = value.getType();
		factory = typeToConfigurator.get(type);
		if (factory != null)
			return (ConfigComponentFactory<T>) factory;

		// Check for common generic types.
		if (type.isEnum())
			factory = typeToConfigurator.get(Enum.class);
		if (factory != null)
			return (ConfigComponentFactory<T>) factory;

		// Fallback factory.
		return (ConfigComponentFactory<T>) DEFAULT_FACTORY;
	}
@param value
		Value to get factory for.
@param <T>
		Value type.

@return Component factory for value.
recaf-ui/src/main/java/software/coley/recaf/services/config/ConfigComponentManager.java