/**
  * Checks if the given value is valid according to the validator, and returns
  * the Error Messages object which occurred. Will skip validation if value is
  * an uninitialized lazy loading proxy.
  *
  * @param mixed $value The value that should be validated
  * @return \TYPO3\Flow\Error\Result
  * @api
  */
 public function validate($value)
 {
     $this->result = new Result();
     /**
      * The idea is that Aggregates form a consistency boundary, and an Aggregate only needs to be
      * validated if it changed state. Also since all entity relations are lazy loaded by default,
      * and the relation will only be initialized when it gets accessed (e.g. during property mapping),
      * we can just skip validation of an uninitialized aggregate.
      * This greatly improves validation performance for domain models with lots of small aggregate
      * relations. Therefore proper Aggregate Design becomes a performance optimization.
      */
     if ($value instanceof \Doctrine\ORM\Proxy\Proxy && !$value->__isInitialized()) {
         return $this->result;
     }
     return parent::validate($value);
 }