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