>>66
単に循環参照
コレだけみると設計再検討だが、なんか理由があるとして…

ま、getAやらの部分で、a を遅延初期化すれば問題ない。
if (a == null) { a = A.INS; } return a;

仮にマルチスレッドでまわしても、A.INS は確定した後で、常に一つだから
null チェックで二度三度上書きしたところで得られる値は変わりはしない。