def METHOD_NAME(cls, project):
    """Method called to retrieve all the versions (that can be found)
    of the projects provided, project that relies on the backend of
    this plugin.
    :arg Project project: a :class:`anitya.db.models.Project` object whose backend
        corresponds to the current plugin.
    :return: a list of all the possible releases found
    :return type: list
    :raise AnityaPluginException: a
        :class:`anitya.lib.exceptions.AnityaPluginException` exception
        when the versions cannot be retrieved correctly
    """
    url = cls.get_version_url(project)
    last_change = project.get_time_last_created_version()
    try:
        req = cls.call_url(url, last_change=last_change)
    except Exception as err:  # pragma: no cover
        raise AnityaPluginException(f"Could not contact {url}") from err
    # Not modified
    if req.status_code == 304:
        return []
    try:
        data = req.json()
    except Exception as err:  # pragma: no cover
        raise AnityaPluginException(f"No JSON returned by {url}") from err
    # Filter yanked versions
    unyanked_versions = []
    # Just return empty list if "releases" key is missing in json
    if "releases" not in data:
        return []
    for version in data["releases"].keys():
        if not data["releases"][version] == []:
            if "yanked" in data["releases"][version][0]:
                if data["releases"][version][0]["yanked"]:
                    continue
        # Old releases doesn't contain metadata
        unyanked_versions.append(version)
    # Filter retrieved versions
    filtered_versions = cls.filter_versions(
        unyanked_versions,
        project.version_filter,
    )
    return filtered_versions