SymbolとString (2)

結局どうしたいのかが良くわからないが、以下のようにすれば良いのでは?
(1) 同じ内容のSymbolとStringをHashのキーとして使用した場合だけ同一のものとして扱いたい場合
今までのHashクラスはそのように改修して、SymbolとStringを完全に別のものとして扱う、Hashクラスを追加する。メソッドの引数として受け取るときに生成されるHashだけは、新しく追加したHashクラスを使用する。
(2) 同じ内容のSymbolとStringを、どこからみても同一のものとして扱いたい場合
Symbolクラスをなくして全てStringクラスにする。
あるStringオブジェクトに対して、Symbol的な識別子が要求されたときに全Symbolを保持するテーブルに登録する。登録されたことを示すビットフラグを、そのStringオブジェクトにセットする。Stringが変更された時点でそのフラグをクリアする。