static void validateValues(EvaluationContext ctx, Object start, Object end) {
        if (start.getClass() != end.getClass()) {
            ctx.notifyEvt(() -> new ASTEventBase(FEELEvent.Severity.ERROR,
                    Msg.createMessage(Msg.X_TYPE_INCOMPATIBLE_WITH_Y_TYPE, start, end), null));
            throw new EndpointOfRangeOfDifferentTypeException();
        }
        valueMustBeValid(ctx, start);
        valueMustBeValid(ctx, end);
    }
@Test
    void validateValuesFalseTest() {
        try {
            validateValues(ctx, "INVALID", "INVALID");
        } catch (Exception e) {
            assertTrue(e instanceof EndpointOfRangeNotValidTypeException);
            final ArgumentCaptor<FEELEvent> captor = ArgumentCaptor.forClass(FEELEvent.class);
            verify(listener, times(1)).onEvent(captor.capture());
            reset(listener);
        }
        try {
            validateValues(ctx, BigDecimal.valueOf(1), LocalDate.of(2021, 1, 1));
        } catch (Exception e) {
            assertTrue(e instanceof EndpointOfRangeOfDifferentTypeException);
            final ArgumentCaptor<FEELEvent> captor = ArgumentCaptor.forClass(FEELEvent.class);
            verify(listener, times(1)).onEvent(captor.capture());
            reset(listener);
        }
        try {
            validateValues(ctx, LocalDate.of(2021, 1, 1), BigDecimal.valueOf(1));
        } catch (Exception e) {
            assertTrue(e instanceof EndpointOfRangeOfDifferentTypeException);
            final ArgumentCaptor<FEELEvent> captor = ArgumentCaptor.forClass(FEELEvent.class);
            verify(listener, times(1)).onEvent(captor.capture());
            reset(listener);
        }
    }