code: protected function handleStateChange(SaleInterface $sale)
      {
          parent::handleStateChange($sale);
  
          if ($this->persistenceHelper->isChanged($sale, 'state')) {
              $stateCs = $this->persistenceHelper->getChangeSet($sale, 'state');
  
              // If order state has changed from non stockable to stockable
              if (OrderStates::hasChangedToStockable($stateCs)) {
                  foreach ($sale->getItems() as $item) {
                      $this->assignSaleItemRecursively($item);
                  }
              }
              // If order state has changed from stockable to non stockable
              elseif (OrderStates::hasChangedFromStockable($stateCs)) {
                  foreach ($sale->getItems() as $item) {
                      $this->detachSaleItemRecursively($item);
                  }
                  // We don't need to handle invoices as they are detached with sale items.
              }
          }
      }
docs: @inheritDoc
  
  @param OrderInterface $sale