code: @Override
      public void start() {
          logger.info("[extensions] Loading the extensions");
          extensions = applicationContext.getBeansOfType(Extension.class).values();
          Collection<? extends ExtensionFeature> extensionFeatures = applicationContext.getBeansOfType(ExtensionFeature.class).values();
          logger.info("[extensions] Number of loaded extension features: {}", extensionFeatures.size());
          logger.info("[extensions] Number of loaded extensions: {}", extensions.size());
          logger.info("[extensions] Extension features:");
          for (ExtensionFeature feature : extensionFeatures) {
              logger.info("[extensions] * {} [{}]", feature.getName(), feature.getId());
          }
          // Detects cycles
          getExtensionList();
      }
docs: Startup: loads the extensions &amp; features from the application context.
  <p>
  This cannot be done at construction time because of dependency cycle between
  some extensions that need access to the extension manager.