private function internalGet(array $array, $key, $exists = false)
    {
        if (isset($array[$key])) {
            return (!$exists) ? $array[$key] : true;
        }

        $parts = explode('.', $key);

        foreach ($parts as $part) {
            if (!is_array($array) || !isset($array[$part])) {
                return (!$exists) ? null : false;
            }

            $array = $array[$part];
        }

        return (!$exists) ? $array : true;
    }