pub fn elaborate<'tcx, O>(
    tcx: TyCtxt<'tcx>,
    obligations: impl IntoIterator<Item = O>
) -> Elaborator<'tcx, O> 
where O: Elaboratable<'tcx>,