code: def testNormalFullyReparameterized(self):
      mu = tf.constant(4.0)
      sigma = tf.constant(3.0)
      _, [grad_mu, grad_sigma] = gradient.value_and_gradient(
          lambda m, s: normal.Normal(
              loc=m, scale=s, validate_args=True
          ).sample(  # pylint: disable=g-long-lambda
              100, seed=test_util.test_seed()
          ),
          [mu, sigma],
      )
      grad_mu, grad_sigma = self.evaluate([grad_mu, grad_sigma])
      self.assertIsNotNone(grad_mu)
      self.assertIsNotNone(grad_sigma)
  
imports: import math
  import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 24 for calling the NormalTest obj's underlying member method code with example usage: obj.testNormalFullyReparameterized() without return types