If I create a subclass of Number that is implemented internally with a decimal value, e.g. using a BigDecimal even if I implement compareTo(), Groovy will convert my numbers to Integer before comparison.
This is a critical issue for anyone creating a DSL that has custom numeric types (e.g. for currency handling) and wants to compare them with ==.
Specifically this problem occurs with implementations of NumberValue in JSR354 aka JavaMoney.
I can provide some test cases for this if needed and am interesting in working to contribute a fix.