def METHOD_NAME(self):
    """
    Loads a component with the given component entry point.
    Precondition: ``ComponentLoader#can_load() == True``.
    :return: The root module.
    """
    component_name = io.basename(self.root_path)
    self.logger.info("Loading component [%s] from [%s]", component_name, self.root_path)
    module_dirs = []
    # search all paths within this directory for modules but exclude all directories starting with "_"
    if self.recurse:
        for dirpath, dirs, _ in os.walk(self.root_path):
            module_dirs.append(dirpath)
            ignore = []
            for d in dirs:
                if d.startswith("_"):
                    self.logger.debug("Removing [%s] from load path.", d)
                    ignore.append(d)
            for d in ignore:
                dirs.remove(d)
    else:
        module_dirs.append(self.root_path)
    # load path is only the root of the package hierarchy
    component_root_path = os.path.abspath(os.path.join(self.root_path, os.pardir))
    self.logger.debug("Adding [%s] to Python load path.", component_root_path)
    # needs to be at the beginning of the system path, otherwise import machinery tries to load application-internal modules
    sys.path.insert(0, component_root_path)
    try:
        root_module = self._load_component(component_name, module_dirs)
        return root_module
    except BaseException:
        msg = f"Could not load component [{component_name}]"
        self.logger.exception(msg)
        raise exceptions.SystemSetupError(msg)