@Nullable public TCapabilityDefinition buildCapabilityDefinition(Object object, Parameter<TCapabilityDefinition> parameter) { if (Objects.isNull(object)) return new TCapabilityDefinition(); if (object instanceof String) return new TCapabilityDefinition.Builder(buildQName(stringValue(object))).build(); if (!validate(TCapabilityDefinition.class, object, parameter)) return null; @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) object; return new TCapabilityDefinition.Builder(buildQName(stringValue(map.get("type")))) .setDescription(buildDescription(map.get("description"))) .setOccurrences(buildListString(map.get("occurrences"), new Parameter<List<String>>(parameter.getContext()).addContext("occurrences") )) .setValidSourceTypes(buildListQName(buildListString(map.get("valid_source_types"), new Parameter<List<String>>(parameter.getContext()).addContext("valid_source_types") ))) .setProperties(buildMap(map.get("properties"), new Parameter<TPropertyDefinition>(parameter.getContext()).addContext("properties") .setClazz(TPropertyDefinition.class) .setBuilderOO(this::buildPropertyDefinition) )) .setAttributes(buildMap(map, "attributes", this::buildAttributeDefinition, parameter)) .build(); }