private void recursivelyCheckConditionToRouteToCache(Expression condition, List<String> primaryKeysArray,
                                                         MatchingMetaInfoHolder matchingMetaInfoHolder) {
        if (condition instanceof Compare) {
            Compare compareCondition = (Compare) condition;
            if (compareCondition.getOperator() == Compare.Operator.EQUAL) {
                if (compareCondition.getLeftExpression() instanceof Variable) {
                    Variable variable = (Variable) compareCondition.getLeftExpression();
                    if (checkIfVariableMatchesTable(variable, matchingMetaInfoHolder)) {
                        primaryKeysArray.remove(variable.getAttributeName());
                    }
                }
                if (compareCondition.getRightExpression() instanceof Variable) {
                    Variable variable = (Variable) compareCondition.getRightExpression();
                    if (checkIfVariableMatchesTable(variable, matchingMetaInfoHolder)) {
                        primaryKeysArray.remove(variable.getAttributeName());
                    }
                }
            }
        } else if (condition instanceof And) {
            recursivelyCheckConditionToRouteToCache(((And) condition).getLeftExpression(), primaryKeysArray,
                    matchingMetaInfoHolder);
            recursivelyCheckConditionToRouteToCache(((And) condition).getRightExpression(), primaryKeysArray,
                    matchingMetaInfoHolder);
        }
    }
common interface for FIFO, LRU, and LFU cache tables
modules/siddhi-core/src/main/java/io/siddhi/core/table/CacheTable.java