private Item walkJson(Inspector inspector) {
        if (inspector.type() == BOOL)
            return inspector.asBool() ? new TrueItem() : new FalseItem();

        Item[] item = {null};
        inspector.traverse((ObjectTraverser) (key, value) -> {
            String type = (FUNCTION_CALLS.contains(key)) ? CALL : key;
            switch (type) {
                case AND -> item[0] = buildAnd(key, value);
                case AND_NOT -> item[0] = buildNotAnd(key, value);
                case CALL -> item[0] = buildFunctionCall(key, value);
                case CONTAINS -> item[0] = buildTermSearch(key, value);
                case EQ -> item[0] = buildEquals(key, value);
                case IN -> item[0] = buildIn(key, value);
                case MATCHES -> item[0] = buildRegExpSearch(key, value);
                case OR -> item[0] = buildOr(key, value);
                case RANGE -> item[0] = buildRange(key, value);
                default -> throw newUnexpectedArgumentException(key, AND, AND_NOT, CALL, CONTAINS, EQ, IN, MATCHES, OR, RANGE);
            }
        });
        return item[0];
    }
The Select query language.

This class will be parsing the Select parameters, and will be used when the query has the SELECT-type.

@author henrhoi
container-search/src/main/java/com/yahoo/search/query/SelectParser.java