pub fn predicate_obligations<'a, 'tcx>(
    infcx: &InferCtxt<'a, 'tcx>,
    param_env: ParamEnv<'tcx>,
    body_id: HirId,
    predicate: Predicate<'tcx>,
    span: Span
) -> Vec<PredicateObligation<'tcx>>