@Nullable
public TPolicyDefinition buildPolicyDefinition(Object object, Parameter<TPolicyDefinition> parameter) {
if (Objects.isNull(object)) return new TPolicyDefinition();
if (!validate(TPolicyDefinition.class, object, parameter)) return null;
@SuppressWarnings("unchecked")
Map<String, Object> map = (Map<String, Object>) object;
return new TPolicyDefinition.Builder(buildQName(stringValue(map.get("type"))))
.setDescription(buildDescription(map.get("description")))
.setMetadata(buildMetadata(map.get("metadata")))
.setProperties(buildMap(map, "properties", this::buildPropertyAssignment, parameter))
.setTargets(buildListQName(buildListString(map.get("targets"),
new Parameter<List<String>>(parameter.getContext()).addContext("targets")
)))
.build();
}