code: def __search(self, obj, item, parent="root", parents_ids=frozenset({})):
          
  
          if self.__skip_this(item, parent):
              return
  
          elif isinstance(obj, strings) and isinstance(item, strings):
              self.__search_str(obj, item, parent)
  
          elif isinstance(obj, strings) and isinstance(item, numbers):
              return
  
          elif isinstance(obj, numbers):
              self.__search_numbers(obj, item, parent)
  
          elif isinstance(obj, MutableMapping):
              self.__search_dict(obj, item, parent, parents_ids)
  
          elif isinstance(obj, tuple):
              self.__search_tuple(obj, item, parent, parents_ids)
  
          elif isinstance(obj, (set, frozenset)):
              if self.warning_num < 10:
                  logger.warning(
                      "Set item detected in the path."
                      "'set' objects do NOT support indexing. But DeepSearch will still report a path."
                  )
                  self.warning_num += 1
              self.__search_iterable(obj, item, parent, parents_ids)
  
          elif isinstance(obj, Iterable):
              self.__search_iterable(obj, item, parent, parents_ids)
  
          else:
              self.__search_obj(obj, item, parent, parents_ids)
docs: The main search method