anchor.diff:                  %% Good replaces the same key in Existing, right?
                   %% Remove `Bad' from the inputs to validate.
                   F = fun({Name, _Err}, {Old, Neu}) ->
  -                    {value, V, Neu2} = lists:keytake(Name, 1, Neu),
  -                    %% only want to remove the exact bad value from existing,
  -                    %% not the bad key!
  -                    {lists:delete(V, Old), Neu2}
  +                     case lists:keytake(Name, 1, Neu) of
  +                         false ->
  +                             {Old, Neu};
  +                         {value, V, Neu2} ->
  +                             %% only want to remove the exact bad value from existing,
  +                             %% not the bad key!
  +                             {lists:delete(V, Old), Neu2}
  +                     end
                   end,
                   {NoBadExisting, OnlyGoodNew} = lists:foldl(F, {Existing, New}, Bad),
   
  
positive.code: -spec validate_default_bucket(props(), props()) -> {props(), errors()}.
  validate_default_bucket(Existing, New) ->
      {Good, Bad} = validate(New, [], []),
      {merge(Good, Existing), Bad}.
  
  %% @private properties in new overwrite those in old
  -spec merge(props(), props()) -> props().
  
negative.code: 
  gen_existing() ->
      Defaults = lists:ukeysort(1, riak_core_bucket_type:defaults()),
      ?LET(Special, oneof([gen_valid_mult_dt(), gen_valid_w1c(), gen_valid_consistent(), gen_valid_dvv_lww(), []]),
           lists:ukeymerge(1, lists:ukeysort(1, Special), Defaults)).
  
  gen_maybe_consistent() ->
  