code: def _maybe_call_fn(
      fn, fn_arg_list, fn_result=None, description="log_likelihood"
  ):
      """Helper which computes `fn_result` if needed."""
      fn_arg_list = (
          list(fn_arg_list)
          if mcmc_util.is_list_like(fn_arg_list)
          else [fn_arg_list]
      )
      if fn_result is None:
          fn_result = fn(*fn_arg_list)
      if not dtype_util.is_floating(fn_result.dtype):
          raise TypeError(
              "`{}` must be a `Tensor` with `float` `dtype`.".format(
                  description
              )
          )
      return fn_result
  
imports: import collections
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.mcmc import kernel
  from tensorflow_probability.python.mcmc.internal import util
label_desc: Use image node_id 3 for calling a global function with example usage: _maybe_call_fn(fn, fn_arg_list, fn_result, description) and returns: fn_result