private static List<RankNode> findChildren(SchemaNode node) {
        List<RankNode> ret = new ArrayList<>();

        for (Node child : node) {
            if (rankNodeTypeMap.containsKey(child.getASTClass())) {
                ret.add(new RankNode(child.getSchemaNode()));
            } else {
                ret.addAll(findChildren(child.getSchemaNode()));
            }
        }

        return ret;
    }
RankNode represents a node in the Rank pexression AST.
The node can either represent an expression, a feature or a built-in-function

An expression is a rank expression.
A feature is a function with parameters, and an optional property. All parameters must be expressions.
integration/schema-language-server/language-server/src/main/java/ai/vespa/schemals/tree/rankingexpression/RankNode.java