!--a11y-->

C1 と C2 という 2 つのクラスがあるとします。

クラス C1 にはイベント E1 が含まれており、それがメソッドM1 によってトリガされます。クラス C2 にはメソッド M2 が含まれており、そのメソッドによってクラス C1 のイベント E1 が処理されます。

このプログラムでは、クラス C1 のインスタンスを 1 つ、クラス C2 のインスタンスを 2 つ登録します。参照変数 R1 、H1 、H2 の値は、これらのインスタンスを指します。
SET HANDLER 命令によって、ハンドラメソッドが登録されているイベントごとにハンドラテーブルが作成されます。このテーブルはユーザからは不可視です。
ハンドラテーブルには、ハンドラメソッドの名称と登録されたインスタンスへの参照が含まれています。テーブルのエントリは、SET HANDLER 命令によって動的に管理されます。ハンドラテーブル内のインスタンスへの参照は、参照変数内の参照に似ています。つまり、この参照はインスタンスの使用と見なされるため、その存続期間に直接影響します。これを上の図で説明すると、H1 と H2 が初期化されても、インスタンス C2<1> と C2<2> の登録がハンドラテーブルから削除されない限り、これらのインスタンスはガーベッジコレクションで削除されません。
静的イベントについては、インスタンスに依存しないハンドラテーブルが関連クラスに対して自動的に作成されます。
イベントがトリガされると、対応するイベントテーブルが参照され、適切なインスタンス内 ( または静的ハンドラメソッドの対応するクラス内) のメソッドが実行されます。