pub fn instantiate_canonical_state<D, I, T: TypeFoldable<I>>(
    delegate: &D,
    span: D::Span,
    param_env: I::ParamEnv,
    orig_values: &mut Vec<I::GenericArg>,
    state: CanonicalState<I, T>,
) -> T
where D: SolverDelegate<Interner = I>, I: Interner,