code: def testBetaQuotientFullyReparameterized(self):
      a = tf.constant(1.0)
      b = tf.constant(2.0)
      c = tf.constant(3.0)
      d = tf.constant(4.0)
      _, [grad_a, grad_b, grad_c, grad_d] = gradient.value_and_gradient(
          lambda a_, b_, c_, d_: beta_quotient.BetaQuotient(  # pylint: disable=g-long-lambda
              a_, b_, c_, d_, validate_args=True
          ).sample(
              10, seed=test_util.test_seed()
          ),
          [a, b, c, d],
      )
      self.assertIsNotNone(grad_a)
      self.assertIsNotNone(grad_b)
      self.assertIsNotNone(grad_c)
      self.assertIsNotNone(grad_d)
      self.assertNotAllZero(grad_a)
      self.assertNotAllZero(grad_b)
      self.assertNotAllZero(grad_c)
      self.assertNotAllZero(grad_d)
  
imports: import numpy
  from scipy import special
  from scipy import stats
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import beta_quotient
  from tensorflow_probability.python.distributions.internal import statistical_testing
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 8 for calling the _BetaQuotientTest obj's underlying member method code with example usage: obj.testBetaQuotientFullyReparameterized() without return types