code: def full_signature(self):
          
          if self.kind == "function":
              return "{template}{return_type} {name}({parameters})".format(
                  template="template <{0}> ".format(", ".join(self.template)) if self.template else "",
                  return_type=self.return_type,
                  name=self.name,
                  parameters=", ".join(self.parameters)
              )
          raise RuntimeError(
              "full_signature may only be called for a 'function', but {name} is a '{kind}' node.".format(
                  name=self.name, kind=self.kind
              )
          )
docs: The full signature of a ``"function"`` node.
  
          **Return**
              :class:`python:str`
                  The full signature of the function, including template, return type,
                  name, and parameter types.
  
          **Raises**
              :class:`python:RuntimeError`
                  If ``self.kind != "function"``.