anchor.diff:  encode(bound_object, {Key, Type, Bucket}) ->
       #apbboundobject{key=Key, type=encode(type,Type), bucket=Bucket};
   
  -encode(type, riak_dt_pncounter) -> 0;
  -encode(type, riak_dt_gcounter) -> 1;
  -encode(type, riak_dt_orset) -> 2;
  -encode(type, crdt_pncounter) -> 3;
  -encode(type, crdt_orset) -> 4;
  -encode(type, riak_dt_lwwreg) -> 5;
  +encode(type, antidote_crdt_counter) -> 3;
  +encode(type, antidote_crdt_orset) -> 4;
  +encode(type, antidote_crdt_lwwreg) -> 5;
   
   encode(reg_update, {assign, Value}) ->
       #apbregupdate{optype = 1, value=Value};
  
positive.code:                  antidote_pb_codec:decode_response(ResMsg)).
  
  update_types_test() ->
      Updates = [ {{<<"1">>, riak_dt_pncounter, <<"2">>}, increment , 1},
                  {{<<"2">>, riak_dt_gcounter, <<"2">>}, increment , 1},
                  {{<<"a">>, riak_dt_orset, <<"2">>}, add , 3},
                  {{<<"b">>, crdt_pncounter, <<"2">>}, increment , 2},
                  {{<<"c">>, crdt_orset, <<"2">>}, add, 4},
                  {{<<"a">>, riak_dt_orset, <<"2">>}, add_all , [5,6]}
                ],
      TxId = term_to_binary({12}),
           %% Dummy value, structure of TxId is opaque to client
  
negative.code:                            Results),
      #apbreadobjectsresp{success=true, objects = EncResults};
  
  encode(read_object_resp, {{_Key, antidote_crdt_lwwreg, _Bucket}, Val}) ->
      #apbreadobjectresp{reg=#apbgetregresp{value=term_to_binary(Val)}};
  
  encode(read_object_resp, {{_Key, antidote_crdt_counter, _Bucket}, Val}) ->
      #apbreadobjectresp{counter=#apbgetcounterresp{value=Val}};
  
  encode(read_object_resp, {{_Key, antidote_crdt_orset, _Bucket}, Val}) ->
      #apbreadobjectresp{set=#apbgetsetresp{value=term_to_binary(Val)}};
  
  encode(static_read_objects_response, {ok, Results, CommitTime}) ->
  