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