public function isVisible()
    {
        if ((!is_array($this->url)) || (!$this->visible)) { // if it's not array, or not visible then just return visible value, no need to check anything
            return $this->visible;
        }
        $controller = isset($this->url[0]) ? $this->url[0] : 'home';
        $action = isset($this->url[1]) ? $this->url[1] : null;
        if (false !== strpos($controller, '/')) {
            list ($module, $controller) = explode('/', $controller, 2);
            if ('..' == $module) {
                $module = '/';
            }
        } else {
            $module = (isset($this->url[2]) && is_string($this->url[2])) ? $this->url[2] : (isset($this->url[3]) ? $this->url[3] : null);
        }
        if (\mpf\WebApp::get()->accessMap && (!\mpf\WebApp::get()->accessMap->canAccess($controller, $action, $module))) {
            return false;
        }
        return true;
    }