/**
  * {@inheritdoc}
  */
 public function convertToProductOption(DataObject $request)
 {
     $superAttribute = $request->getSuperAttribute();
     if (!empty($superAttribute) && is_array($superAttribute)) {
         $data = [];
         foreach ($superAttribute as $optionId => $optionValue) {
             /** @var ConfigurableItemOptionValueInterface $option */
             $option = $this->itemOptionValueFactory->create();
             $option->setOptionId($optionId);
             $option->setOptionValue($optionValue);
             $data[] = $option;
         }
         return ['configurable_item_options' => $data];
     }
     return [];
 }
 /**
  * {@inheritdoc}
  */
 public function processOptions(CartItemInterface $cartItem)
 {
     $attributesOption = $cartItem->getProduct()->getCustomOption('attributes');
     $selectedConfigurableOptions = unserialize($attributesOption->getValue());
     if (is_array($selectedConfigurableOptions)) {
         $configurableOptions = [];
         foreach ($selectedConfigurableOptions as $optionId => $optionValue) {
             /** @var \Magento\ConfigurableProduct\Api\Data\ConfigurableItemOptionValueInterface $option */
             $option = $this->itemOptionValueFactory->create();
             $option->setOptionId($optionId);
             $option->setOptionValue($optionValue);
             $configurableOptions[] = $option;
         }
         $productOption = $cartItem->getProductOption() ? $cartItem->getProductOption() : $this->productOptionFactory->create();
         /** @var  \Magento\Quote\Api\Data\ProductOptionExtensionInterface $extensibleAttribute */
         $extensibleAttribute = $productOption->getExtensionAttributes() ? $productOption->getExtensionAttributes() : $this->extensionFactory->create();
         $extensibleAttribute->setConfigurableItemOptions($configurableOptions);
         $productOption->setExtensionAttributes($extensibleAttribute);
         $cartItem->setProductOption($productOption);
     }
     return $cartItem;
 }