private function parseGroup(array $item) : Group
    {
        $type = strtoupper($item['group']);

        if ( ! in_array($type, self::GROUP_TYPES))
        {
            throw new OptionLoaderException(
                "Unrecognised group type $type",
                $item
            );
        }

        $groupClass = self::GROUP_NAMESPACE."${type}Group";

        $group = new $groupClass();

        $name = $item['name'] ?? null;

        if (isset($name))
        {
            $group->setName($name);

            $this->groupCatalogue[$group->getName()] = $group;
        }

        foreach ($this->itterator($item['members']) as $object)
        {
            $group->add($object);
        }

        return $group;
    }