fn assemble_candidates_from_predicates<'cx, 'tcx>(
selcx: &mut SelectionContext<'cx, 'tcx>,
obligation: &Obligation<'tcx, AliasTy<'tcx>>,
candidate_set: &mut ProjectionCandidateSet<'tcx>,
ctor: fn(_: PolyProjectionPredicate<'tcx>) -> ProjectionCandidate<'tcx>,
env_predicates: impl Iterator<Item = Predicate<'tcx>>,
potentially_unnormalized_candidates: bool
)