code: def _testQuantileFiniteGradientAtDifficultPoints(self, dtype):
      skewness = tf.constant(dtype(0))
      tailweight = tf.constant(dtype(1))
      mu = tf.constant(dtype(0))
      sigma = tf.constant(dtype(1))
      p = tf.constant(
          dtype(
              [
                  np.exp(-32.0),
                  np.exp(-2.0),
                  1.0 - np.exp(-2.0),
                  1.0 - np.exp(-8.0),
              ]
          )
      )
      value, grads = gradient.value_and_gradient(
          lambda m, p_: johnson_su.JohnsonSU(  # pylint:disable=g-long-lambda
              skewness=skewness,
              tailweight=tailweight,
              loc=m,
              scale=sigma,
              validate_args=True,
          ).quantile(
              p_
          ),
          [mu, p],
      )
      value, grads = self.evaluate([value, grads])
      self.assertAllFinite(grads[0])
      self.assertAllFinite(grads[1])
  
imports: import math
  import numpy
  from scipy import stats
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.distributions import johnson_su
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.math import gradient
label_desc: Use image node_id 16 for calling the JohnsonSUTest obj's underlying member method code with example usage: obj._testQuantileFiniteGradientAtDifficultPoints(dtype) without return types