/**
  * Fixes the product categories.
  *
  * @param ProductInterface $product The product to fix.
  */
 public function fixProduct(ProductInterface $product)
 {
     $principalCategory = $product->getPrincipalCategory();
     $categories = $product->getCategories();
     if (!empty($principalCategory) && !$categories->contains($principalCategory)) {
         /**
          * The product has a principal category but this one is not assigned
          * as product category so this one is added.
          */
         $categories->add($principalCategory);
         $product->setCategories($categories);
     } elseif (empty($principalCategory) && 0 < $categories->count()) {
         /**
          * The product does not have principal category but has categories
          * assigned so the first category is assigned as principal category.
          */
         $product->setPrincipalCategory($categories->first());
     }
 }