public Optional<String> maybeVisit(JsonNode schema, String baseName, String name) {
            if (schema.has("oneOf") || schema.has("anyOf")) {
                var oneNode = schema.has("oneOf") ? schema.get("oneOf") : schema.get("anyOf");
                var oneChildren = new ArrayList<JsonNode>();
                oneNode.elements().forEachRemaining(oneChildren::add);
                var rule = addRule(name, generateUnion(baseName, oneChildren));
                return Optional.of(rule);
            }

            return Optional.empty();
        }
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