/**
  * {@inheritdoc}
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function processOptions(CartItemInterface $cartItem)
 {
     if ($cartItem->getProductType() !== \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
         return $cartItem;
     }
     $productOptions = [];
     $bundleOptions = $cartItem->getBuyRequest()->getBundleOption();
     $bundleOptionsQty = $cartItem->getBuyRequest()->getBundleOptionQty();
     foreach ($bundleOptions as $optionId => $optionSelections) {
         if (empty($optionSelections)) {
             continue;
         }
         $optionSelections = is_array($optionSelections) ? $optionSelections : [$optionSelections];
         $optionQty = isset($bundleOptionsQty[$optionId]) ? $bundleOptionsQty[$optionId] : 1;
         /** @var \Magento\Bundle\Api\Data\BundleOptionInterface $productOption */
         $productOption = $this->bundleOptionFactory->create();
         $productOption->setOptionId($optionId);
         $productOption->setOptionSelections($optionSelections);
         $productOption->setOptionQty($optionQty);
         $productOptions[] = $productOption;
     }
     $extension = $this->productOptionExtensionFactory->create()->setBundleOptions($productOptions);
     if (!$cartItem->getProductOption()) {
         $cartItem->setProductOption($this->productOptionFactory->create());
     }
     $cartItem->getProductOption()->setExtensionAttributes($extension);
     return $cartItem;
 }