code: def get_or_add_group(self, nested_names, name_attr='id'):
          
          group = self.tree.getroot()
          # Drill down through the names until we find the desired group
          while len(nested_names):
              prev_group = group
              next_name = nested_names.pop(0)
              for elem in group.iterfind(SVG_GROUP_TAG, SVG_NAMESPACE):
                  if elem.get(name_attr) == next_name:
                      group = elem
                      break
  
              if prev_group is group:
                  # The group we're looking for does not exist, so let's
                  # create the group structure
                  nested_names.insert(0, next_name)
  
                  while nested_names:
                      next_name = nested_names.pop(0)
                      group = self.add_group({'id': next_name}, group)
                  # Now nested_names will be empty, so the topmost
                  # while-loop will end
          return group
docs: Get a group from the tree, or add a new one with the given
          name structure.
  
          `nested_names` is a list of strings which represent group names.
          Each group name will be nested inside of the previous group name.
  
          `name_attr` is the group attribute that is being used to
          represent the group's name. Default is 'id', but some SVGs may
          contain custom name labels, like 'inkscape:label'.
  
          Returns the requested group. If the requested group did not
          exist, this function will create it, as well as all parent
          groups that it requires. All created groups will be left with
          blank attributes.