var i: integer; type t1 = class; t0 = class public function f1: t1 := nil; end; t1 = class(t0) end; procedure p1(q: t1); begin Inc(i); end; procedure p1(q: t0) := p1(q.f1&); begin p1(new t0); assert(i = 1); end.