code: def get_node_samples(self):
      if self.node_to_samples is not None:
          return self.node_to_samples
  
      node_to_samples = defaultdict(list)
      for i in range(self.X_train.shape[0]):
          path = self.predict_path(self.X_train[i])
          for node in path:
              node_to_samples[node.id].append(i)
  
      self.node_to_samples = node_to_samples
      return self.node_to_samples
  
imports: from collections import defaultdict
  from typing import List, Mapping
  import numpy
  import tensorflow_decision_forests
  from tensorflow_decision_forests.component.py_tree.node import LeafNode
  from tensorflow_decision_forests.keras import RandomForestModel
  from tensorflow_decision_forests.tensorflow.core import Task
  from dtreeviz.models.shadow_decision_tree import ShadowDecTree, VisualisationNotYetSupportedError
label_desc: Use image node_id 14 for calling the ShadowTensorflowTree obj's underlying member method code with example usage: obj.get_node_samples() and returns: self, self