code: def codomain_tensors(draw, bijector, shape=None):
      """Strategy for drawing Tensors in the codomain of a bijector.
  
      If the bijector's codomain is constrained, this proceeds by drawing an
      unconstrained Tensor and then transforming it to fit.  The constraints are
      declared in `bijectors.hypothesis_testlib.bijector_supports`.  The
      transformations are defined by `tfp_hps.constrainer`.
  
      Args:
        draw: Hypothesis strategy sampler supplied by `@hps.composite`.
        bijector: A `Bijector` in whose codomain the Tensors will be.
        shape: An optional `TensorShape`.  The shape of the resulting
          Tensors.  Hypothesis will pick one if omitted.
  
      Returns:
        tensors: A strategy for drawing codomain Tensors for the desired bijector.
      """
      if is_invert(bijector):
          return draw(domain_tensors(bijector.bijector, shape))
      elif is_transform_diagonal(bijector):
          return draw(codomain_tensors(bijector.diag_bijector, shape))
      if shape is None:
          shape = draw(tfp_hps.shapes())
      bijector_name = type(bijector).__name__
      support = bhps.bijector_supports()[bijector_name].inverse
      if is_generalized_pareto(bijector):
          constraint_fn = bhps.generalized_pareto_constraint(
              bijector.loc, bijector.scale, bijector.concentration
          )
      elif isinstance(bijector, tfb.SoftClip):
          constraint_fn = bhps.softclip_constraint(
              bijector.low, bijector.high
          )
      else:
          constraint_fn = tfp_hps.constrainer(support)
      return draw(tfp_hps.constrained_tensors(constraint_fn, shape))
  
imports: import collections
  import functools
  from absl.testing import parameterized
  import hypothesis
  from hypothesis import strategies
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python import bijectors
  from tensorflow_probability.python import util
  from tensorflow_probability.python.bijectors import hypothesis_testlib
  from tensorflow_probability.python.bijectors import invert
  from tensorflow_probability.python.internal import auto_composite_tensor
  from tensorflow_probability.python.internal import hypothesis_testlib
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.internal import tensorshape_util
  from tensorflow_probability.python.internal import test_util
  from tensorflow.python.util import nest
label_desc: Use image node_id 8 for calling a global function with example usage: codomain_tensors(draw, bijector, shape) and returns: draw, draw, draw