>>599
type discriminationとは、ユーザプログラムが実行時に型情報を使った処理をすること。
それに対してmulti-methodはあくまで処理系の仕事ね。

>>597-598 のプログラムは、
methodsが(型情報 x ブロック)の組を持っていて
do:ループの中で適切なブロックを選択しているところが肝。

で、1つのメッセージ名に対応するメソッド候補の集合を
管理しているのがMultiMethodDictionary。
MultiMethodDictionaryはデータ構造的に、例えば
key value
+    { (SmallInteger, [:x | ... ]), (Float, [:x | ...]), ... }
-    { (SmallInteger, [:x | ... ]), (Float, [:x | ...]), ... }
action: { (Animal, [:a | ... ]), (Drink, [:d | ...]), ...}

って具合。これが各クラスにあると思っといて。