class AbstractConditionShardLocator {

    protected Set<String> locateForIntersection(CTX context, OperatorEnum op1, Object value1, OperatorEnum op2, Object value2) {
        // Wrap into a new Set in case what return is read-only.
        Set<String> range = new HashSet<>(locateShards(createConditionContext(context, op1, value1)));
        
        range.retainAll(locateShards(createConditionContext(context, op2, value2)));
        return range;
    }

}