docs: def search(self, q=None, advanced=False, limit=None, info=False, reset_query=True):
          """Execute a search and return the results, up to the ``SEARCH_LIMIT``.
  
          Arguments:
              q (str): The query to execute. **Default:** The current helper-formed query, if any.
                      There must be some query to execute.
              advanced (bool): Whether to treat ``q`` as a basic or advanced query.
                  Has no effect if a query is not supplied in ``q``.
                  **Default:** ``False``
              limit (int): The maximum number of results to return.
                      The max for this argument is the ``SEARCH_LIMIT`` imposed by Globus Search.
                      **Default:** ``SEARCH_LIMIT`` for advanced queries, 10 for basic queries.
              info (bool): If ``False``, search will return a list of the results.
                      If ``True``, search will return a tuple containing the results list
                      and other information about the query.
                      **Default:** ``False``.
              reset_query (bool): If ``True``, will destroy the current query after execution
                      and start a fresh one.
                      If ``False``, will keep the current query set.
                      Has no effect if a query is supplied in ``q``.
                      **Default:** ``True``.
  
          Returns:
              If ``info`` is ``False``, *list*: The search results.
              If ``info`` is ``True``, *tuple*: The search results,
              and a dictionary of query information.
  
          Note:
              If a query is specified in ``q``, the current, helper-built query (if any)
              will not be used in the search or modified.
          """
          # If q not specified, use internal, helper-built query
          if q is None:
              res = self._ex_search(info=info, limit=limit)
              if reset_query:
                  self.reset_query()
              return res
          # If q was specified, run a totally independent query with a new SearchHelper
          # Init SearchHelper with query, then call .search(), which will use it
          # ._ex_search() not canonical way to perform single-statement search, so not used
          # reset_query is False to skip the unnecessary query reset - SH not needed after search
          else:
              return SearchHelper(index=self.index, search_client=self.__search_client, q=q,
                                  advanced=advanced).search(info=info, limit=limit,
                                                            reset_query=False)