anchor.diff:              throw(siblings)
       end.
   
  -%% @doc  Return a list of the metadata values for this riak_object.
  --spec get_metadatas(#riakc_obj{}) -> [metadata()].
  +%% @doc  Return a list of the metadata values for this riakc_obj.
  +-spec get_metadatas(Object::riakc_obj()) -> [metadata()].
   get_metadatas(#riakc_obj{contents=Contents}) ->
       [M || {M,_V} <- Contents].
   
  -%% @doc Return the content type of the value if there are no siblings
  --spec get_content_type(#riakc_obj{}) -> content_type().
  +%% @doc Return the content type of the value if there are no siblings.
  +%% @see get_metadata/1
  +%% @throws siblings | no_metadata
  +-spec get_content_type(Object::riakc_obj()) -> content_type().
   get_content_type(Object=#riakc_obj{}) ->
       UM = get_metadata(Object),
       md_ctype(UM).
   
  -%% @doc Return a list of content types for all siblings
  --spec get_content_types(#riakc_obj{}) -> [content_type()].
  +%% @doc Return a list of content types for all siblings.
  +-spec get_content_types(Object::riakc_obj()) -> [content_type()].
   get_content_types(Object=#riakc_obj{}) ->
       F = fun({M,_}) -> md_ctype(M) end,
       [F(C) || C<- get_contents(Object)].
   
   
  -%% @doc  Assert that this riakc_obj has no siblings and return its associated
  -%%       value.  This function will throw siblings if the object has 
  -%%       siblings (value_count() > 1).
  --spec get_value(#riakc_obj{}) -> value().
  +%% @doc Assert that this riakc_obj has no siblings and return its
  +%%       associated value.  This function will throw `siblings' if the
  +%%       object has siblings (value_count() > 1), or `no_value' if the
  +%%       object has no value.
  +%% @throws siblings | no_value
  +-spec get_value(Object::riakc_obj()) -> value().
   get_value(#riakc_obj{}=O) ->
       case get_contents(O) of
           [] ->
  
positive.code: -include_lib("eunit/include/eunit.hrl").
  -endif.
  
  -type bucket() :: binary().
  -type key() :: binary() | 'undefined'.
  -type vclock() :: binary().
  
negative.code:     end.
  
  %% @doc  Set the vector clock of an object
  -spec set_vclock(riakc_obj(), vclock()) -> riakc_obj().
  set_vclock(Object=#riakc_obj{}, Vclock) ->
      Object#riakc_obj{vclock=Vclock}.
  
  %% @doc  INTERNAL USE ONLY.  Set the contents of riakc_obj to the
  %%       {Metadata, Value} pairs in MVs. Normal clients should use the
  %%       set_update_[value|metadata]() + apply_updates() method for changing
  %%       object contents.
  %% @private
  -spec new_obj(bucket(), key(), vclock(), contents()) -> riakc_obj().
  new_obj(Bucket, Key, Vclock, Contents) ->
      #riakc_obj{bucket = Bucket, key = Key, vclock = Vclock, contents = Contents}.
  
  