fn project_ty<'tcx>(
    tcx: TyCtxt<'tcx>,
    ty: Ty<'tcx>,
    elem: PlaceElem<'tcx>
) -> (Ty<'tcx>, Option<VariantIdx>)