type Pair = class _a: T1; _b: T2; procedure Deconstruct(var a: T1; var b: T2); begin a := _a; b := _b; end; end; begin var p := new Pair; p._a := 1; p._b := 'asd'; if p is Pair(integer(var a), string(var b)) then Assert((a = 1) and (b = 'asd')) else Assert(false); end.