code: def save(self, path: str = None, verbose=True) -> str:
      self._load_model = self.model is not None
      __model = self.model
      self.model = None
      # save this AbstractModel object without NN weights
      path = super().save(path=path, verbose=verbose)
      self.model = __model
  
      if self._load_model:
          automm_nn_path = os.path.join(path, self._NN_MODEL_NAME)
          self.model.save(automm_nn_path)
          logger.log(
              15,
              f"\tSaved AutoMM model weights and model hyperparameters to '{automm_nn_path}'.",
          )
      self._load_model = None
      return path
  
imports: import logging
  import os
  from typing import Dict, Optional
  import pandas
  from autogluon.common.features.types import R_CATEGORY, R_FLOAT, R_INT, R_OBJECT, S_IMAGE_PATH, S_TEXT, S_TEXT_AS_CATEGORY, S_TEXT_NGRAM, S_TEXT_SPECIAL
  from autogluon.common.utils.resource_utils import ResourceManager
  from autogluon.common.utils.try_import import try_import_autogluon_multimodal
  from autogluon.core.constants import BINARY, MULTICLASS, REGRESSION
  from autogluon.core.models import AbstractModel
label_desc: Use image node_id 9 for calling the MultiModalPredictorModel obj's underlying member method code with example usage: obj.save(path, verbose) and returns: path