public function offsetUnset($offset)
    {
        $keys = explode($this->keySeparator, $offset);

        $keyCount = count($keys);

        $array = &$this->values;

        while ($keyCount > 1) {
            $key = array_shift($keys);

            if (isset($array[$key]) && is_array($array[$key])) {
                $array = &$array[$key];
            }

            --$keyCount;
        }

        unset($array[array_shift($keys)]);
    }