public Optional<Object> evaluate(final Map<String, Object> columnPairsMap, final String outputColumn,
                                     final String regexField) {
        boolean matching = true;
        boolean isRegex =
                regexField != null && columnValues.containsKey(regexField) && (boolean) columnValues.get(regexField);
        for (Map.Entry<String, Object> columnPairEntry : columnPairsMap.entrySet()) {
            Object value = columnValues.get(columnPairEntry.getKey());
            matching = isRegex ? isRegexMatching(value.toString(), (String) columnPairEntry.getValue()) :
                    isMatching(value, columnPairEntry.getValue());
            if (!matching) {
                break;
            }
        }
        return matching ? Optional.ofNullable(columnValues.get(outputColumn)) : Optional.empty();
    }
@Test
    void evaluateKeyFoundMatchingRegex() {
        KiePMMLRow kiePMMLRow = new KiePMMLRow(COLUMN_VALUES);
        Optional<Object> retrieved = kiePMMLRow.evaluate(Collections.singletonMap("KEY-1", "[0-9]"), "KEY-0",
                                                         REGEX_FIELD);
        assertThat(retrieved).isPresent();
        assertThat(retrieved.get()).isEqualTo(COLUMN_VALUES.get("KEY-0"));
    }