type BoxedValue‹T› = { value: T };
type BoxedArray‹T› = { array: T[] };
type Boxed‹T›> = T extends any[] ? BoxedArray‹T[number]› : BoxedValue‹T›;
type T20 = Boxed‹string›; // BoxedValue‹string›;
type T21 = Boxed‹number[]›; // BoxedArray‹‹number›;
type T22 = Boxed‹string | number[]›; // BoxedValue‹string› | BoxedArray‹number›;