public static <T> List<T> loadServicesFromBeans(@NotNull ExtensionPointName<ServiceBean> epName, @NotNull Class<T> componentClass) {
    final List<T> components = new ArrayList<>();
    for (ServiceBean exportableBean : epName.getExtensionList()) {
      final String serviceClass = exportableBean.serviceInterface;
      if (serviceClass == null) {
        LOG.error("Service interface not specified in " + epName);
        continue;
      }
      try {
        final Class<?> aClass = Class.forName(serviceClass, true, exportableBean.getPluginDescriptor().getPluginClassLoader());
        final Object service = ApplicationManager.getApplication().getService(aClass);
        if (service == null) {
          LOG.error("Can't find service: " + serviceClass);
          continue;
        }
        if (!componentClass.isInstance(service)) {
          LOG.error("Service " + serviceClass + " is registered in " + epName.getName() + " EP, but doesn't implement " + componentClass.getName());
          continue;
        }

        components.add((T)service);
      }
      catch (ClassNotFoundException e) {
        LOG.error(e);
      }
    }
    return components;
  }
public static <T> List<T> loadServicesFromBeans(@NotNull ExtensionPointName<ServiceBean> epName, @NotNull Class<T> componentClass)