public function getOrSet($key, \Closure $fn)
    {
        $key = $this->getCompositeKey($key);
        if (($value = $this->get($key)) !== null) {
            return $value;
        }
        if ($fn instanceof \Closure) {
            $value = $fn($this);
            $this->set($key, $value);
        }
    }