public function isValid($value)
    {
        /**
         * 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;
        }
        parent::isValid($value);
    }