code: def _compose_custom_getters(getter_a, getter_b):
    
    if not getter_a:
      return getter_b
    if not getter_b:
      return getter_a
  
    def getter_fn(getter, *args, **kwargs):
      return getter_b(functools.partial(getter_a, getter), *args, **kwargs)
  
    return getter_fn
docs: Compose two custom getters.
  
    Example use:
    tf.get_variable_scope().set_custom_getter(
      compose_custom_getters(tf.get_variable_scope().custom_getter, new_getter))
  
    This composes getters in the same way as creating a new variable scope with
    the new_getter, but it does not actually create a new variable scope.
  
    Args:
      getter_a: a custom getter - generally from the existing variable scope.
      getter_b: a custom getter
  
    Returns:
      a custom getter