docs: def _invoke_submit(self, iterobj, is_dict, is_itmcoll, mres, global_kw):
          """
          Internal function to invoke the actual submit_single function
          :param iterobj: The raw object returned as the next item of the iterator
          :param is_dict: True if iterator is a dictionary
          :param is_itmcoll: True if the iterator contains Item objects
          :param mres: The multi result object
          :param global_kw: The global settings
          :return: The return value of :meth:`submit_single`
          """
          if is_itmcoll:
              item, key_options = next(iterobj)
              key = item.key
              value = item.value
              result = item
          else:
              if is_dict:
                  key, value = next(iterobj)
                  if not self.VALUES_ALLOWED and not is_itmcoll:
                      raise ArgumentError.pyexc(
                          'Values not allowed for this command', obj=value)
              else:
                  key = next(iterobj)
                  value = None
  
              key_options = {}
              item = None
              result = self.make_result(key, value)
  
          result.rc = -1
  
          # Attempt to get the encoded key:
          key, value, key_options = self.make_entry_params(key, value, key_options)
          c_key, c_len = create_key(self.parent._tc, key)
  
          rc = self.submit_single(c_key, c_len, value, item, key_options, global_kw, mres)
          if rc:
              raise pycbc_exc_lcb(rc)
          try:
              if key in mres and not self.DUPKEY_OK:
                  # For tests:
                  self.parent._warn_dupkey(key)
  
              mres[key] = result
          except TypeError:
              raise pycbc_exc_enc(obj=key)