Следует вызывать только после исключения всех известных не примитивных типов. Этот метод не будет вызывать другие функции после проверки на примитивы, чтобы избежать бесконечной рекурсии между equals и this для неизвестных вариантов «Number».
Кроме того, его следует вызывать только в том случае, если числовой тип рад быть преобразован в Long, Float и Double. Если, например, BigInt, намного больший, чем диапазон Long, отправляется сюда, он заявит о равенстве с тем Long, который остался в своих нижних 64 битах. Или BigDecimal с большей точностью, чем может содержать Double: то же самое. Нет способа предотвратить эту ошибку с помощью доступного здесь интерфейса.