this と super と parent

kz> 3 times:{|| puts@this; };
  >
3
3
3

kz> puts@this;
  > 3 times:{|| puts@local.parent.super; };
  >
LOBBY(0x1D5550D)
LOBBY(0x1D5550D)
LOBBY(0x1D5550D)
LOBBY(0x1D5550D)

kz> pp@local;
  >
#bindings(0xC21495) {
*   super = LOBBY(0x1D5550D);
}

3 times:{|| puts@this; } とすると、this が 3 になる件。
これは {|| puts@this; } を実行しているのが times メソッド内つまり this == 3 のコンテキスト内なので this が 3 になっている。
じゃあ {|| puts@this; } 関数を生成した箇所の this はどうやって取得するかというと local.parent.super で取得できることが判明。まず関数内の local を取り、その外側(parent) の local を取る。this は local の super に入っているので、それを受け取れば良い、と……。ややこしいな。
CodeBlock には this と local の2つの引数が渡されていて、そのうち local.super == this であることは確定しているんだから、this じゃなくて caller を渡せばいいのかも。ちょっと検討してみよう。