code: def add_child(self, key, value):
          
          if type(value) in (list, tuple, dict):
              if type(value)==dict:
                  for k in value.keys():
                      self.add_child(k, value[k])
                  return
              i = 0
              for child in value:
                  self.add_child(key[i], child)
                  i = i + 1
              return
  
          if hasattr(value, 'attributes'):
              value.attributes['data-parent-widget'] = self.identifier
              value._parent = self
  
          if key in self.children:
              self._render_children_list.remove(key)
          self._render_children_list.append(key)
  
          self.children[key] = value
docs: Adds a child to the Tag
  
          To retrieve the child call get_child or access to the Tag.children[key] dictionary.
  
          Args:
              key (str):  Unique child's identifier, or iterable of keys
              value (Tag, str): can be a Tag, an iterable of Tag or a str. In case of iterable
                  of Tag is a dict, each item's key is set as 'key' param