Few JDK9 related & general changes

Changes apply to older JDKs as well.
I guess sending a comment through my phone in a poor coverage area didn't work.  This probably shouldn't be a double, due to rounding issues stemming from the fact that double/float do not store decimal fractions, they store binary fractions.  For example 1.7 in binary is 1.101100110011001100... which is obviously not right, and 1.8 is 1.11001100110011001100... and so on.  Converting 1.8 to binary and back to decimal again will give something like 1.799999952316284179688.