anchor.diff:  %% proplists of {?MD_ACL, ACL::binary()}|{?MD_POLICY, PolicyBin::binary()}|
   %%  {?MD_BAG, BagId::binary()}.
   %% should preserve other metadata. ACL and Policy can be overwritten.
  --spec put_bucket(term(), binary(), bucket_op_opts(), pid()) ->
  +-spec put_bucket(term(), binary(), bucket_op_options(), pid()) ->
                           ok | {error, term()}.
   put_bucket(BucketObj, OwnerId, Opts, RiakPid) ->
       PutOptions = [{w, all}, {pw, all}],
  
positive.code:     UpdBucketObj = riakc_obj:update_metadata(UpdBucketObj0, MetaData),
      riakc_pb_socket:put(RiakPid, UpdBucketObj, PutOptions).
  
  make_new_metadata(MD, Opts) ->
      MetaVals = dict:fetch(?MD_USERMETA, MD),
      UserMetaData = make_new_user_metadata(MetaVals, Opts),
      dict:store(?MD_USERMETA, UserMetaData, dict:erase(?MD_USERMETA, MD)).
  
  make_new_user_metadata(MetaVals, [])->
      MetaVals;
  make_new_user_metadata(MetaVals, [{acl, Acl} | Opts])->
  
negative.code: -define(BLOCK_BUCKET_PREFIX, <<"0b:">>).        % Version # = 0
  
  -type bucket_op() :: create | update_acl | delete | update_policy | delete_policy.
  -type bucket_op_options() :: [bucket_op_option()].
  -type bucket_op_option() :: {acl, acl()} | {policy, binary()} | delete_policy | {bag, binary()}.
  
  %% ===================================================================
  %% Public API
  