This package is still in the early development phase.  That means too
early to start listing bugs in a file like this one!

Report bugs to classpath@gnu.org or much better via Savannah at this
URL: http://www.gnu.org/software/classpath/bugs.html
