code: public function readFromPropertyValueBag(PropertyValueBagInterface $valueBag)
      {
          foreach ($this->getPropertyNames() as $property) {
              if (!$valueBag->hasPropertyValue($property)) {
                  continue;
              }
  
              if ($valueBag->isPropertyValueInvalid($property)) {
                  throw new DcGeneralInvalidArgumentException('The value for property ' . $property . ' is invalid.');
              }
  
              $this->setProperty($property, $valueBag->getPropertyValue($property));
          }
      }
docs: {@inheritDoc}
  
  @throws DcGeneralInvalidArgumentException When a property in the value bag has been marked as invalid.