code: def testRestructureOnFunctionReturn(self):
      def quad_type(args):
          return ((args[0], args[0]), (args[0], args[0]))
  
      ctx = frontend.Context()
  
      @ctx.batch(type_inference=quad_type)
      def function(x):
          left = x + 1, x + 2
          right_1 = x + 3
          right_2 = x + 4
          return left, (right_1, right_2)
  
      def id_type(args):
          return args[0]
  
      @ctx.batch(type_inference=id_type)
      def caller(x):
          (left_1, left_2), right = function(x)
          right_1, right_2 = right
          return left_1 + left_2 + right_1 + right_2
  
      inputs = np.array([12, -13, 14], dtype=np.int32)
      # pylint: disable=unexpected-keyword-arg
      # The `max_stack_depth` and `backend` keyword arguments to `caller`
      # are introduced by the `@ctx.batch` decorator, confusing pylint.
      self.assertAllEqual(
          [58, -42, 66],
          self.evaluate(
              caller(inputs, max_stack_depth=5, backend=TF_BACKEND)
          ),
      )
  
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 13 for calling the AutoGraphFrontendTest obj's underlying member method code with example usage: obj.testRestructureOnFunctionReturn() and returns: args,  args,  args,  args, left,  right_1,  right_2, args, unknown