anchor.diff:          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...
  
positive.code:             {Unvalidated, Valid, Errors} = validate_update_consistent_props(Existing, New)
      end,
      {Good, Bad} = validate(Unvalidated, Valid, Errors),
      {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).
  
  %% @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, [], []).
  
  %% @private properties in new overwrite those in old
  -spec merge(props(), props()) -> props().
  
negative.code:         Consistent ->
              {Unvalidated, Valid, Errors} = validate_create_consistent_props(Consistent, BucketProps)
      end,
      {Good, Bad} = validate(Unvalidated, Valid, Errors),
      validate_post_merge(Good, Bad).
  
  %% @private update phase of bucket type. Merges properties from
  %% existing with valid new properties
  