pub fn elaborate_obligations<'tcx>(
    tcx: TyCtxt<'tcx>,
    obligations: Vec<PredicateObligation<'tcx>>
) -> Elaborator<'tcx>