fn sig_from_bounds<'tcx>(
    cx: &LateContext<'tcx>,
    ty: Ty<'tcx>,
    predicates: &'tcx [Predicate<'tcx>],
    predicates_id: Option<DefId>
) -> Option<ExprFnSig<'tcx>>