code: def call_func_function(self, backend_config, x2):
      forward_xp, backward_xp = _get_expected_xp(backend_config, True)
  
      class Func(chainer.Function):
          def forward(self, inputs):
              # Inputs
              assert isinstance(inputs, tuple)
              x1, x2, x3 = inputs
              assert x1 is None
              assert isinstance(x2, forward_xp.ndarray)
              assert x3 is None
  
              y1 = x2 * 3
              self.retain_inputs((1, 2))
              self.retain_outputs(())
              return (y1,)
  
          def backward(self, inputs, grad_outputs):
              # Retained inputs
              assert isinstance(inputs, tuple)
              x1, x2, x3 = inputs
              assert x1 is None
              assert isinstance(x2, backward_xp.ndarray)
              assert x3 is None
  
              # Output gradients
              assert isinstance(grad_outputs, tuple)
              (gy1,) = grad_outputs
              assert isinstance(gy1, backward_xp.ndarray)
  
              # Retained outputs
              output_data = self.output_data
              assert isinstance(output_data, tuple)
              (y1,) = output_data
              assert y1 is None
  
              gx2 = 3 * gy1
              return None, gx2, None
  
      return (Func()(None, x2, None),)
  
imports: import unittest
  import numpy
  import chainer
  from chainer import testing
  import chainer.testing.backend
  import chainerx
label_desc: Use image node_id 1 for calling the TestFunctionInputNone obj's underlying member method code with example usage: obj.call_func_function(backend_config, x2) and returns: Func, y1, None,  gx2,  None