docs: def _add_element_by_names(src, names, value, override=False, digit=True):
      """
      Internal method recursive to Add element into a list or dict easily using
      a path.
      =============   =============   =======================================
      Parameter       Type            Description
      =============   =============   =======================================
      src             list or dict    element where add the value.
      names           list            list with names to navigate in src.
      value           ¿all?           value to add in src.
      override        boolean         Override the value in path src.
      =============   =============   =======================================
      Returns: src with added value
      """
  
      if src is None:
          return False
  
      else:
  
          if names and names[0]:
              head, *rest = names
  
              # list and digit head
              if isinstance(src, list):
                  if force_list(digit)[0] and head.isdigit():
                      head = int(head)
  
                      # if src is a list and lenght <= head
                      if len(src) <= head:
                          src.extend([""] * (head + 1 - len(src)))
  
              # head not in src :(
              elif isinstance(src, dict):
                  if head not in src:
                      src[head] = [""] * (int(rest[0]) + 1) if rest and force_list(digit)[0] and rest[0].isdigit() else {}
  
              # more heads in rest
              if rest:
  
                  # Head find but isn't a dict or list to navigate for it.
                  if not isinstance(src[head], (dict, list)):
  
                      # only could be str for dict or int for list
                      src[head] = [""] * (int(rest[0]) + 1) if force_list(digit)[0] and rest[0].isdigit() else {}
  
                      digit = digit if not digit or not isinstance(digit, list) else digit[1:]
  
                      if not force_list(digit)[0] and rest and str(rest[0]).isdigit() and isinstance(src[head], list) and override:
                          src[head] = {}
  
                      _add_element_by_names(src[head], rest, value, override=override, digit=digit)
  
                  else:
  
                      digit = digit if not digit or not isinstance(digit, list) else digit[1:]
  
                      if not force_list(digit)[0] and rest and str(rest[0]).isdigit() and isinstance(src[head], list) and override:
                          src[head] = {}
  
                      _add_element_by_names(src[head], rest, value, override=override, digit=digit)
  
              # it's final head
              else:
  
                  if not override:
  
                      if isinstance(src, list) and isinstance(head, int):
  
                          if src[head] == '':
                              src[head] = value
                          else:
                              src.append(value)
  
                      elif isinstance(src[head], list):
                          src[head].append(value)
  
                      elif isinstance(src[head], dict) and isinstance(value, dict):
                          src[head].update(value)
  
                      else:
                          src[head] = value
  
                  else:
                      src[head] = value
  
          return src