MODULE Test; TYPE Object = RECORD mth : PROCEDURE; END; VAR p : PROCEDURE; o, a : Object; PROCEDURE X; END X; PROCEDURE Z(VAR g : Object); BEGIN g.mth; END Z; BEGIN p := X; ASSERT(p # NIL); o.mth := X; ASSERT(o.mth # NIL); a := o; ASSERT(a.mth # NIL); Z(a); END Test.