code: def check_backprop_step(self, gxs):
      flag_none = gxs[0] is None
  
      x1 = chainer.Variable(self.x1)
      x2 = chainer.Variable(self.x2)
      self.f.inputs = (x1.node, x2.node)
      gxrefs = [[gx] if gx is not None else [] for gx in gxs]
      grad_outputs = (self.gy1, self.gy2)
      grad_inputs = dict(zip(self.f.inputs, gxrefs))
      _backprop_utils.backprop_step(
          self.f, (0, 1), grad_outputs, grad_inputs, True
      )
      if not chainer.configuration.config.lazy_grad_sum:
          # assert eager grad sum
          for gxref in gxrefs:
              self.assertLessEqual(len(gxref), 1)
      gx1 = _backprop_utils._reduce(gxrefs[0])
      gx2 = _backprop_utils._reduce(gxrefs[1])
      if flag_none:
          numpy.testing.assert_array_equal(
              cuda.to_cpu(gx1.data), cuda.to_cpu(self.gx1.data)
          )
          self.assertIsNone(gx2)
      else:
          numpy.testing.assert_array_equal(
              cuda.to_cpu(gx1.data), cuda.to_cpu(self.gx1_accum.data)
          )
          numpy.testing.assert_array_equal(
              cuda.to_cpu(gx2.data), cuda.to_cpu(self.gx2_orig.data)
          )
  
imports: import unittest
  import mock
  import numpy
  import six
  import chainer
  from chainer import _backprop_utils
  from chainer.backends import cuda
  from chainer import testing
  from chainer.testing import attr
label_desc: Use image node_id 5 for calling the TestFunctionNode obj's underlying member method code with example usage: obj.check_backprop_step(gxs) without return types