type t1 = abstract class public function Clone: t1; abstract; public procedure p; begin end; end; t2 = {sealed} class(t1) end; begin var a := new t2; end.