anchor.diff:  -include_lib("mero/include/mero.hrl").
   
   -type cas_token() :: undefined | integer().
  +-type result() :: {Key :: binary(), Value :: undefined | binary()}.
  +-type extended_result() :: {Key :: binary(), Value :: undefined | binary(), CAS :: cas_token()}.
   
   %% {ClusteringKey, Key}. ClusteringKey is used to select the memcached node
   %% where to store the data, and Key is used to store the data in that
   %% node.  If a single binary Key is used,  then ClusteringKey = Key.
   -type mero_key() :: binary() | {ClusteringKey :: binary(), Key :: binary()}.
   
  --export_type([mero_key/0]).
  +-export_type([mero_key/0,
  +              cas_token/0,
  +              result/0,
  +              extended_result/0]).
   
   %%%=============================================================================
   %%% Application behaviour
  
positive.code: %%%=============================================================================
  
  -spec get(ClusterName :: atom(), Key :: mero_key(), Timeout :: integer()) ->
                   {Key :: binary(), Value :: undefined | binary()}
                       | {error, Reason :: term()}.
  get(ClusterName, Key, Timeout) ->
      case gets(ClusterName, Key, Timeout) of
          {error, Reason} ->
  
negative.code: 
  
  -spec mget(ClusterName :: atom(), Keys :: [mero_key()], Timeout :: integer()) ->
      [result()] | {error, [Reason :: term()], ProcessedKeyValues :: [result()]}.
  mget(ClusterName, Keys, Timeout) when is_list(Keys), is_atom(ClusterName) ->
      Extract = fun (Items) ->
                        [{Key, Value}
  