Bug in floating point constant handling in constant pool writing
If a class containing the floating-point constant -0.0 is read in and
written out using ASM's ClassReader / ClassWriter pair, the -0.0
constants will be incorrectly translated to 0.0. The reason for this
is the equality comparison for single- and double-precision
floating-point Items; these should be performing bitwise equality
comparisons rather than using the floating-point equality comparisons
defined by the language. A patch for the Item class is attached. This
fix has been tested fairly extensively and solves this problem
apparently without introducing any new ones.