type Fixer = class where TFixer: Fixer; procedure p1; begin var a: TFixer; assert(a = nil); var o := self as object; end; end; DerFixer = class(Fixer) end; begin var obj := new DerFixer(); obj.p1; end.