anchor.diff:                    end, Cache#cache.evict_list),
       {reply, ok, Cache#cache{evict_list=[]}};
   
  +handle_call(info, _From, Cache) ->
  +    #cache{size=Max, evict_list=EvictList} = Cache,
  +    Info = [{max_size, Max},
  +            {size, length(EvictList)}],
  +    {reply, Info, Cache};
  +
   handle_call(stop, _From, Cache) ->
       {stop, normal, ok, Cache}.
   
   %% @private
  +handle_cast({set_size, Sz}, Cache) ->
  +    {noreply, Cache#cache{size=Sz}};
  +
   handle_cast(_Msg, Cache) ->
       {noreply, Cache}.
   
  
positive.code:     lru:add(Cache, 2, 2),
      ?assertEqual(lru:peek(Cache, 1), 1),
      lru:add(Cache, 3, 3),
      ?assert(lru:contains(Cache, 1) =:= false).
  
  
  -endif.
  
negative.code:     call(Cache, purge).
  
  
  %% @doc get cache info
  -spec info(Cache::pid()) -> Info::list().
  info(Cache) ->
      call(Cache, info).
  
  %% @doc change the size of the cache
  -spec set_size(Cache::pid(), Size::non_neg_integer()) -> ok.
  set_size(Cache, Size) ->
      gen_server:cast(Cache, {set_size, Size}).
  
  %%====================================================================
  %% Internal functions
  