private String visit(JsonNode schema, String baseName) {
        String name;

        if (baseName == null) {
            name = "root";
        } else if (RESERVED_NAMES.contains(baseName)) {
            name = baseName + "-";
        } else {
            name = baseName;
        }

        for (var visitor : visitors) {
            var ruleContent = visitor.maybeVisit(schema, baseName, name);

            if (ruleContent.isPresent()) {
                return ruleContent.get();
            }
        }

        throw new IllegalArgumentException("Unrecognized schema: " + schema);
    }
Converts a JSON Schema to a GBNF grammar to be used for structured output with llama.cpp.
It is a port of Python implementation from llama.cpp repository.
Current implementation doesn't support regex patterns, resolving $ref or fetching schemas from URLs.
The plan is to replace this with C++ implementation from llama.cpp though JNI.
model-integration/src/main/java/ai/vespa/llm/clients/JsonSchemaToGrammar.java