public function get($key, $default = null)
    {
        $this->fire('getting', $key, [$key, $default]);

        $generatedKey = $this->getKey($key);

        if ($this->isCacheEnabled()) {
            $repository = $this->repository;

            $value = $this->cache->rememberForever($generatedKey, function () use ($repository, $generatedKey) {
                return $repository->get($generatedKey);
            });
        } else {
            $value = $this->repository->get($generatedKey, $default);
        }

        if (!is_null($value)) {
            $value = $this->unserializeValue($this->isEncryptionEnabled() ? $this->encrypter->decrypt($value) : $value);
        } else {
            $value = $default;
        }

        $this->fire('get', $key, [$key, $value, $default]);

        $this->context(null);

        return $value;
    }