private Item instantiateCompositeLeaf(String field, OperatorNode<ExpressionOperator> ast) {
        List<String> names = ast.getArgument(0);
        Preconditions.checkArgument(names.size() == 1, "Expected 1 name, got %s.", names.size());
        return switch (names.get(0)) {
            case SAME_ELEMENT -> instantiateSameElementItem(field, ast);
            case PHRASE -> instantiatePhraseItem(field, ast);
            case NEAR -> instantiateNearItem(field, ast);
            case ONEAR -> instantiateONearItem(field, ast);
            case EQUIV -> instantiateEquivItem(field, ast);
            case ALTERNATIVES -> instantiateWordAlternativesItem(field, ast);
            case URI -> instantiateUriItem(field, ast);
            case FUZZY -> instantiateFuzzyItem(field, ast);
            default ->
                    throw newUnexpectedArgumentException(names.get(0), EQUIV, NEAR, ONEAR, PHRASE, SAME_ELEMENT, URI, FUZZY);
        };
    }
Build a "pure" not, without any positive terms.
container-search/src/main/java/com/yahoo/search/yql/YqlParser.java