なんかモチベーションが上がってきたので、久しぶりにOnionのソースコードをいじっている。まず真っ先に手をつけたのは自動ダウンキャストの削除。自動ダウンキャストというのは、その名の通り、自動的にダウンキャストを挿入する機能で、例えば、Java風のコードで書くと
Object o = "FOO"; String s = o;
みたいなのに対して、ダウンキャストを自動挿入してしまう機能だ。この機能、代入演算子と、変数宣言時の初期化子に対して実装するのは簡単なんだが、メソッド呼び出しに対して拡張しようとすると途端に適切な仕様を考える&実装するのがやっかいになる機能で、学類(他大学で言う学部相当)4年のときは、この機能をどうしようか結構頭をひねっていたものだった(メソッドオーバーローディングが無ければそれほどやっかいな事にはならんのだけど)。
で、色々考えた結果、この機能はやっかいさに比べて得られるものが少ないし、Onionにgenerics導入するのに当たって障害になるのはほぼ間違いないと思うので削除することにした。