/**
  * Remove the given Role from the given Page only if it (or it's parents) doesn't already remove the Role
  *
  * A call to save() should eventually follow, which will save to disk
  *
  * @param Role $role
  * @param Page $page
  * @return this
  *
  */
 public function removeRoleFromPage(Role $role, Page $page)
 {
     if ($this->pageDoesNotHaveRole($page, $role)) {
         return $this;
     }
     $pageRole = $this->pagesRolesArray->getPageRole($page, $role);
     if (!$pageRole) {
         $pageRole = new PageRole();
     }
     $pageRole->setTrackChanges();
     $pageRole->page = $page;
     $pageRole->role = $role;
     $pageRole->action = '-';
     //if(!$page->parent || $this->pageHasRole($page->parent, $role)) $pageRole->redundant = true;
     $this->pagesRolesArray->add($pageRole);
     // we trackChange with the $page since PageRoles are saved by Pages::save
     if ($role->id != Role::ownerRoleID) {
         $page->trackChange("roles");
     }
     return $this;
 }