Stubify<T>: T extends Stubable    ? Stub<T>    : T extends Map<infer  K, infer  V>        ? Map<Stubify<K>, Stubify<V>>        : T extends Set<infer  V>            ? Set<Stubify<V>>            : T extends (infer  V)[]                ? Stubify<V>[]                : T extends ReadonlyArray<infer  V>                    ? ReadonlyArray<Stubify<V>>                    : T extends {                             [
key: 
string | number]
: unknown;                         }                        ? {                            [K in keyof T]: Stubify<T[K]>                        }                        : T