code: def testNamedTuples(self):
      # Should be destructurable, and should be conserved
      # - on input to the auto-batched program
      # - on input to primops or functions
      # - on output from primops or functions, and
      # - on output from the auto-batched program.
      my_tuple = collections.namedtuple("my_tuple", ["x", "y"])
  
      def my_primop(thing):
          return my_tuple(thing.x + 1, thing.y + 2)
  
      def id_type(args):
          return args[0]
  
      def function(x):
          thing1 = my_primop(x)
          thing2 = my_primop(thing1)
          return thing2
  
      def caller(x):
          thing1 = function(x)
          thing2 = function(thing1)
          return thing2
  
      ctx = frontend.Context()
      ctx.batch_uncurried(function, id_type)
      batched = ctx.batch_uncurried(caller, id_type)
      input_ = my_tuple(
          np.array([6, 7, 8], dtype=np.int64),
          np.array([60, 70, 80], dtype=np.int64),
      )
      output = my_tuple(
          np.array([10, 11, 12], dtype=np.int64),
          np.array([68, 78, 88], dtype=np.int64),
      )
      result = batched(input_, max_stack_depth=15, backend=NP_BACKEND)
      self.assertEqual(type(output), type(result))
      self.assertAllEqual(output, result)
  
imports: import collections
  from absl import logging
  import numpy
  import tensorflow.compat.v1
  import tensorflow.compat.v2
  from tensorflow_probability.python.experimental.auto_batching import frontend
  from tensorflow_probability.python.experimental.auto_batching import instructions
  from tensorflow_probability.python.experimental.auto_batching import numpy_backend
  from tensorflow_probability.python.experimental.auto_batching import tf_backend
  from tensorflow_probability.python.internal import test_util
label_desc: Use image node_id 7 for calling the AutoGraphFrontendTest obj's underlying member method code with example usage: obj.testNamedTuples() and returns: my_tuple, args, thing2, thing2