type t1 = class static function operator implicit(o: T): t1; begin Assert(2=1); Result := nil; end; end; t2 = class(t1) end; var i: integer; procedure p(r: t1); begin r := new t2; i := 1; end; begin p(new t1); assert(i = 1); end.