( scratchpad ) TUPLE: t1 s1 s2 ; TUPLE: t2 < t1 ; TUPLE: t3 < t2 ; PREDICATE: p1 < t1 s2>> ; GENERIC: foo ( class -- print ) M: t1 foo drop "t1" ; M: t2 foo drop "t2" ; M: t3 foo drop "t3" ; M: p1 foo drop "p1" ; ( scratchpad ) t3 new t >>s2 --- Data stack: T{ t3 f f t } ( scratchpad ) foo --- Data stack: "p1" ( scratchpad )