type list = class function a: list; begin result:=self; assert(result=self); end; function b: list; end; function list.b: list; begin result:=self; assert(result=self); end; begin var lst: list := new list; lst.a; lst.b; end.