anchor.diff:          #state{client=C} = State) ->
       {AllowMult, Type} = bucket_type_to_type(B, BType),
       Mod = riak_kv_crdt:to_mod(Type),
  +    Op = riak_pb_dt_codec:decode_operation(Op0, ?MOD_MAP),
  +    OpType = riak_pb_dt_codec:operation_type(Op0),
  +    ModsMatch = mods_match(Type, OpType),
       {Key, ReturnKey} = get_key(K),
  -    case {AllowMult, riak_kv_crdt:supported(Mod)} of
  -        {true, true} ->
  +    case {AllowMult, riak_kv_crdt:supported(Mod), ModsMatch} of
  +        {true, true, true} ->
               O = riak_kv_crdt:new(B, Key, Mod),
  -            Op = riak_pb_dt_codec:decode_operation(Op0, ?MOD_MAP),
               %% erlang_protobuffs encodes as 1/0/undefined
               W = decode_quorum(W0),
               DW = decode_quorum(DW0),
  
positive.code: 
  -module(riak_kv_pb_crdt).
  
  -include_lib("riak_pb/include/riak_dt_pb.hrl").
  -include_lib("riak_pb/include/riak_pb_kv_codec.hrl").
  -include_lib("riak_kv_types.hrl").
  
  
negative.code:    undefined;
  get_context(Ctx, true) ->
      Ctx.
  
  mods_match(BucketMod, OpType) ->
      OpMod = riak_kv_crdt:to_mod(OpType),
      OpMod == BucketMod.
  