From http://stackoverflow.com/questions/11340330/java-bytecode-swap-for-double-and-long-values