class_docstr: Wrapper that calls `suggest` a few times until the wrapped algo produces a new trial.
code: def suggest(self, num: int = 1) -> list[Trial]:
      trials: list[Trial] = []
  
      for suggest_attempt in range(1, self.max_suggest_attempts + 1):
          trials = super().suggest(num)
          if trials:
              if suggest_attempt > 1:
                  logger.debug(
                      f"Succeeded in suggesting new trials after {suggest_attempt} attempts."
                  )
              return trials
  
          if self.is_done:
              logger.debug(
                  f"Algorithm is done! (after {suggest_attempt} sampling attempts)."
              )
              break
  
      logger.warning(
          f"Unable to sample a new trial from the algorithm, even after "
          f"{self.max_suggest_attempts} attempts! Returning an empty list."
      )
      return []
  
file_path: orion/src/orion/core/worker/algo_wrappers/insist_suggest.py
imports: from __future__ import annotations
  import copy
  from logging import getLogger
  from orion.algo.space import Space
  from orion.core.worker.algo_wrappers.algo_wrapper import AlgoT, AlgoWrapper
  from orion.core.worker.trial import Trial
label_desc: Use image node_id 4 for calling the InsistSuggest obj's underlying member method code with example usage: obj.suggest(num) and returns: list, trials