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 evaluateKeyFoundMultipleNotMatching() {
        KiePMMLRow kiePMMLRow = new KiePMMLRow(COLUMN_VALUES);
        Map<String, Object> columnPairsMap = IntStream.range(0, 3).boxed()
                .collect(Collectors.toMap(i -> "KEY-" + i,
                                          integer -> integer));
        columnPairsMap.put("NOT-KEY", 4);
        Optional<Object> retrieved = kiePMMLRow.evaluate(columnPairsMap, "KEY-0", null);
        assertThat(retrieved).isNotPresent();
    }