public function create(Product\Product $product, array $options = [], Product\Unit\Unit $unit = null, $variantName = null)
 {
     if ($unit && !$variantName) {
         throw new \LogicException('You must set a variant name to make pages for individual variants');
     }
     $options = $options + $this->_defaults;
     if (empty($options[Options::CREATE_PAGES])) {
         return false;
     }
     $variantValue = $unit ? $unit->getOption($variantName) : null;
     if (!$this->_allowDuplicates && $this->_exists->exists($product, $variantName, $variantValue)) {
         return false;
     }
     $page = $this->_getNewProductPage($product, $this->_getParentPage($product, $options), $variantValue);
     $page->publishDateRange = new DateRange(new \DateTime());
     $this->_setProductPageContent($page, $product, $options, $variantName, $variantValue);
     return $this->_dispatcher->dispatch($page, $product, $options[Options::CSV_PORT], $unit);
 }