return new Marking($marking);
} public function setMarking(object
$subject, Marking
$marking, array
$context =
[]): void
{ $marking =
$marking->
getPlaces();
if ($this->singleState
) { $marking =
key($marking);
} ($this->
getSetter($subject))($marking,
$context);
} private function getGetter(object
$subject): callable
{ $property =
$this->property;
$method = 'get'.
ucfirst($property);
return match ($this->getters
[$subject::
class] ??=
$this->
getType($subject,
$property,
$method)) { MarkingStoreMethod::METHOD =>
$subject->
{$method}(...
),
MarkingStoreMethod::PROPERTY =>
static fn () =>
$subject->
{$property},
};
}