Object factory = factories.get(factoryInterface);
if (factory == null) {
// Dynamically load a factory class declared under META-INF/services
try {
ServiceDeclaration factoryDeclaration = registry.getServiceDiscovery().getServiceDeclaration(factoryInterface.getName());
if (factoryDeclaration != null) {
Class<?> factoryClass = factoryDeclaration.loadClass();
// Default empty constructor
Constructor<?> constructor = factoryClass.getConstructor(ExtensionPointRegistry.class);
factory = constructor.newInstance(registry);