docs: public synchronized <T> T load(final PluggableService<T> service, final String providerName) throws
          ProviderLoaderException {
          if (!(service instanceof ScriptPluginProviderLoadable)) {
              return null;
          }
          ScriptPluginProviderLoadable<T> loader =(ScriptPluginProviderLoadable<T>) service;
          final ProviderIdent ident = new ProviderIdent(service.getName(), providerName);
  
          if (null == pluginProviderDefs.get(ident)) {
              //look for plugin def
              final PluginMeta pluginMeta;
              try {
                  pluginMeta = getPluginMeta();
              } catch (IOException e) {
                  throw new ProviderLoaderException(e, service.getName(), providerName);
              }
              if (null == pluginMeta) {
                  throw new ProviderLoaderException("Unable to load plugin metadata for file: " + file, service.getName(),
                      providerName);
              }
              for (final ProviderDef pluginDef : pluginMeta.getPluginDefs()) {
                  if (matchesProvider(ident, pluginDef)) {
                      final ScriptPluginProvider provider;
                      try {
                          provider = getPlugin(pluginMeta, file, pluginDef, ident);
                      } catch (PluginException e) {
                          throw new ProviderLoaderException(e, service.getName(), providerName);
                      }
                      pluginProviderDefs.put(ident, provider);
                      break;
                  }
              }
          }
          final ScriptPluginProvider scriptPluginProvider = pluginProviderDefs.get(ident);
  
          try {
              getResourceLoader().listResources();
          } catch(IOException iex) {
              throw new ProviderLoaderException(iex,service.getName(),providerName);
          }
          catch (PluginException e) {
              throw new ProviderLoaderException(e, service.getName(), providerName);
          }
          if (null != scriptPluginProvider) {
              try {
                  return loader.createScriptProviderInstance(scriptPluginProvider);
              } catch (PluginException e) {
                  throw new ProviderLoaderException(e, service.getName(), providerName);
              }
          }
          return null;
      }