docs: public List<Extension> getExtensions(AddOn addOn) {
          AddOnClassLoader addOnClassLoader = this.addOnLoaders.get(addOn.getId());
          if (addOnClassLoader == null) {
              return Collections.emptyList();
          }
  
          List<Extension> extensions = new ArrayList<>();
          extensions.addAll(loadAddOnExtensions(addOn, addOn.getExtensions(), addOnClassLoader));
  
          if (addOn.hasExtensionsWithDeps()) {
              AddOn.AddOnRunRequirements reqs = addOn.calculateRunRequirements(aoc.getInstalledAddOns());
              for (ExtensionRunRequirements extReqs : reqs.getExtensionRequirements()) {
                  if (extReqs.isRunnable()) {
                      List<AddOnClassLoader> dependencies = new ArrayList<>(extReqs.getDependencies().size());
                      for (AddOn addOnDep : extReqs.getDependencies()) {
                          dependencies.add(addOnLoaders.get(addOnDep.getId()));
                      }
                      AddOnClassLoader extAddOnClassLoader = new AddOnClassLoader(
                              addOnClassLoader,
                              dependencies,
                              addOn.getExtensionAddOnClassnames(extReqs.getClassname()));
                      Extension ext = loadAddOnExtension(addOn, extReqs.getClassname(), extAddOnClassLoader);
                      if (ext != null) {
                          extensions.add(ext);
                      }
                  } else if (logger.isDebugEnabled()) {
                      logger.debug("Can't run extension '" + extReqs.getClassname() + "' of add-on '" + addOn.getName()
                              + "' because of missing requirements: " + AddOnRunIssuesUtils.getRunningIssues(extReqs));
                  }
              }
          }
          return extensions;
      }