/**
  * {@inheritdoc}
  */
 public function synchronizeVariationsProduct(ProductInterface $product, ArrayCollection $variations = null)
 {
     $variationFields = array_merge(array('id', 'parent'), $this->getVariationFields());
     $values = $product->toArray();
     foreach ($variationFields as $field) {
         if (array_key_exists($field, $values)) {
             unset($values[$field]);
         }
     }
     if (!$variations) {
         $variations = $product->getVariations();
     }
     $accessor = PropertyAccess::createPropertyAccessor();
     foreach ($variations as $variation) {
         foreach ($values as $name => $value) {
             $accessor->setValue($variation, $name, $value);
         }
     }
 }