director_finalizer MyFoo=@() subclass(Foo(),'__del__',@delete_MyFoo); function delete_MyFoo(self) self.orStatus(2); try Foo.__del__(self); catch end_try_catch endfunction resetStatus(); a = MyFoo(); clear a; if (getStatus() != 3) error endif resetStatus(); a = MyFoo(); launder(a); if (getStatus() != 0) error endif clear a; if (getStatus() != 3) error endif resetStatus(); a = MyFoo().__disown__(); deleteFoo(a); if (getStatus() != 3) error endif resetStatus(); a = MyFoo().__disown__(); deleteFoo(launder(a)); if (getStatus() != 3) error endif resetStatus();