grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026setDefined('attributes') ->setAllowedTypes('attributes', 'array') ->setAllowedValues('attributes', $this->validatorFactory->createClosureForIterator([ new Assert\Regex([ 'pattern' => self::REGEX_ATTRIBUTE_PATTERN, 'match' => false, ]), ])) ->setNormalizer('attributes', function (Options $options, $values) { $bean = $this->beanManager->newBeanSafe($options->offsetGet('type')); foreach ($values as $attribute => $value) { $invalidProperty = !property_exists($bean, $attribute) && !array_key_exists($attribute, $bean->field_defs) && !array_key_exists($attribute, $bean->field_name_map); if ($invalidProperty) { throw new OutOfBoundsException(sprintf( 'Property %s in %s module is invalid', $attribute, $bean->getObjectName() )); } } return $values; }); } }