private static long numberOfValidFeatureSetOperands(Conjunction conjunction) {
        return conjunction.getOperands().stream()
                .filter(FeatureConjunction::isValidFeatureConjunctionOperand)
                .map(FeatureConjunctionTransformer::getFeatureSetKey)
                .distinct()
                .count();
    }
Conversion rules:
 1) A {@link FeatureConjunction} may only consist of FeatureSets having unique keys.
    If multiple {@link FeatureSet} share the same key, they have to be placed into separate FeatureConjunctions.
 2) A FeatureConjunction must have at least 2 operands.
 3) Any operand that is not a FeatureSet, negated or not,
    (e.g {@link FeatureRange}) cannot be placed into a FeatureConjunction.
 4) All FeatureSets may only have a single value.

 See the tests in FeatureConjunctionTransformerTest for conversion examples.
predicate-search/src/main/java/com/yahoo/search/predicate/optimization/FeatureConjunctionTransformer.java