code: def setUp(self) -> None:
      # setting up experiment and generation strategy
      self.runner = SyntheticRunner()
      self.branin_experiment = Experiment(
          name="branin_test_experiment",
          search_space=get_branin_search_space(),
          runner=self.runner,
          optimization_config=OptimizationConfig(
              objective=Objective(
                  metric=BraninMetric(
                      name="branin", param_names=["x1", "x2"]
                  ),
                  minimize=True,
              ),
          ),
          is_test=True,
      )
      self.branin_experiment._properties[
          Keys.IMMUTABLE_SEARCH_SPACE_AND_OPT_CONF
      ] = True
      self.generation_strategy = GenerationStrategy(
          steps=[
              GenerationStep(
                  model=Models.SOBOL,
                  num_trials=NUM_SOBOL,
                  max_parallelism=NUM_SOBOL,
              ),
              GenerationStep(model=Models.GPEI, num_trials=-1),
          ]
      )
  
file_path: Ax/ax/modelbridge/tests/test_model_fit_metrics.py
imports: from typing import cast, Dict
  from ax.core.experiment import Experiment
  from ax.core.objective import Objective
  from ax.core.optimization_config import OptimizationConfig
  from ax.metrics.branin import BraninMetric
  from ax.modelbridge.generation_strategy import GenerationStep, GenerationStrategy
  from ax.modelbridge.registry import Models
  from ax.runners.synthetic import SyntheticRunner
  from ax.service.scheduler import get_fitted_model_bridge, Scheduler, SchedulerOptions
  from ax.utils.common.constants import Keys
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_branin_search_space
label_desc: Use image node_id 1 for calling the TestModelBridgeFitMetrics obj's underlying member method code with example usage: obj.setUp() without return types