/**
  * {inheritdoc}
  */
 public function create(Specification $spec, QueryBuilder $qb)
 {
     if (!$spec instanceof Not) {
         throw new \InvalidArgumentException();
     }
     $factory = $this->registry->getFactory($spec->getWrappedSpecification());
     return $qb->expr()->not($factory->create($spec->getWrappedSpecification(), $qb));
 }
 /**
  * {inheritdoc}
  */
 public function create(Specification $spec, QueryBuilder $qb)
 {
     if (!$spec instanceof OrX) {
         throw new \InvalidArgumentException();
     }
     $firstPartFactory = $this->registry->getFactory($spec->getFirstPart());
     $secondPartFactory = $this->registry->getFactory($spec->getSecondPart());
     return $qb->expr()->orx($firstPartFactory->create($spec->getFirstPart(), $qb), $secondPartFactory->create($spec->getSecondPart(), $qb));
 }