def METHOD_NAME(self, fullname):
    candidate_locations = []
    def _get_package_paths(*root_paths, containing_folder='plugins'):
        for config_dir in orderedSet(map(Path, root_paths), lazy=True):
            with contextlib.suppress(OSError):
                yield from (config_dir / containing_folder).iterdir()
    # Load from yt-dlp config folders
    candidate_locations.extend(_get_package_paths(
        *get_user_config_dirs('yt-dlp'),
        *get_system_config_dirs('yt-dlp'),
        containing_folder='plugins'))
    # Load from yt-dlp-plugins folders
    candidate_locations.extend(_get_package_paths(
        get_executable_path(),
        *get_user_config_dirs(''),
        *get_system_config_dirs(''),
        containing_folder='yt-dlp-plugins'))
    candidate_locations.extend(map(Path, sys.path))  # PYTHONPATH
    with contextlib.suppress(ValueError):  # Added when running __main__.py directly
        candidate_locations.remove(Path(__file__).parent)
    parts = Path(*fullname.split('.'))
    for path in orderedSet(candidate_locations, lazy=True):
        candidate = path / parts
        if candidate.is_dir():
            yield candidate
        elif path.suffix in ('.zip', '.egg', '.whl') and path.is_file():
            if parts in dirs_in_zip(path):
                yield candidate