public function canShow(int $access_level = null): bool
    {
        $access_level = $access_level ?? Auth::accessLevel($this->tree);

        // We use this value to bypass privacy checks. For example,
        // when downloading data or when calculating privacy itself.
        if ($access_level === Auth::PRIV_HIDE) {
            return true;
        }

        $cache_key = 'canShow' . $this->xref . ':' . $this->tree->id() . ':' . $access_level;

        return app('cache.array')->rememberForever($cache_key, function () use ($access_level) {
            return $this->canShowRecord($access_level);
        });
    }