code: def _bijector_type_str(bij):
      """Recursively format types of component bijectors."""
      # Example output: "JointMap({a: Invert(Split), b: Chain([Exp, Scale])})"
      s = type(bij).__name__
      if hasattr(bij, "bijectors"):  # bij is a Composition.
          s = "{}({})".format(
              s,
              tf.nest.map_structure(_bijector_type_str, bij.bijectors),
          )
          # Remove quotes around individual bijectors, e.g.,
          # `Chain(['Exp']) -> Chain([Exp])`. We must do this at every level of the
          # recursion; otherwise `str(structure_of_strings)` will start to use
          # double-quotes `"` and escaped quotes `\'` which becomes a big mess.
          s = s.replace("'", "")
      elif hasattr(bij, "bijector"):  # bij is Invert.
          s = "{}({})".format(s, _bijector_type_str(bij.bijector))
      return s
  
imports: import collections
  import functools
  import sys
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import bijector
  from tensorflow_probability.python.bijectors import ldj_ratio
  from tensorflow_probability.python.internal import assert_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import nest_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow.python.ops import control_flow_util
  from tensorflow.python.util import nest
label_desc: Use image node_id 5 for calling a global function with example usage: _bijector_type_str(bij) and returns: s