lue is an iterator of candidates.
:param information: A mapping of requirement information for each package.
    Each value is an iterator of *requirement information*.
:param backtrack_causes: A sequence of *requirement information* that are
    the requirements causing the resolver to most recently
    backtrack.

A *requirement information* instance is a named tuple with two members:

* ``requirement`` specifies a requirement contributing to the current
  list of candidates.
* ``parent`` specifies the candidate that provides (is depended on for)
  the requirement, or ``None`` to indicate a root requirement.

Must return a non-empty subset of `identifiers`, with the default
implementation being to return `identifiers` unchanged. Those `identifiers`
will then be passed to the sort key `get_preference` to pick the most
prefered requirement to attempt to pin, unless `narrow_requirement_selection`
returns only 1 requirement, in which case that will be used without
calling the sort key `get_preference`.

This method is designed to be used by the provider to optimize the
dependency resolution, e.g. if a check cost is O(m) and it can be done
against all identifiers at once then filtering the requirement selection
here will cost O(m) but making it part of the sort key in `get_preference`
will cost O(m*n), where n is the number of `identifiers`.

Returns:
    Iterable[KT]: A non-empty subset of `identifiers`.
r