anchor.diff:              ok
       end.
   
  +destroy(#kv_lru{max_size=0}) ->
  +    ok;
   destroy(#kv_lru{age_idx=Idx, bucket_idx=BucketIdx, cache=Cache}) ->
       ets:delete(Idx),
       ets:delete(BucketIdx),
  -    ets:delete(Cache).
  +    ets:delete(Cache),
  +    ok.
   
   %% Internal functions
   remove_existing(Idx, BucketIdx, Cache, BKey, Key) ->
  
positive.code:                        value,
                         ts}).
  
  new(Size) ->
      IdxName = pid_to_list(self()) ++ "_cache_age_idx",
      BucketIdxName = pid_to_list(self()) ++ "_bucket_idx",
  
negative.code:     Cache = ets:new(list_to_atom(CacheName), [private, {keypos, 2}]),
      #kv_lru{max_size=Size, age_idx=Idx, bucket_idx=BucketIdx, cache=Cache}.
  
  put(#kv_lru{max_size=0}, _BKey, _Key, _Value) ->
      ok;
  put(#kv_lru{max_size=MaxSize, age_idx=Idx, bucket_idx=BucketIdx,
              cache=Cache}, BKey, Key, Value) ->
      remove_existing(Idx, BucketIdx, Cache, BKey, Key),
      insert_value(Idx, BucketIdx, Cache, BKey, Key, Value),
      prune_oldest_if_needed(MaxSize, Idx, BucketIdx, Cache).
  
  fetch(#kv_lru{max_size=0}, _BKey, _Key) ->
      notfound;
  fetch(#kv_lru{cache=Cache}=LRU, BKey, Key) ->
      case fetch_value(Cache, BKey, Key) of
          notfound ->
  