private void processImplementations(
     BeanDefinitionRegistry registry, PluginRegistry pluginRegistry) {
   List<Class> extensionPoints = pluginRegistry.getExtensionPoints();
   for (Class extensionPoint : extensionPoints) {
     List<Class> implementations = pluginRegistry.getImplementations(extensionPoint);
     LOG.debug(
         String.format(
             "Found %d implementations for %s extension point: [%s]",
             implementations.size(),
             extensionPoint.getCanonicalName(),
             commaSeparated(implementations.stream().map(Class::getCanonicalName))));
     for (Class implementation : implementations) {
       processImplementation(registry, implementation);
     }
   }
 }
  private void processResources(PluginRegistry pluginRegistry) {
    List<String> pluginNames = pluginRegistry.getPluginNames();
    for (String pluginName : pluginNames) {
      List<Path> pluginResources = pluginRegistry.getResources(pluginName);
      LOG.debug(
          String.format(
              "Found %d resource files for plugin %s: [%s]",
              pluginResources.size(),
              pluginName,
              commaSeparated(pluginResources.stream().map(Path::toString))));

      Optional<ClassLoader> pluginClassLoader = pluginRegistry.getClassLoader(pluginName);
      if (pluginClassLoader.isPresent()) {
        for (Path pluginResource : pluginResources) {
          beanClassLoader.addPathClassLoader(pluginResource, pluginClassLoader.get());
        }
      }
    }
  }