docs: def pretty_descriptor(self):
          """
          assemble a long member name from access flags, type, argument
          types, exceptions as applicable
          """
  
          f = " ".join(self.pretty_access_flags())
          p = self.pretty_type()
          n = self.get_name()
          t = ",".join(self.pretty_exceptions())
  
          if n == "<init>":
              # we pretend that there's no return type, even though it's
              # V for constructors
              p = None
  
          if self.is_method:
              # stick the name and args together so there's no space
              n = "%s(%s)" % (n, ",".join(self.pretty_arg_types()))
  
          if t:
              # assemble any throws as necessary
              t = "throws " + t
  
          return " ".join(z for z in (f, p, n, t) if z)