private String generateUnion(String name, List<JsonNode> altSchemas) {
        var content = new StringBuilder();

        for (var i = 0; i < altSchemas.size(); i++) {
            var altSchema = altSchemas.get(i);

            if (i > 0) {
                content.append(" | ");
            }

            content.append(visit(altSchema, (name == null ? "alternative-" : name + "-") + i));
        }

        return content.toString();
    }
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