var i: integer; type TRec = record end; t0 = class end; t2 = class end; t1 = class static function operator implicit(a: t0>): t1; where T: record; begin i := 1; end; static function operator implicit(a: t2>>): t1; where T: record; begin i := 2; end; end; begin var a: t0>; var a2: t2>>; var k: t1 := a; assert(i = 1); k := a2; assert(i = 2); end.