protected function deleteMappedKey($key, $value = null, $level=0)
    {
        if (is_null($value)) {
            $value = $this->getDriver()->get($key);
        }

        if ($level > 0) {
            $key = $key . self::LEVEL_SEPARATOR . $level;
        }

        $success = true;

        if ($this->isSplit($value)) {

            $valueParts = [];
            foreach ($this->unSerializeMap($value) as $mappedKey) {
                $mappedKey = $this->transformReferenceToMappedKey($mappedKey);
                $valueParts[$this->getMappedKeyIndex($mappedKey, $key)] = $this->getDriver()->get($mappedKey);
                $success = $success && $this->getDriver()->del($mappedKey);
            }

            uksort($valueParts, 'strnatcmp');
            $value = implode('', $valueParts);
            if ($this->isSplit($value)) {
                $success = $success && $this->deleteMappedKey($key, $value, $level + 1);
            }

        }
        return $success;
    }