private function update(PropertyMetadata $propertyMetadata, array $metadata) : PropertyMetadata
{
$metadataAccessors = ['description' => 'get', 'readable' => 'is', 'writable' => 'is', 'writableLink' => 'is', 'readableLink' => 'is', 'required' => 'is', 'identifier' => 'is', 'iri' => 'get', 'attributes' => 'get'];
foreach ($metadataAccessors as $metadataKey => $accessorPrefix) {
if (null === $metadata[$metadataKey] || null !== $propertyMetadata->{$accessorPrefix . ucfirst($metadataKey)}()) {
continue;
}
$propertyMetadata = $propertyMetadata->{'with' . ucfirst($metadataKey)}($metadata[$metadataKey]);
}
return $propertyMetadata;
}