code: def lower_credit(i, value, M, values, clustering):
      if i < M:
          values[i] += value
          return
      li = int(clustering[i - M, 0])
      ri = int(clustering[i - M, 1])
      group_size = int(clustering[i - M, 3])
      lsize = int(clustering[li - M, 3]) if li >= M else 1
      rsize = int(clustering[ri - M, 3]) if ri >= M else 1
      assert lsize + rsize == group_size
      values[i] += value
      lower_credit(
          li, values[i] * lsize / group_size, M, values, clustering
      )
      lower_credit(
          ri, values[i] * rsize / group_size, M, values, clustering
      )
  
file_path: shap/shap/explainers/_partition.py
imports: import queue
  import time
  import numpy
  from numba import njit
  from tqdm.auto import tqdm
  from ..None import Explanation, links
  from ..models import Model
  from ..utils import MaskedModel, OpChain, make_masks, safe_isinstance
  from ._explainer import Explainer
label_desc: Use image node_id 2 for calling a global function with example usage: lower_credit(i, value, M, values, clustering) without return types