pub fn fold_list<'tcx, F, T>(
    list: &'tcx List<T>,
    folder: &mut F,
    intern: impl FnOnce(TyCtxt<'tcx>, &[T]) -> &'tcx List<T>
) -> Result<&'tcx List<T>, F::Error> where
    F: FallibleTypeFolder<'tcx>,
    T: TypeFoldable<'tcx> + PartialEq + Copy