code: def get_code(self):
          stub = []
          for deco in self.decorators:
              if (deco in DECORATORS) or deco.endswith(".setter"):
                  stub.append("@" + deco)
          parameters = []
          for name, type_, has_default in self.parameters:
              decl = "%(n)s%(t)s%(d)s" % {
                  "n": name,
                  "t": ": " + type_ if type_ else "",
                  "d": " = ..." if has_default else "",
              }
              parameters.append(decl)
          slots = {
              "a": "async " if self._async else "",
              "n": self.name,
              "p": ", ".join(parameters),
              "r": self.rtype,
          }
          prototype = "%(a)sdef %(n)s(%(p)s) -> %(r)s: ..." % slots
          if len(prototype) <= LINE_LENGTH_LIMIT:
              stub.append(prototype)
          elif len(INDENT + slots["p"]) <= LINE_LENGTH_LIMIT:
              stub.append("%(a)sdef %(n)s(" % slots)
              stub.append(INDENT + slots["p"])
              stub.append(") -> %(r)s: ..." % slots)
          else:
              stub.append("%(a)sdef %(n)s(" % slots)
              for param in parameters:
                  stub.append(INDENT + param + ",")
              stub.append(") -> %(r)s: ..." % slots)
          return stub