code: def generate_params(
      self, step, models, results_path, stacked_models, total_time_limit
  ):
      try:
          models_cnt = len(models)
          if step == "adjust_validation":
              return self.adjust_validation_params(models_cnt)
          elif step == "simple_algorithms":
              return self.simple_algorithms_params(models_cnt)
          elif step == "default_algorithms":
              return self.default_params(models_cnt)
          elif "fairness" in step:
              return self.fairness_optimization(models, results_path)
          elif step == "not_so_random":
              return self.get_not_so_random_params(models_cnt, models)
          elif step == "mix_encoding":
              return self.get_mix_categorical_strategy(
                  models, total_time_limit
              )
          elif step == "loo_encoding":
              return self.get_loo_categorical_strategy(
                  models, total_time_limit
              )
          elif step == "golden_features":
              return self.get_golden_features_params(
                  models, results_path, total_time_limit
              )
          elif step == "kmeans_features":
              return self.get_kmeans_features_params(
                  models, results_path, total_time_limit
              )
          elif step == "insert_random_feature":
              return self.get_params_to_insert_random_feature(
                  models, total_time_limit
              )
          elif step == "features_selection":
              return self.get_features_selection_params(
                  self.filter_random_feature_model(models),
                  results_path,
                  total_time_limit,
              )
          elif "hill_climbing" in step:
              return self.get_hill_climbing_params(
                  self.filter_random_feature_model(models)
              )
          elif step == "boost_on_errors":
              return self.boost_params(
                  models, results_path, total_time_limit
              )
          elif step == "ensemble":
              return [
                  {
                      "model_type": "ensemble",
                      "is_stacked": False,
                      "name": "Ensemble",
                      "status": "initialized",
                      "final_loss": None,
                      "train_time": None,
                  }
              ]
          elif step == "stack":
              return self.get_params_stack_models(stacked_models)
          elif step == "ensemble_stacked":
              # do we have stacked models?
              any_stacked = False
              for m in models:
                  if m._is_stacked:
                      any_stacked = True
              if not any_stacked:
                  return []
  
              return [
                  {
                      "model_type": "ensemble",
                      "is_stacked": True,
                      "name": "Ensemble_Stacked",
                      "status": "initialized",
                      "final_loss": None,
                      "train_time": None,
                  }
              ]
  
          # didnt find anything matching the step, return empty array
          return []
      except Exception as e:
          import traceback
  
          print(str(e), traceback.format_exc())
          return []
  
imports: import copy
  import json
  import logging
  import os
  import numpy
  import pandas
  from sklearn.preprocessing import OneHotEncoder
  from supervised.algorithms.catboost import catboost_eval_metric
  from supervised.algorithms.lightgbm import lightgbm_eval_metric
  from supervised.algorithms.registry import BINARY_CLASSIFICATION, MULTICLASS_CLASSIFICATION, REGRESSION, AlgorithmsRegistry
  from supervised.algorithms.xgboost import xgboost_eval_metric
  from supervised.preprocessing.label_encoder import LabelEncoder
  from supervised.preprocessing.preprocessing_categorical import PreprocessingCategorical
  from supervised.tuner.hill_climbing import HillClimbing
  from supervised.tuner.preprocessing_tuner import PreprocessingTuner
  from supervised.tuner.random_parameters import RandomParameters
  from supervised.utils.config import LOG_LEVEL
  from supervised.utils.utils import dump_data, load_data
label_desc: Use image node_id 8 for calling the MljarTuner obj's underlying member method code with example usage: obj.generate_params(step, models, results_path, stacked_models, total_time_limit) and returns: list, self, list, self, self, self, self, self, self, self, self, self, self, self, self, list, self, list, list