public function productSearch($image, ProductSearchParams $productSearchParams, $optionalArgs = [])
    {
        if (isset($optionalArgs['imageContext']) && $optionalArgs['imageContext'] instanceof ImageContext) {
            $optionalArgs['imageContext']->setProductSearchParams($productSearchParams);
        } else {
            $optionalArgs['imageContext'] = (new ImageContext)
                ->setProductSearchParams($productSearchParams);
        }

        return $this->annotateSingleFeature(
            $image,
            Type::PRODUCT_SEARCH,
            $optionalArgs
        );
    }