code: def _run_GS_for_N_rounds(
      self, gs: GenerationStrategy, exp: Experiment, num_rounds: int
  ) -> List[int]:
      could_gen = []
      for _ in range(num_rounds):
          (
              num_trials_to_gen,
              opt_complete,
          ) = gs.current_generator_run_limit()
          self.assertFalse(opt_complete)
          could_gen.append(num_trials_to_gen)
          trials = []
  
          for _ in range(num_trials_to_gen):
              gr = gs.gen(
                  experiment=exp,
                  pending_observations=get_pending(experiment=exp),
              )
              trials.append(
                  exp.new_trial(gr).mark_running(
                      no_runner_required=True
                  )
              )
  
          for trial in trials:
              exp.attach_data(
                  get_branin_data(trial_indices=[trial.index])
              )
              trial.mark_completed()
  
      return could_gen
  
imports: import logging
  from typing import cast, List
  from unittest import mock
  from unittest.mock import MagicMock, patch
  from ax.core.arm import Arm
  from ax.core.base_trial import TrialStatus
  from ax.core.experiment import Experiment
  from ax.core.generator_run import GeneratorRun
  from ax.core.observation import ObservationFeatures
  from ax.core.parameter import ChoiceParameter, FixedParameter, Parameter, ParameterType
  from ax.core.search_space import SearchSpace
  from ax.core.utils import get_pending_observation_features_based_on_trial_status
  from ax.exceptions.core import DataRequiredError, UnsupportedError, UserInputError
  from ax.exceptions.generation_strategy import GenerationStrategyCompleted, GenerationStrategyMisconfiguredException, GenerationStrategyRepeatedPoints, MaxParallelismReachedException
  from ax.modelbridge.discrete import DiscreteModelBridge
  from ax.modelbridge.factory import get_sobol
  from ax.modelbridge.generation_node import GenerationNode
  from ax.modelbridge.generation_strategy import GenerationStep, GenerationStrategy
  from ax.modelbridge.model_spec import ModelSpec
  from ax.modelbridge.random import RandomModelBridge
  from ax.modelbridge.registry import Cont_X_trans, MODEL_KEY_TO_MODEL_SETUP, Models
  from ax.modelbridge.torch import TorchModelBridge
  from ax.modelbridge.transition_criterion import MaxGenerationParallelism, MaxTrials, MinTrials
  from ax.models.random.sobol import SobolGenerator
  from ax.utils.common.equality import same_elements
  from ax.utils.common.mock import mock_patch_method_original
  from ax.utils.common.testutils import TestCase
  from ax.utils.common.typeutils import not_none
  from ax.utils.testing.core_stubs import get_branin_data, get_branin_experiment, get_choice_parameter, get_data, get_experiment_with_multi_objective, get_hierarchical_search_space_experiment
label_desc: Use image node_id 31 for calling the TestGenerationStrategy obj's underlying member method code with example usage: obj._run_GS_for_N_rounds(gs, exp, num_rounds) and returns: could_gen