public Number evaluate(final List<KiePMMLDefineFunction> defineFunctions,
                           final List<KiePMMLDerivedField> derivedFields,
                           final List<KiePMMLOutputField> outputFields,
                           final Map<String, Object> inputData) {
        final List<KiePMMLNameValue> kiePMMLNameValues = getKiePMMLNameValuesFromInputDataMap(inputData);
        ProcessingDTO processingDTO = new ProcessingDTO(defineFunctions, derivedFields, outputFields, Collections.emptyList(), kiePMMLNameValues, Collections.emptyList(), Collections.emptyList());
        Object toReturn = expression.evaluate(processingDTO);
        return toReturn != null ? (Number) toReturn : null;
    }
@Test
    void evaluateFromFieldRef() {
        // <ComplexPartialScore>
        //     <FieldRef field="PARAM_1"/>
        // </ComplexPartialScore>
        final KiePMMLFieldRef kiePMMLFieldRef = new KiePMMLFieldRef(PARAM_1, Collections.emptyList(), null);
        final KiePMMLComplexPartialScore complexPartialScore = new KiePMMLComplexPartialScore(CUSTOM_FIELD, Collections.emptyList(),
                kiePMMLFieldRef);
        final Map<String, Object> inputData = new HashMap<>();
        inputData.put(PARAM_1, value1);
        Object retrieved = complexPartialScore.evaluate(Collections.emptyList(), Collections.emptyList(), Collections.emptyList(),
                inputData);
        assertThat(retrieved).isEqualTo(value1);
    }