/**
  * {@inheritdoc}
  */
 public function synchronizeVariationsDeliveries(ProductInterface $product, ArrayCollection $variations = null)
 {
     if (in_array('deliveries', $this->getVariationFields())) {
         return;
     }
     if (!$variations) {
         $variations = $product->getVariations();
     }
     $productDeliveries = $product->getDeliveries();
     /** @var ProductInterface $variation */
     foreach ($variations as $variation) {
         $variationDeliveries = $variation->getDeliveries();
         // browsing variation deliveries and remove excessing deliveries
         foreach ($variationDeliveries as $productDelivery) {
             if ($productDelivery && !$productDeliveries->contains($productDelivery)) {
                 $variation->removeDelivery($productDelivery);
             }
         }
         // browsing Product deliveries and add missing deliveries
         foreach ($productDeliveries as $productDelivery) {
             if ($productDelivery && !$variationDeliveries->contains($productDelivery)) {
                 $delivery = clone $productDelivery;
                 $variation->addDelivery($delivery);
             }
         }
     }
 }