code: def visit_DefNode(self, node):
      if not self.current_directives["embedsignature"]:
          return node
  
      is_constructor = False
      hide_self = False
      if node.entry.is_special:
          is_constructor = self.class_node and node.name == "__init__"
          if not is_constructor:
              return node
          class_name, func_name = None, self.class_name
          hide_self = True
      else:
          class_name, func_name = self.class_name, node.name
  
      nkargs = getattr(node, "num_kwonly_args", 0)
      npargs = len(node.args) - nkargs
      signature = self._fmt_signature(
          class_name,
          func_name,
          node.args,
          npargs,
          node.star_arg,
          nkargs,
          node.starstar_arg,
          return_expr=node.return_type_annotation,
          return_type=None,
          hide_self=hide_self,
      )
      if signature:
          if is_constructor:
              doc_holder = self.class_node.entry.type.scope
          else:
              doc_holder = node.entry
  
          if doc_holder.doc is not None:
              old_doc = doc_holder.doc
          elif (
              not is_constructor
              and getattr(node, "py_func", None) is not None
          ):
              old_doc = node.py_func.entry.doc
          else:
              old_doc = None
          new_doc = self._embed_signature(signature, old_doc)
          doc_holder.doc = EncodedString(new_doc)
          if (
              not is_constructor
              and getattr(node, "py_func", None) is not None
          ):
              node.py_func.entry.doc = EncodedString(new_doc)
      return node
  
imports: from __future__ import absolute_import, print_function
  from .Visitor import CythonTransform
  from .StringEncoding import EncodedString
  from .None import Options
  from .None import PyrexTypes, ExprNodes
  from ..CodeWriter import ExpressionWriter
label_desc: Use image node_id 12 for calling the EmbedSignature obj's underlying member method code with example usage: obj.visit_DefNode(node) and returns: node, node, node