docs: def xclaim(self, name, groupname, consumername, min_idle_time, message_ids,
                 idle=None, time=None, retrycount=None, force=False,
                 justid=False):
          """
          Changes the ownership of a pending message.
          name: name of the stream.
          groupname: name of the consumer group.
          consumername: name of a consumer that claims the message.
          min_idle_time: filter messages that were idle less than this amount of
          milliseconds
          message_ids: non-empty list or tuple of message IDs to claim
          idle: optional. Set the idle time (last time it was delivered) of the
           message in ms
          time: optional integer. This is the same as idle but instead of a
           relative amount of milliseconds, it sets the idle time to a specific
           Unix time (in milliseconds).
          retrycount: optional integer. set the retry counter to the specified
           value. This counter is incremented every time a message is delivered
           again.
          force: optional boolean, false by default. Creates the pending message
           entry in the PEL even if certain specified IDs are not already in the
           PEL assigned to a different client.
          justid: optional boolean, false by default. Return just an array of IDs
           of messages successfully claimed, without returning the actual message
          """
          if not isinstance(min_idle_time, (int, long)) or min_idle_time < 0:
              raise DataError("XCLAIM min_idle_time must be a non negative "
                              "integer")
          if not isinstance(message_ids, (list, tuple)) or not message_ids:
              raise DataError("XCLAIM message_ids must be a non empty list or "
                              "tuple of message IDs to claim")
  
          kwargs = {}
          pieces = [name, groupname, consumername, str(min_idle_time)]
          pieces.extend(list(message_ids))
  
          if idle is not None:
              if not isinstance(idle, (int, long)):
                  raise DataError("XCLAIM idle must be an integer")
              pieces.extend((Token.get_token('IDLE'), str(idle)))
          if time is not None:
              if not isinstance(time, (int, long)):
                  raise DataError("XCLAIM time must be an integer")
              pieces.extend((Token.get_token('TIME'), str(time)))
          if retrycount is not None:
              if not isinstance(retrycount, (int, long)):
                  raise DataError("XCLAIM retrycount must be an integer")
              pieces.extend((Token.get_token('RETRYCOUNT'), str(retrycount)))
  
          if force:
              if not isinstance(force, bool):
                  raise DataError("XCLAIM force must be a boolean")
              pieces.append(Token.get_token('FORCE'))
          if justid:
              if not isinstance(justid, bool):
                  raise DataError("XCLAIM justid must be a boolean")
              pieces.append(Token.get_token('JUSTID'))
              kwargs['parse_justid'] = True
          return self.execute_command('XCLAIM', *pieces, **kwargs)