@Nullable
public TRelationshipTemplate buildRelationshipTemplate(Object object, Parameter<TRelationshipTemplate> parameter) {
if (Objects.isNull(object)) return new TRelationshipTemplate();
if (!validate(TRelationshipTemplate.class, object, parameter)) return null;
@SuppressWarnings("unchecked")
Map<String, Object> map = (Map<String, Object>) object;
return new TRelationshipTemplate.Builder(buildQName(stringValue(map.get("type"))))
.setDescription(buildDescription(map.get("description")))
.setMetadata(buildMetadata(map.get("metadata")))
.setProperties(buildMap(map, "properties", this::buildPropertyAssignment, parameter))
.setAttributes(buildMap(map, "attributes", this::buildAttributeAssignment, parameter))
.setInterfaces(buildMap(map.get("interfaces"),
new Parameter<TInterfaceDefinition>(parameter.getContext()).addContext("interfaces")
.setValue("TRelationshipTemplate")
.setBuilderOO(this::buildInterfaceDefinition)
))
.setCopy(buildQName(stringValue(map.get("copy"))))
.build();
}