var i: integer; type t0 = class static function operator implicit(o: T): t0 := nil; end; procedure p1(o: T); begin i := 1; end; procedure p1(o: t0); begin i := 2; end; begin p1(5); assert(i = 1); p1(new t0); assert(i = 2); p1&(5); assert(i = 1); end.