public function getDescendant(
        SimpleXMLElement $element,
        array $path
    ) {
        foreach ($path as $childProperties) {
            if (!is_array($childProperties)
                || empty($childProperties)
            ) {
                throw new InvalidArgumentException('Invalid descendant path');
            }

            $name       = array_shift($childProperties);
            $attributes = count($childProperties)
                ? array_shift($childProperties)
                : [];

            $element = $this->getChild($element, $name, $attributes);
        }

        return $element;
    }