/**
  * Change default JavaScript templates for options rendering
  *
  * @param \Magento\Framework\Event\Observer $observer
  * @return $this
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 public function execute(\Magento\Framework\Event\Observer $observer)
 {
     $response = $observer->getEvent()->getResponseObject();
     $options = $response->getAdditionalOptions();
     /** @var \Magento\Catalog\Model\Product $product */
     $product = $this->registry->registry('current_product');
     if (!$product) {
         return $this;
     }
     // if the Weee module is enabled, then only do processing on bundle products
     if ($this->weeeData->isEnabled() && $product->getTypeId() == \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE) {
         if ($this->taxData->priceIncludesTax() && $this->taxData->displayPriceExcludingTax()) {
             // the Tax module might have set up a default, but we will re-decide which calcPrice field to use
             unset($options['optionTemplate']);
         }
         if (!array_key_exists('optionTemplate', $options)) {
             $calcPrice = $this->getWhichCalcPriceToUse($product->getStoreId());
             $options['optionTemplate'] = '<%- data.label %>' . '<% if (data.' . $calcPrice . '.value) { %>' . ' +<%- data.' . $calcPrice . '.formatted %>' . '<% } %>';
         }
         if (!$this->weeeData->isDisplayIncl($product->getStoreId()) && !$this->weeeData->isDisplayExcl($product->getStoreId())) {
             // we need to display the individual Weee amounts
             foreach ($this->weeeData->getWeeeAttributesForBundle($product) as $weeeAttributes) {
                 foreach ($weeeAttributes as $weeeAttribute) {
                     if (!preg_match('/' . $weeeAttribute->getCode() . '/', $options['optionTemplate'])) {
                         $options['optionTemplate'] .= sprintf(' <%% if (data.weeePrice' . $weeeAttribute->getCode() . ') { %%>' . '  (' . $weeeAttribute->getName() . ': <%%- data.weeePrice' . $weeeAttribute->getCode() . '.formatted %%>)' . '<%% } %%>');
                     }
                 }
             }
         }
         if ($this->weeeData->isDisplayExclDescIncl($product->getStoreId())) {
             $options['optionTemplate'] .= sprintf(' <%% if (data.weeePrice) { %%>' . '<%%- data.weeePrice.formatted %%>' . '<%% } %%>');
         }
     }
     $response->setAdditionalOptions($options);
     return $this;
 }