anchor.diff:  decode(bound_object, #apbboundobject{key = Key, type=Type, bucket=Bucket}) ->
       {Key, decode(type, Type), Bucket};
   
  -decode(type, 0) -> riak_dt_pncounter;
  -decode(type, 1) -> riak_dt_gcounter;
  -decode(type, 2) -> riak_dt_orset;
  -decode(type, 3) -> crdt_pncounter;
  -decode(type, 4) -> crdt_orset;
  -decode(type, 5) -> riak_dt_lwwreg;
  +decode(type, 3) -> antidote_crdt_counter;
  +decode(type, 4) -> antidote_crdt_orset;
  +decode(type, 5) -> antidote_crdt_lwwreg;
   decode(error_code, 0) -> unknown;
   decode(error_code, 1) -> timeout;
   
  
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: encode(bound_object, {Key, Type, Bucket}) ->
      #apbboundobject{key=Key, type=encode(type,Type), bucket=Bucket};
  
  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};
  