code: def _get_tree_model_parameter_value(self, name):
      if ShadowSparkTree._get_pyspark_major_version() >= 3:
          if name == "minInstancesPerNode":
              return self.tree_model.getMinInstancesPerNode()
          elif name == "maxDepth":
              return self.tree_model.getMaxDepth()
          elif name == "impurity":
              return self.tree_model.getImpurity()
      elif ShadowSparkTree._get_pyspark_major_version() >= 2:
          if name == "minInstancesPerNode":
              return self.tree_model.getOrDefault("minInstancesPerNode")
          elif name == "maxDepth":
              return self.tree_model.getOrDefault("maxDepth")
          elif name == "impurity":
              return self.tree_model.getOrDefault("impurity")
      else:
          raise Exception("dtreeviz supports spark versions >= 2")
  
imports: from abc import ABC
  from collections import defaultdict
  from typing import List, Mapping
  import numpy
  import pyspark
  from dtreeviz.models.shadow_decision_tree import ShadowDecTree
  from dtreeviz.utils import criterion_remapping
  from pyspark.ml.classification import DecisionTreeClassificationModel
  from pyspark.ml.regression import DecisionTreeRegressionModel
label_desc: Use image node_id 31 for calling the ShadowSparkTree obj's underlying member method code with example usage: obj._get_tree_model_parameter_value(name) and returns: self, self, self, self, self, self