code: private void installExtensionDependency(ExtensionDependency extensionDependency, String namespace,
          List<ModifableExtensionPlanNode> parentBranch, Map<String, ExtensionDependency> managedDependencies,
          Set<String> parents) throws InstallException, IncompatibleVersionConstraintException, ResolveException
      {
          if (extensionDependency.isOptional()) {
              installOptionalExtensionDependency(extensionDependency, namespace, parentBranch, managedDependencies,
                  parents);
          } else {
              installMandatoryExtensionDependency(extensionDependency, namespace, parentBranch, managedDependencies,
                  parents);
          }
      }
docs: Install provided extension dependency.
  
  @param extensionDependency the extension dependency to install
  @param namespace the namespace where to install the extension
  @param parentBranch the children of the parent {@link DefaultExtensionPlanNode}
  @param managedDependencies the managed dependencies
  @param parents the parents extensions (which triggered this extension install)
  @throws InstallException error when trying to install provided extension
  @throws ResolveException
  @throws IncompatibleVersionConstraintException