fn sig_from_bounds<'tcx>(
    cx: &LateContext<'tcx>,
    ty: Ty<'tcx>,
    predicates: impl IntoIterator<Item = Clause<'tcx>>,
    predicates_id: Option<DefId>
) -> Option<ExprFnSig<'tcx>>