Java Comparison Method Violates Its General Contract