/**
  * Validates a node's value against all constraints in the given group.
  *
  * @param mixed                     $value      The validated value
  * @param string                    $cacheKey   The key for caching the
  *                                              validated value
  * @param MetadataInterface         $metadata   The metadata of the value
  * @param string                    $group      The group to validate
  * @param ExecutionContextInterface $context    The execution context
  */
 private function validateInGroup($value, $cacheKey, MetadataInterface $metadata, $group, ExecutionContextInterface $context)
 {
     $context->setGroup($group);
     foreach ($metadata->findConstraints($group) as $constraint) {
         // Prevent duplicate validation of constraints, in the case
         // that constraints belong to multiple validated groups
         if (null !== $cacheKey) {
             $constraintHash = spl_object_hash($constraint);
             if ($context->isConstraintValidated($cacheKey, $constraintHash)) {
                 continue;
             }
             $context->markConstraintAsValidated($cacheKey, $constraintHash);
         }
         $context->setConstraint($constraint);
         $validator = $this->validatorFactory->getInstance($constraint);
         $validator->initialize($context);
         $validator->validate($value, $constraint);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function getPropertyName()
 {
     return $this->metadata instanceof PropertyMetadataInterface ? $this->metadata->getPropertyName() : null;
 }