/**
  * Saves the page url and returns it
  * @param PageUrl $pageUrl The page url
  * @return PageUrl Returns the page url with properties attached
  */
 public function Save(PageUrl $pageUrl = null)
 {
     $exists = $pageUrl && $pageUrl->Exists();
     $page = $this->Value('Page') ? Page::Schema()->ByID($this->Value('Page')) : null;
     if (!$page) {
         if ($exists) {
             $pageUrl->Delete();
         }
         return null;
     }
     if (!$exists) {
         $pageUrl = new PageUrl();
     }
     $pageUrl->SetPage($page);
     $pageUrl->SetFragment($this->Value('Fragment'));
     $pageUrl->Save();
     $this->SaveParams($pageUrl);
     return $pageUrl;
 }