docs: private boolean loadPlugin(final String plugin) {
          if (checkPlugin(plugin)) {
              final Features pluginFeatures = pluginTable.get(plugin);
              final Map<String, List<String>> featureSet = pluginFeatures.getAllFeatures();
              for (final Map.Entry<String, List<String>> currentFeature : featureSet.entrySet()) {
                  final String key = currentFeature.getKey();
                  final List<Value> values = currentFeature.getValue().stream()
                          .map(val -> new Value(plugin, val))
                          .collect(Collectors.toList());
                  if (!extensionPoints.contains(key)) {
                      final String msg = "Plug-in " + plugin + " uses an undefined extension point "
                              + key;
                      throw new RuntimeException(msg);
                  }
                  if (featureTable.containsKey(key)) {
                      final List<Value> value = featureTable.get(key);
                      value.addAll(values);
                      featureTable.put(key, value);
                  } else {
                      //Make shallow clone to avoid making modifications directly to list inside the current feature.
                      List<Value> currentFeatureValue = values;
                      featureTable.put(key, currentFeatureValue != null ? new ArrayList<>(currentFeatureValue) : null);
                  }
              }
  
              for (final Value templateName : pluginFeatures.getAllTemplates()) {
                  final String template = new File(pluginFeatures.getPluginDir().toURI().resolve(templateName.value)).getAbsolutePath();
                  final String templatePath = FileUtils.getRelativeUnixPath(ditaDir + File.separator + "dummy",
                          template);
                  templateSet.put(templatePath, templateName);
              }
              loadedPlugin.add(plugin);
              return true;
          } else {
              return false;
          }
      }