code: def testUserCustomOperators(self):
      # First we show that adding constants has arithmetic semantics.
      x = Normal(0, 1)
      y = x + Normal(1, 1)
      self.assertIsInstance(y, Normal)
  
      x_coerce = dtc._TensorCoercible(
          x, distribution.Distribution.variance
      )
      var_plus_2 = x_coerce + tf.constant(2.0)
  
      # Now we show that adding two distributions has random variable semantics.
      y_coerce = dtc._TensorCoercible(
          y, distribution.Distribution.variance
      )
      self.assertIsInstance(y_coerce.tensor_distribution, Normal)
      var = tf.convert_to_tensor(y_coerce)
  
      # Note: it is not possible to have user-defined operators and also use the
      # _TensorCoercible class.
      self.assertIsInstance(x_coerce + y_coerce, tf.Tensor)
  
      # When adding `2` as a constant (to the variance) we get `3`.
      # When adding as a distribution, the variances add.
      self.assertAllClose(
          [3.0, 2.0],
          self.evaluate([var_plus_2, var]),
          atol=0,
          rtol=1e-3,
      )
  
imports: import gc
  import operator
  from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import categorical
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.distributions import uniform
  from tensorflow_probability.python.internal import reparameterization
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.layers import distribution_layer
  from tensorflow_probability.python.layers.internal import distribution_tensor_coercible
  from tensorflow.python.framework import test_util
label_desc: Use image node_id 13 for calling the DistributionTensorConversionTest obj's underlying member method code with example usage: obj.testUserCustomOperators() without return types