TUPLE: t1 s1 s2 ; TUPLE: t2 < t1 ; PREDICATE: p1 < t1 s2>> ; GENERIC: foo ( class -- print ) M: t1 foo drop "t1" ; M: t2 foo drop "t2" ; M: p1 foo drop "p1" ; ! "t2 new t >>s2" outputs "p1" ! dispatch order of generic word foo: { t1 t2 p1 }