@NonNull public <T extends TEntityType.Builder<T>> T buildEntityType(Object object, Parameter<T> parameter) { if (Objects.isNull(object) || !validate(parameter.getClazz(), object, parameter)) return parameter.getBuilder(); @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) object; return parameter.getBuilder() .setDescription(buildDescription(map.get("description"))) .setVersion(buildVersion(map.get("version"))) .setDerivedFrom(buildQName(stringValue(map.get("derived_from")))) .setProperties(buildMap(map, "properties", this::buildPropertyDefinition, TPropertyDefinition.class, parameter)) .setAttributes(buildMap(map, "attributes", this::buildAttributeDefinition, parameter)) .setMetadata(buildMetadata(map.get("metadata"))); }