code: def testNestedDifferentiableFunctionNoneOutputs(self):
      @polymorphic_function.function
      def foo(a, b):
          return None, a * math_ops.add(a, b), None, 2 * a
  
      @polymorphic_function.function
      def bar(x):
          return foo(x, 1.0)
  
      x = constant_op.constant(5.0)
      with backprop.GradientTape(persistent=True) as tp:
          tp.watch(x)
          none1, r1, none2, r2 = bar(x)
      g1 = tp.gradient(r1, x)
      g2 = tp.gradient(r2, x)
  
      self.assertAllEqual(r1, 30.0)
      self.assertAllEqual(r2, 10.0)
      self.assertIs(none1, None)
      self.assertIs(none2, None)
      self.assertAllEqual(g1, 2 * 5.0 + 1.0)
      self.assertAllEqual(g2, 2.0)
  
imports: from absl.testing import parameterized
  from tensorflow.python.eager import backprop
  from tensorflow.python.eager import context
  from tensorflow.python.eager.polymorphic_function import polymorphic_function
  from tensorflow.python.framework import config
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import indexed_slices
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import cond
  from tensorflow.python.ops import gradients_impl
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import nn_grad
  from tensorflow.python.ops import nn_ops
  from tensorflow.python.ops import resource_variable_ops
  from tensorflow.python.ops import variable_scope
  from tensorflow.python.ops import variables
  from tensorflow.python.ops import while_loop
  from tensorflow.python.platform import test
label_desc: Use image node_id 40 for calling the FunctionGradientsTest obj's underlying member method code with example usage: obj.testNestedDifferentiableFunctionNoneOutputs() and returns: None,  unknown,  None,  unknown, foo