docs: def update(self, fields=None, update=None, async_=None, jira=None, notify=True, **fieldargs):
          """Update this issue on the server.
  
          Each keyword argument (other than the predefined ones) is treated as a field name and the argument's value
          is treated as the intended value for that field -- if the fields argument is used, all other keyword arguments
          will be ignored.
  
          JIRA projects may contain many different issue types. Some issue screens have different requirements for
          fields in an issue. This information is available through the :py:meth:`.JIRA.editmeta` method. Further examples
          are available here: https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+Edit+issues
  
          :param fields: a dict containing field names and the values to use
          :param update: a dict containing update operations to apply
          :param notify: query parameter notifyUsers. If true send the email with notification that the issue was updated
                         to users that watch it. Admin or project admin permissions are required to disable the notification.
          :param fieldargs: keyword arguments will generally be merged into fields, except lists,
                            which will be merged into updates
  
          :type fields: dict
          :type update: dict
  
          """
          data = {}
          if fields is not None:
              fields_dict = fields
          else:
              fields_dict = {}
          data['fields'] = fields_dict
          if update is not None:
              update_dict = update
          else:
              update_dict = {}
          data['update'] = update_dict
          for field in sorted(fieldargs.keys()):
              value = fieldargs[field]
              # apply some heuristics to make certain changes easier
              if isinstance(value, string_types):
                  if field == 'assignee' or field == 'reporter':
                      fields_dict['assignee'] = {'name': value}
                  elif field == 'comment':
                      if 'comment' not in update_dict:
                          update_dict['comment'] = []
                      update_dict['comment'].append({
                          'add': {'body': value}})
                  else:
                      fields_dict[field] = value
              elif isinstance(value, list):
                  if field not in update_dict:
                      update_dict[field] = []
                  update_dict[field].extend(value)
              else:
                  fields_dict[field] = value
  
          super(Issue, self).update(async_=async_, jira=jira, notify=notify, fields=data)