code: def visit_PropertyNode(self, node):
      if not self.current_directives["embedsignature"]:
          return node
  
      entry = node.entry
      if entry.visibility == "public":
          # property synthesised from a cdef public attribute
          type_name = entry.type.declaration_code("", for_display=1)
          if not entry.type.is_pyobject:
              type_name = "'%s'" % type_name
          elif entry.type.is_extension_type:
              type_name = entry.type.module_name + "." + type_name
          signature = "%s: %s" % (entry.name, type_name)
          new_doc = self._embed_signature(signature, entry.doc)
          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 14 for calling the EmbedSignature obj's underlying member method code with example usage: obj.visit_PropertyNode(node) and returns: node, node