# File lib/ruote/part/storage_participant.rb, line 405
    def delegate(workitem, new_owner)

      hwi = fetch(workitem)

      fail ArgumentError.new(
        "workitem not found"
      ) if hwi == nil

      fail ArgumentError.new(
        "cannot delegate, workitem doesn't belong to anyone"
      ) if hwi['owner'] == nil

      fail ArgumentError.new(
        "cannot delegate, " +
        "workitem owned by '#{hwi['owner']}', not '#{workitem.owner}'"
      ) if hwi['owner'] != workitem.owner

      hwi['owner'] = new_owner

      r = @context.storage.put(hwi, :update_rev => true)

      fail ArgumentError.new("workitem is gone") if r == true
      fail ArgumentError.new("workitem got modified meanwhile") if r != nil

      Workitem.new(hwi)
    end