docstr: This patched `save` method fix `KernelExplainer.save`.
  Issues in original `KernelExplainer.save`:
   - It saves model by calling model.save, but shap.utils._legacy.Model has no save method
   - It tries to save "masker", but there's no "masker" in KernelExplainer
   - It does not save "KernelExplainer.data" attribute, the attribute is required when
     loading back
  Note: `model_saver` and `masker_saver` are meaningless argument for `KernelExplainer.save`,
  the model in "KernelExplainer" is an instance of `shap.utils._legacy.Model`
  (it wraps the predict function), we can only use pickle to dump it.
  and no `masker` for KernelExplainer so `masker_saver` is meaningless.
  but I preserve the 2 argument for overridden API compatibility.
code: def save(
      self, out_file, model_saver=None, masker_saver=None
  ):  # pylint: disable=unused-argument
      """
      This patched `save` method fix `KernelExplainer.save`.
      Issues in original `KernelExplainer.save`:
       - It saves model by calling model.save, but shap.utils._legacy.Model has no save method
       - It tries to save "masker", but there's no "masker" in KernelExplainer
       - It does not save "KernelExplainer.data" attribute, the attribute is required when
         loading back
      Note: `model_saver` and `masker_saver` are meaningless argument for `KernelExplainer.save`,
      the model in "KernelExplainer" is an instance of `shap.utils._legacy.Model`
      (it wraps the predict function), we can only use pickle to dump it.
      and no `masker` for KernelExplainer so `masker_saver` is meaningless.
      but I preserve the 2 argument for overridden API compatibility.
      """
      pickle.dump(type(self), out_file)
      with Serializer(out_file, "shap.Explainer", version=0) as s:
          s.save("model", self.model)
          s.save("link", self.link)
          s.save("data", self.data)
  
file_path: mlflow/mlflow/models/evaluation/_shap_patch.py
imports: import pickle
  import numpy
  import shap
  from shap._serializable import Deserializer, Serializable, Serializer
label_desc: Use image node_id 2 for calling the _PatchedKernelExplainer obj's underlying member method code with example usage: obj.save(out_file, model_saver, masker_saver) without return types