anchor.diff:  -define(DONE, <<"done">>).
   
   %% Types
  --type task()   :: riakc_map:crdt_map().
  +-type task() :: riakc_map:crdt_map().
   
   -export_type([task/0]).
   
  
positive.code: 		{ok, T0} ->
  			T1 = Handle(T0),
  			T2 = riakc_map:update({<<"status">>, register}, fun(Obj) -> riakc_register:set(Status, Obj) end, T1),
  			put(Pid, Bucket, Id, riakc_map:to_op(T2)),
  			{ok, T2};
  		ErrorReason ->
  			ErrorReason
  
negative.code: %% Internal functions
  %% =============================================================================
  
  -spec put(pid(), bucket_and_type(), binary(), task()) -> task().
  put(Pid, Bucket, Id, T) ->
  	put(Pid, Bucket, Id, T, []).
  
  -spec put(pid(), bucket_and_type(), binary(), task(), [proplists:property()]) -> task().
  put(Pid, Bucket, Id, T, Opts) ->
  	case catch riakc_pb_socket:update_type(Pid, Bucket, Id, riakc_map:to_op(T), [{pw, quorum}|Opts]) of
  		ok                  -> T;
  		{ok, Tmodified}     -> Tmodified;
  		{error, unmodified} -> T;
  		{error, Reason}     -> exit(Reason);
  		{'EXIT', Reason}    -> exit(Reason);
  		Else                -> exit({bad_return_value, Else})
  