code: public function handle(array $options, BasketInterface $basket, Client $client): void
      {
          /** @var null|ItemResult $item */
          [
              'exception_handler' => $exceptionHandler,
              'item' => $item,
              'product' => $productId,
              'recover_item' => $recoverItem,
              'user' => $runetId,
          ] = $options;
  
          $itemProductId = null !== $item ? $item->Product->Id : null;
  
          if ($itemProductId === $productId) {
              return;
          }
  
          if (null !== $itemProductId) {
              try {
                  $client
                      ->payDelete()
                      ->setOrderItemId($item->Id)
                      ->getRawResult();
              } catch (RunetIdException $exception) {
                  $exceptionHandler($exception);
  
                  return;
              }
          }
  
          if (null === $productId) {
              return;
          }
  
          try {
              $client
                  ->payAdd()
                  ->setOwnerRunetId($runetId)
                  ->setProductId($productId)
                  ->getResult();
          } catch (RunetIdException $exception) {
              if (null !== $itemProductId && $recoverItem) {
                  /* @var int $itemProductId */
                  $client
                      ->payAdd()
                      ->setOwnerRunetId($runetId)
                      ->setProductId($itemProductId)
                      ->getRawResult();
              }
  
              $exceptionHandler($exception);
          }
      }
docs: {@inheritdoc}