anchor.diff:      BinKey = list_to_binary(Key),
       ok = case riakc_pb_socket:get(Conn, Bucket, BinKey) of
           {ok, O} ->
  -            O2 = riakc_obj:update_value(O, ConvertedPropList),
  +            O2 = riakc_obj:update_value(O, PropList),
               riakc_pb_socket:put(Conn, O2);
           {error, _} ->
  -            O = riakc_obj:new(Bucket, BinKey, ConvertedPropList, <<"application/x-erlang-term">>),
  +            O = riakc_obj:new(Bucket, BinKey, PropList, <<"application/x-erlang-term">>),
               riakc_pb_socket:put(Conn, O)
       end,
       {ok, Record:set(id, lists:concat([Type, "-", Key]))}.
  
positive.code: save_record(Conn, Record) ->
      Type = element(1, Record),
      Bucket = list_to_binary(type_to_bucket_name(Type)),
      PropList = [{K, V} || {K, V} <- Record:attributes(), K =/= id],
      ConvertedPropList = encode_data_for_riak(PropList),
      Key = case Record:id() of
          id ->
              % TODO: The next release of Riak will support server-side ID
  
negative.code: escape_value([H|T], Acc) ->
      escape_value(T, [H|Acc]).
  
  riak_search_encode_key(K) ->
      list_to_binary(atom_to_list(K)).
  
  riak_search_encode_value(V) when is_list(V) ->
      list_to_binary(V);
  riak_search_encode_value(V) ->
      V.
  
  riak_search_decode_data(Data) ->
      lists:map(fun({K, V}) ->
          DecodedKey = riak_search_decode_key(K),
          DecodedValue = riak_search_decode_value(V),
          {DecodedKey, DecodedValue}
      end, Data).
  
  riak_search_decode_key(K) ->
      list_to_atom(binary_to_list(K)).
  
  riak_search_decode_value(V) when is_binary(V) ->
      binary_to_list(V);
  riak_search_decode_value(V) ->
      V.
  