public function removePage($page, $recursive = false)
        {
            if ($page instanceof Page) {
                $hash = $page->hashCode();
            } elseif (is_int($page)) {
                $this->_sort();
                if (!$hash = array_search($page, $this->_index)) {
                    return false;
                }
            } else {
                return false;
            }

            if (isset($this->_pages[$hash])) {
                unset($this->_pages[$hash]);
                unset($this->_index[$hash]);
                $this->_dirtyIndex = true;

                return true;
            }

            if ($recursive) {
                /** @var Page $childPage */
                foreach ($this->_pages as $childPage) {
                    if ($childPage->hasPage($page, true)) {
                        $childPage->removePage($page, true);

                        return true;
                    }
                }
            }

            return false;
        }