code: def test_nested(self):
      f = lambda value: value["x"] * value["y"]
      g = lambda value: {"x": value["y"], "y": value["x"]}
      args = {
          "x": np.linspace(0, 100, int(1e1)),
          "y": np.linspace(-100, 0, int(1e1)),
      }
      y, dydx = self.evaluate(gradient.value_and_gradient(f, args))
      self.assertAllClose(f(args), y, atol=1e-6, rtol=1e-6)
      self.assertAllCloseNested(g(args), dydx, atol=1e-6, rtol=1e-6)
  
imports: import numpy
  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
  from tensorflow_probability.python.math.gradient import batch_jacobian
  from tensorflow_probability.python.math.gradient import value_and_gradient_with_auto_expansion
label_desc: Use image node_id 3 for calling the GradientTest obj's underlying member method code with example usage: obj.test_nested() without return types