public Object evaluate(final ProcessingDTO processingDTO,
                           final List<Object> paramValues) {
        final List<KiePMMLNameValue> kiePMMLNameValues = new ArrayList<>();
        if (parameterFields != null) {
            if (paramValues == null || paramValues.size() < parameterFields.size()) {
                throw new IllegalArgumentException("Expected at least " + parameterFields.size() + " arguments for " + name + " DefineFunction");
            }
            for (int i = 0; i < parameterFields.size(); i++) {
                kiePMMLNameValues.add(new KiePMMLNameValue(parameterFields.get(i).getName(), paramValues.get(i)));
            }
        }
        for (KiePMMLNameValue kiePMMLNameValue : kiePMMLNameValues) {
            processingDTO.addKiePMMLNameValue(kiePMMLNameValue);
        }
        return commonEvaluate(kiePMMLExpression.evaluate(processingDTO), dataType);
    }
@Test
    void evaluateNoParamValues() {
        assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> {
            final KiePMMLParameterField parameterField1 =
                    KiePMMLParameterField.builder(PARAM_1, Collections.emptyList()).build();
            final KiePMMLParameterField parameterField2 =
                    KiePMMLParameterField.builder(PARAM_2, Collections.emptyList()).build();
            final KiePMMLDefineFunction defineFunction = new KiePMMLDefineFunction(CUSTOM_FUNCTION,
                                                                                   Collections.emptyList(),
                                                                                   null,
                                                                                   OP_TYPE.CONTINUOUS,
                                                                                   Arrays.asList(parameterField1,
                                                                                                 parameterField2),
                                                                                   null);
            ProcessingDTO processingDTO = getProcessingDTO(Collections.emptyList());
            defineFunction.evaluate(processingDTO, null);
        });
    }