docs: def cmp_name(first_node, second_node):
      """
      Compare two name recursively.
  
      :param first_node: First node
  
      :param second_node: Second state
  
      :return: 0 if same name, 1 if names are differents.
      """
      if len(first_node.children) == len(second_node.children):
          for first_child, second_child in zip(first_node.children,
                                               second_node.children):
              for key in first_child.__dict__.keys():
                  if key.startswith('_'):
                      continue
                  if first_child.__dict__[key] != second_child.__dict__[key]:
                      return 1
              ret_val = cmp_name(first_child, second_child)
              if ret_val != 0:
                  return 1
      else:
          return 1
      return 0