private void generateStructFields(ObjectNode fieldNode, FieldInfo field, Map<TypeSignature, String> visited,
                                      String path) {

        final StructInfo fieldStructInfo = typeSignatureToStructMapping.get(field.typeSignature().signature());
        fieldNode.put("additionalProperties", fieldStructInfo == null);

        if (fieldStructInfo == null) {
            logger.debug("Could not find struct with signature: {}",
                         field.typeSignature().signature());
        }

        // Iterate over each child field, generate their definitions.
        if (fieldStructInfo != null && !fieldStructInfo.fields().isEmpty()) {
            generateProperties(fieldStructInfo.fields(), visited, path, fieldNode);
        }
    }
Create the JSON node for a struct (object) field. Most custom classes are serialized as structs.
Example for `Foo(Integer x)`: {"type": "object", "properties": {"x": {"type": "integer"}}}

@see <a href="https://json-schema.org/understanding-json-schema/reference/object.html#properties">JSON Schema</a>
core/src/main/java/com/linecorp/armeria/server/docs/JsonSchemaGenerator.java