class_docstr: Wrap the target function and operate as ``FunctionNode``
  
  Arguments:
      name (str): name of the function node
      func (func): the target function
      args (list): args for the function
      kwargs (dict): kwargs for the function
      arg_vars (list): list of `chainer.Variable`s in `args` and `kwargs`
      attributes (list): parameters to be set node's attributes
class_docstr_tok: ["Wrap","the","target","function","and","operate","as","``","FunctionNode","``","Arguments",":","name","(","str",")",":","name","of","the","function","node","func","(","func",")",":","the","target","function","args","(","list",")",":","args","for","the","function","kwargs","(","dict",")",":","kwargs","for","the","function","arg_vars","(","list",")",":","list","of","`","chainer.Variable","`","s","in","`","args","`","and","`","kwargs","`","attributes","(","list",")",":","parameters","to","be","set","node","'s","attributes"]
code: def forward(self, xs):
      assert len(xs) == len(self.arg_vars)
      self.xs = xs
      results = self.func(*self.args, **self.kwargs)
  
      self.skeleton, flattened_results = self._flatten_return_value(
          results
      )
      dummy_results = tuple(
          _unwrap_var(ret) for ret in flattened_results
      )
      if all([_is_var(ret) for ret in flattened_results]):
          self.internal_results = flattened_results
  
      if not chainer.is_arrays_compatible(dummy_results):
          raise ValueError(
              "returned values from the function wrapped by 'as_funcnode' "
              "must consist only array, function name: {}".format(
                  self.custom_function_node_name
              )
          )
      return dummy_results
  
file_path: chainer/onnx_chainer/replace_func.py
imports: import inspect
  import chainer
label_desc: Use image node_id 2 for calling the WrappedFunctionNode obj's underlying member method code with example usage: obj.forward(xs) and returns: dummy_results