docs: private List<AddOnModel> loadAddOns() {
          debug("searching for addons in: " + getMain().getFileSystemManager().getLibLocation());
          PluginManager pluginManager = new DefaultPluginManager(getMain().getFileSystemManager().getLibLocation(),
                  new ArrayList<>(aspectOrAffectedSet));
          // load the plugins
          debug("loading plugins");
          pluginManager.loadPlugins();
          debug("loaded: " + pluginManager.getPlugins().toString());
  
          // start (active/resolved) the plugins
          try {
              debug("starting plugins");
              pluginManager.startPlugins();
          } catch (Exception | NoClassDefFoundError e) {
              error("Error while trying to start the PF4J-Plugins", e);
          }
          try {
              debug("retrieving addons from the plugins");
              List<AddOnModel> addOns = pluginManager.getExtensions(AddOnModel.class);
              debug("retrieved: " + addOns.toString());
              KeyManager keyManager = new KeyManager();
              addOns.stream()
                      .filter(addOn -> addOn.getClass().getClassLoader() instanceof IzouPluginClassLoader)
                      .forEach(addOn -> {
                          IzouPluginClassLoader izouPluginClassLoader = (IzouPluginClassLoader) addOn.getClass()
                                  .getClassLoader();
                          PluginWrapper plugin = pluginManager.getPlugin(izouPluginClassLoader.getPluginDescriptor()
                                  .getPluginId());
                          keyManager.manageAddOnKey(plugin.getDescriptor());
                          pluginWrappers.put(addOn, plugin);
                          addOn.setPlugin(plugin);
                      });
              keyManager.saveAddOnKeys();
              return addOns;
          } catch (Exception e) {
              log.fatal("Error while trying to start the AddOns", e);
              return new ArrayList<>();
          }
      }