private static function _traverse(self $instance, array $array, string $key) 
    {
        $keys = explode('.', $key);
        $firstKey = $keys[0];

        if (count($keys) === 1) {
            if ($firstKey === '*') {
                return $array;
            } else if (array_key_exists($firstKey, $array) === true) {
                return $array[$firstKey];
            } else {
                $instance->keys[] = $firstKey;

                throw new OutOfBoundsException("Undefined offset: {$instance->_key()}");
            }
        } else {
            $instance->keys[] = $firstKey;

            $otherKeysList = array_slice($keys, 1);
            $otherKeys = implode('.', $otherKeysList);

            if ($firstKey === '*') {
                $value = [];

                foreach ($array as $item) {
                    if (is_array($item) === false) {
                        $instance->keys[] = $otherKeysList[0];

                        throw new OutOfBoundsException("Undefined offset: {$instance->_key()}");
                    }

                    array_push($value, static::_traverse($instance, $item, $otherKeys));
                }

                return $value;
            } else if (is_numeric($firstKey) === true && is_int((int) $firstKey) === true) {
                if (array_key_exists($firstKey, $array) === true) {
                    $value = $array[$firstKey];

                    return static::_traverse($instance, $value, $otherKeys);
                } else {
                    throw new OutOfBoundsException("Undefined offset: {$instance->_key()}");
                }
            } else {
                if (array_key_exists($firstKey, $array) === true) {
                    $value = $array[$firstKey];

                    if (is_array($value) === false) {
                        $instance->keys[] = $otherKeysList[0];

                        throw new OutOfBoundsException("Undefined offset: {$instance->_key()}");
                    }

                    return static::_traverse($instance, $value, $otherKeys);
                } else {
                    throw new OutOfBoundsException("Undefined offset: {$instance->_key()}");
                }
            }
        }
    }