type t1 = class end; procedure p2(a: T); where T:class; begin assert(a = nil); end; procedure p1; where T: t1; begin var a: T; var b: t1; a := b as T; p2&(b); p2&(a); assert(a = nil); end; begin p1&; end.