public static boolean areEqual(Object o1, Object o2) {
        return o1 instanceof Number && o2 instanceof Number ? areNumericEqual((Number) o1, (Number) o2) : Objects.equals(o1, o2);
    }
@Test
    public void areEqualWithNumbers() {
        assertThat(OperatorUtils.areEqual(1, 1)).isTrue();
        assertThat(OperatorUtils.areEqual(1L, 1L)).isTrue();
        assertThat(OperatorUtils.areEqual(1.0f, 1.0f)).isTrue();
        assertThat(OperatorUtils.areEqual(1.0, 1.0)).isTrue();

        assertThat(OperatorUtils.areEqual(1, 2)).isFalse();
        assertThat(OperatorUtils.areEqual(1L, 2L)).isFalse();
        assertThat(OperatorUtils.areEqual(1.0f, 2.0f)).isFalse();
        assertThat(OperatorUtils.areEqual(1.0, 2.0)).isFalse();

        assertThat(OperatorUtils.areEqual(1, "1")).isFalse();
        assertThat(OperatorUtils.areEqual(1L, "1")).isFalse();
        assertThat(OperatorUtils.areEqual(1.0f, "1")).isFalse();
        assertThat(OperatorUtils.areEqual(1.0, "1")).isFalse();

        assertThat(OperatorUtils.areEqual(1, new BigDecimal("1"))).isTrue();
        assertThat(OperatorUtils.areEqual(1, new BigDecimal("1.0"))).isTrue();
        assertThat(OperatorUtils.areEqual(1, new BigDecimal("1.00"))).isTrue();
    }