anchor.diff:      [];
   map_rewrite_encoded(RO, _, _) ->
       {_, _, B2, K2} = decode_object(RO),
  -    copy_object(RO, B2, K2),
  -    [].
  +    case copy_object(RO, B2, K2) of
  +        ok ->
  +            [];
  +        _ ->
  +            [{riak_object:bucket(RO), riak_object:key(RO)}]
  +    end.
   
   %% Post-commit that can be installed to force live migration of newly
   %% inserted buckets/keys before cluster is switched over to proper
  
positive.code: 
  %% Returns true if any value is double (or more) encoded.
  check_double_encoding(EObjs) ->
      lists:any(fun(Name) ->
                        Name2 = decode_name(Name),
                        Name2 /= decode_name(Name2)
                end, EObjs).
  
  %% Determine if it is safe to perform migration (no bucket/key conflicts).
  check_safe(RC, EObjs) ->
      EObjs2 = [decode_name(Name) || Name <- EObjs],
      MR = RC:mapred(EObjs2, [map_safe(),
                              riak_kv_mapreduce:reduce_set_union(true)]),
      case MR of
          {ok, [unsafe]} ->
              unsafe;
          _ ->
              safe
      end.
  
  map_safe() ->
      {map, {modfun, ?MODULE, map_safe}, none, false}.
  map_safe({error, notfound}, _, _) ->
      [];
  map_safe(_, _, _) ->
      [unsafe].
  
  %% Perform first phase of migration: copying encoded values to
  %% unencoded equivalents.
  migrate_objects(EObjs) ->
      {ok, RC} = riak:local_client(),
      riak_kv_mapred_cache:clear(),
      RC:mapred(EObjs, [map_rewrite_encoded()]),
      io:format("All objects with URL encoded buckets/keys have been copied to "
                "unencoded equivalents.~n", []).
  
  map_rewrite_encoded() ->
      {map, {modfun, ?MODULE, map_rewrite_encoded}, none, true}.
  
negative.code: %% 1. Attach to a running riak console.
  %%
  %% 2. Check if cluster needs migration (message printed to console):
  %%     1> {_, Objs, Custom} = riak_kv_encoding_migrate:check_cluster().
  %%
  %% 3. If migration necessary and safe, migrate objects:
  %%     1> {_, MFail} = riak_kv_encoding_migrate:migrate_objects(Objs).
  %%
  %% 4. If all went well, delete migrated objects:
  %%     1> {_, DFail} = riak_kv_encoding_migrate:delete_migrated_objects(Objs).
  %%
  %% Possible Failure Cases:
  %% -- check_cluster may state that you need to perform custom migration,
  %%    and will return the list of problem keys as the third tuple element.
  %%
  %% -- migrate_objects and delete_migrated_objects may fail. Objects that
  %%    failed to be copied/deleted will be returned as the second element.
  %%
  %% This module also provides the post-commit function 'postcommit_rewrite'
  %% that can be installed on a bucket to perform live copying of inserted
  