public function updateAttributeSet(Product $product)
 {
     $attributes = $product->getCategory()->getAttributes();
     $attributesCloned = clone $attributes;
     $attrValues = $product->getAttributeValues();
     if ($attrValues->count() > 0) {
         $em = $this->doctrine->getManager();
         foreach ($attrValues as $attrValue) {
             $attribute = $attrValue->getAttribute();
             if ($attributes->contains($attribute)) {
                 $attributesCloned->removeElement($attribute);
             } else {
                 $product->removeAttributeValue($attrValue);
                 $em->remove($attrValue);
             }
         }
         $em->flush();
     }
     if ($attributesCloned->count() > 0) {
         foreach ($attributesCloned as $attribute) {
             $attrValue = new AttributeValue();
             $attrValue->setProduct($product)->setAttribute($attribute);
             $product->addAttributeValue($attrValue);
         }
     }
     return $product;
 }
 /**
  * {@inheritDoc}
  */
 public function getCategory()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getCategory', array());
     return parent::getCategory();
 }