code: def get_legacy_list_surrogate_generation_step_as_dict() -> (
      Dict[str, Any]
  ):
      """
      For use ensuring backwards compatibility loading the now deprecated ListSurrogate.
      """
  
      # Generated via `get_sobol_botorch_modular_saas_fully_bayesian_single_task_gp_qnei`
      # before new multi-Surrogate Model and new Surrogate diffs D42013742
      return {
          "__type": "GenerationStep",
          "model": {"__type": "Models", "name": "BOTORCH_MODULAR"},
          "num_trials": -1,
          "min_trials_observed": 0,
          "completion_criteria": [],
          "max_parallelism": 1,
          "use_update": False,
          "enforce_num_trials": True,
          "model_kwargs": {
              "surrogate": {
                  "__type": "ListSurrogate",
                  "botorch_submodel_class_per_outcome": {},
                  "botorch_submodel_class": {
                      "__type": "Type[Model]",
                      "index": "SaasFullyBayesianSingleTaskGP",
                      "class": "<class 'botorch.models.model.Model'>",
                  },
                  "submodel_options_per_outcome": {},
                  "submodel_options": {},
                  "mll_class": {
                      "__type": "Type[MarginalLogLikelihood]",
                      "index": "ExactMarginalLogLikelihood",
                      "class": (
                          "<class 'gpytorch.mlls.marginal_log_likelihood."
                          "MarginalLogLikelihood'>"
                      ),
                  },
                  "mll_options": {},
                  "submodel_outcome_transforms": [
                      {
                          "__type": "Standardize",
                          "index": {
                              "__type": "Type[OutcomeTransform]",
                              "index": "Standardize",
                              "class": (
                                  "<class 'botorch.models.transforms.outcome."
                                  "OutcomeTransform'>"
                              ),
                          },
                          "class": (
                              "<class 'botorch.models.transforms.outcome.Standardize'>"
                          ),
                          "state_dict": {
                              "m": 1,
                              "outputs": None,
                              "min_stdv": 1e-8,
                          },
                      }
                  ],
                  "submodel_input_transforms": [
                      {
                          "__type": "Normalize",
                          "index": {
                              "__type": "Type[InputTransform]",
                              "index": "Normalize",
                              "class": (
                                  "<class 'botorch.models.transforms.input."
                                  "InputTransform'>"
                              ),
                          },
                          "class": "<class 'botorch.models.transforms.input.Normalize'>",
                          "state_dict": {
                              "d": 3,
                              "indices": None,
                              "transform_on_train": True,
                              "transform_on_eval": True,
                              "transform_on_fantasize": True,
                              "reverse": False,
                              "min_range": 1e-08,
                              "learn_bounds": False,
                          },
                      }
                  ],
                  "submodel_covar_module_class": None,
                  "submodel_covar_module_options": {},
                  "submodel_likelihood_class": None,
                  "submodel_likelihood_options": {},
              },
              "botorch_acqf_class": {
                  "__type": "Type[AcquisitionFunction]",
                  "index": "qNoisyExpectedImprovement",
                  "class": "<class 'botorch.acquisition.acquisition.AcquisitionFunction'>",  # noqa
              },
          },
          "model_gen_kwargs": {},
          "index": -1,
          "should_deduplicate": False,
      }
  
imports: from logging import Logger
  from typing import Any, Dict, List, Optional, Type
  import numpy
  from ax.core.base_trial import TrialStatus
  from ax.core.experiment import Experiment
  from ax.core.observation import Observation, ObservationData, ObservationFeatures
  from ax.core.optimization_config import OptimizationConfig
  from ax.core.parameter import FixedParameter, RangeParameter
  from ax.core.search_space import SearchSpace
  from ax.modelbridge.base import ModelBridge
  from ax.modelbridge.dispatch_utils import choose_generation_strategy
  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.registry import Models
  from ax.modelbridge.transforms.base import Transform
  from ax.modelbridge.transforms.int_to_float import IntToFloat
  from ax.modelbridge.transition_criterion import MaxGenerationParallelism, MaxTrials, MinimumPreferenceOccurances, MinTrials
  from ax.models.torch.botorch_modular.surrogate import Surrogate
  from ax.utils.common.logger import get_logger
  from ax.utils.testing.core_stubs import get_experiment, get_search_space, get_search_space_for_value
  from botorch.acquisition.monte_carlo import qNoisyExpectedImprovement
  from botorch.models.fully_bayesian import SaasFullyBayesianSingleTaskGP
  from botorch.models.transforms.input import InputTransform, Normalize
  from botorch.models.transforms.outcome import OutcomeTransform, Standardize
label_desc: Use image node_id 15 for calling a global function with example usage: get_legacy_list_surrogate_generation_step_as_dict() and returns: dict