fn canonicalize<I: Interner, T>(
    infer: &mut InferenceTable<I>,
    interner: I,
    value: T
) -> (Canonical<T>, Vec<GenericArg<I>>)
where T: TypeFoldable<I> + HasInterner<Interner = I>,