code: def get_split_samples(self, id):
      samples = np.array(self.get_node_samples()[id])
      node_X_data = self.X_train[samples, self.get_node_feature(id)]
      split = self.get_node_split(id)
  
      left = np.nonzero(node_X_data < split)[0]
      right = np.nonzero(node_X_data >= split)[0]
  
      return left, right
  
imports: import json
  import math
  from collections import defaultdict
  from typing import List, Mapping
  import numpy
  from dtreeviz.models.shadow_decision_tree import VisualisationNotYetSupportedError
  from dtreeviz.models.shadow_decision_tree import ShadowDecTree
  from dtreeviz import utils
  import xgboost
  from xgboost.core import Booster
label_desc: Use image node_id 12 for calling the ShadowXGBDTree obj's underlying member method code with example usage: obj.get_split_samples(id) and returns: left,  right