SwingとOSの時間の差違によるバグ

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4976596
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6207371
1.4から新たに追加されたInputEvent#getWhen。これがEventを時間で処理しようとするとハマル・・・。OSの時間を1分進めてみると、もちろんSystem#currentTimeMillisの値は正確に1分速くなっている。しかし、Swingプログラムを起動してから同じようにしてみると、InputEvent#getWhenの値は、OSの時間に関係なく起動時間からの時間として取得する。同様に、EventQueue#getMostRecentTimeも、OSの時間に関係なく起動時間からの時間として取得する。
ところが!SwingUtilities#invokeLaterのRunnableをimplementsされたクラスから実行されたEventQueue#getMostRecentTimeはOSの時間を返す。
JavaDocを引用すると


EventQueue#getMostRecentTime
このメソッドはアプリケーションのイベントディスパッチスレッドからだけ呼び出すようにしてください。
他のスレッドから呼び出した場合、System.currentTimeMillis() でレポートされる現在のシステム時刻が返されます。
もしかして、SwingUtilities#invokeLaterは、別スレッドを上げていてイベントディスパッチスレッドじゃないのか?という疑問が上がります。そこで、invokeLaterに起動してもらったクラスでEventQueue#isDispatchThreadを呼び出すと"true"を返します。Σ(゜д゜)オイオイ
なぜJavaVMがこういう事をしているのかは理解できませんが、Event#getWhenは、そもそもSystem#currentTimeMillisに基づく時間を返してもらいたいものだ。そういえば、JavaVMの起動時間ってどこから取れるんだろう・・・
このテストしていたせいでmy PCの時間が狂ってしまった。・゜・(ノ∀`)・゜・。