>>324-334 が(最初の方では静的のみだったのに)
動的に値チェックする方向になってるが、重大な問題があるのでは?

ある場所でオブジェクトに特定の条件を課す(コード上はキャスト。以降値チェックがされるようになる)。
これはオブジェクトになんらかの属性を追加するってことだな。
ってことは、条件を課すこと自体が、オブジェクトを勝手にいじって変更してるって事だ。
条件を課したコードと何ら関係ないところで、条件外の内容に変更できなくなってしまう。

その属性がある種の型情報である以上、そのオブジェクトが生まれてから消えるまで
勝手に途中で変わることなく一貫してないとまずいのではないか。

条件を課したコードのその字句的スコープの中のみでチェックするのなら、
属性は要らないかも知れないが、それでいいのか?