def METHOD_NAME(environments, with_progress=False):
    candidates = []
    config = ProjectConfig.get_instance()
    config.validate(environments)
    def _add_candidate(data):
        new_candidate = OutdatedCandidate(
            data["pm"], data["pkg"], data["spec"], data["env"]
        )
        for candidate in candidates:
            if candidate == new_candidate:
                candidate.envs.append(data["env"])
                return
        candidates.append(new_candidate)
    # platforms
    for item in find_platform_candidates(config, environments):
        _add_candidate(item)
        # platform package dependencies
        for dep_item in find_platform_dependency_candidates(item["env"]):
            _add_candidate(dep_item)
    # libraries
    for item in find_library_candidates(config, environments):
        _add_candidate(item)
    result = []
    if not with_progress:
        for candidate in candidates:
            if candidate.is_outdated():
                result.append(candidate)
        return result
    with click.progressbar(candidates, label="Checking") as pb:
        for candidate in pb:
            if candidate.is_outdated():
                result.append(candidate)
    return result