type <'tcx, 'a> = impl : Iterator<Item = PredicateObligation<'tcx>> + 'a + Captures<'tcx>;