code: def entrez_sets_of_results(url, retstart=False, retmax=False, count=False) -> Optional[List[requests.Response]]:
      
      if not retstart:
          retstart = 0
  
      if not retmax:
          retmax = 500
  
      if not count:
          count = retmax
  
      retmax = 500  # Entrez can return a max of 500
      while retstart < count:
          diff = count - retstart
          if diff < 500:
              retmax = diff
  
          _url = url + f'&retstart={retstart}&retmax={retmax}'
          resp = entrez_try_get_multiple_times(_url)
          if resp is None:
              return
  
          retstart += retmax
          yield resp
docs: Gets sets of results back from Entrez.
  
      Entrez can only return 500 results at a time. This creates a generator that gets results by incrementing
      retstart and retmax.
  
      Parameters
      ----------
      url : str
          The Entrez API url to use.
      retstart : int
          Return values starting at this index.
      retmax : int
          Return at most this number of values.
      count : int
          The number of results returned by EQuery.
  
      Yields
      ------
      requests.Response