public function get(string ...$path)
    {
        if (count($path) === 1) {
            if (!$this->offsetExists($path[0])) {
                throw ConfigKeyNotFoundException::fromPath($path);
            }

            return $this->offsetGet($path[0]);
        }

        $keys = array_reverse($path);
        $arr  = $this->getArrayCopy();
        while (count($keys) > 0) {
            $key = array_pop($keys);
            if (!isset($arr[$key])) {
                throw ConfigKeyNotFoundException::fromPath($path);
            }

            $arr = $arr[$key];
        }

        return $arr;
    }