Copy from http://svn.aswing.org/aswing/trunk/