anchor.diff:              {Unvalidated, Valid, Errors} = validate_update_consistent_props(Existing, New)
       end,
       {Good, Bad} = validate(Unvalidated, Valid, Errors),
  -    {merge(Good, Existing), Bad}.
  +    validate_post_merge(merge(Good, Existing), Bad).
   
   %% @private just delegates, but I added it to illustrate the many
   %% possible type of validation.
   -spec validate_update_typed_bucket(props(), props()) -> {props(), errors()}.
   validate_update_typed_bucket(Existing, New) ->
  -    validate_update_bucket_type(Existing, New).
  +    {Good, Bad} = validate_update_bucket_type(Existing, New),
  +    validate_post_merge(Good, Bad).
   
   %% @private as far as datatypes go, default buckets are free to do as
   %% they please, the datatypes API only works on typed buckets. Go
   %% wild!
   -spec validate_default_bucket(props(), props()) -> {props(), errors()}.
   validate_default_bucket(Existing, New) ->
  -    Unvalidated = merge(New, Existing),
  -    validate(Unvalidated, [], []).
  +    {Good, Bad} = validate(New, [], []),
  +    validate_post_merge(merge(Good, Existing), Bad).
   
   %% @private properties in new overwrite those in old
   -spec merge(props(), props()) -> props().
  
positive.code:             {Unvalidated, Valid, [{allow_mult, "Cannot change datatype bucket from allow_mult=true"} | Invalid]}
  end.
  
  %% @private just grab the allow_mult value if it exists
  -spec allow_mult(props()) -> boolean() | 'undefined' | 'error'.
  allow_mult(Props) ->
  
negative.code:         MaybeBool ->
              coerce_bool(MaybeBool)
      end.
  
  %% Boolean value of the `last_write_wins' property, or `undefined' if not present.
  -spec last_write_wins(props()) -> boolean() | 'undefined' | 'error'.
  last_write_wins(Props) ->
      get_boolean(last_write_wins, Props).
  
  %% Boolean value of the `dvv_enabled' property, or `undefined' if not present.
  -spec dvv_enabled(props()) -> boolean() | 'undefined' | 'error'.
  dvv_enabled(Props) ->
      get_boolean(dvv_enabled, Props).
  
  %% @private coerce the value under key to be a boolean, if defined; undefined, otherwise.
  -spec get_boolean(PropName::atom(), props()) -> boolean() | 'undefined' | 'error'.
  get_boolean(Key, Props) ->
      case proplists:get_value(Key, Props) of
          undefined ->
              undefined;
          MaybeBool ->
              coerce_bool(MaybeBool)
      end.
  
  
  %%
  %% EUNIT tests...
  