code: def _shrink(self):
      if hasattr(self.estimator_, "tree_"):
          self._shrink_tree(self.estimator_.tree_, self.reg_param)
      elif hasattr(self.estimator_, "estimators_"):
          for t in self.estimator_.estimators_:
              if isinstance(t, np.ndarray):
                  assert (
                      t.size == 1
                  ), "multiple trees stored under tree_?"
                  t = t[0]
              self._shrink_tree(t.tree_, self.reg_param)
  
imports: import time
  from copy import deepcopy
  from typing import List
  import numpy
  from sklearn import datasets
  from sklearn.base import BaseEstimator, RegressorMixin, ClassifierMixin
  from sklearn.metrics import r2_score, mean_squared_error, log_loss
  from sklearn.model_selection import cross_val_score, KFold
  from sklearn.model_selection import train_test_split
  from sklearn.tree import DecisionTreeRegressor, DecisionTreeClassifier, export_text
  from sklearn.ensemble import GradientBoostingClassifier, GradientBoostingRegressor, RandomForestRegressor
  from imodels.util import checks
  from imodels.util.arguments import check_fit_arguments
  from imodels.util.tree import compute_tree_complexity
label_desc: Use image node_id 5 for calling the HSTree obj's underlying member method code with example usage: obj._shrink() without return types