anchor.diff:  %% API
   -export([
   	put_groups/4,
  +	put_groups/5,
   	remove_groups/4,
   	update_groups/4,
  +	update_groups/5,
   	find/3,
   	find/4,
   	get/3,
   	get/4,
   	get/5,
  -	put/4
  +	put/4,
  +	put/5
   ]).
   
   %% DataType API
  
positive.code: 
  -spec put_groups(pid(), bucket_and_type(), binary(), [{binary(), riakacl_group:group()}]) -> riakacl_entry:entry().
  put_groups(Pid, Bucket, Key, Groups) ->
  	update_groups(Pid, Bucket, Key, fun(Gs) ->
  		lists:foldl(
  			fun({Name, Group}, Acc) ->
  				riakc_map:update({Name, map}, fun(_) -> Group end, Acc)
  			end, Gs, Groups)
  	end).
  
  -spec remove_groups(pid(), bucket_and_type(), binary(), [binary()]) -> entry().
  remove_groups(Pid, Bucket, Key, Names) ->
  
negative.code: 		Else                       -> exit({bad_return_value, Else})
  	end.
  
  -spec put(pid(), bucket_and_type(), binary(), entry()) -> entry().
  put(Pid, Bucket, Key, E) ->
  	put(Pid, Bucket, Key, E, []).
  
  -spec put(pid(), bucket_and_type(), binary(), entry(), [proplists:property()]) -> entry().
  put(Pid, Bucket, Key, E, Opts) ->
  	case catch riakc_pb_socket:update_type(Pid, Bucket, Key, riakc_map:to_op(E), [{pw, quorum}|Opts]) of
  		ok                  -> E;
  		{ok, Emodified}     -> Emodified;
  		{error, unmodified} -> ok;
  		{error, Reason}     -> exit(Reason);
  		{'EXIT', Reason}    -> exit(Reason);
  