anchor.diff:  -type read_fun() :: fun(() -> {ok, any()} | error).
   -type update_fun() :: fun(() -> ok | any()).
   -type filter_fun() :: fun((any(), {ok, any()} | error) -> boolean()).
  +-type fold_fun() :: fun((any(), {ok, any()} | error, any()) -> any()).
   -type state() :: #state{}.
   
   %%%===================================================================
  
positive.code: -export([new/1, new/2, start_link/2, delete/1, delete/2, delete/3,
  	 lookup/2, lookup/3, insert_new/3, insert_new/4,
  	 update/4, update/5, setopts/2, clear/1, clear/2,
  	 clean/1, clean/2, filter/2, all/0, info/1, info/2]).
  %% gen_server callbacks
  -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
  	 terminate/2, code_change/3]).
  
negative.code: 			    0, ets_first(Name)),
  	    ets_safe_fixtable(Name, false),
  	    Num
      end.
  
  -spec fold(fold_fun(), any(), atom()) -> any().
  fold(FoldFun, Acc, Name) ->
      case whereis(Name) of
  	undefined -> Acc;
  	_ ->
  	    {ok, LifeTime} = ets_cache_options:life_time(Name),
  	    CurrTime = current_time(),
  	    ets_safe_fixtable(Name, true),
  	    NewAcc = do_fold(Name, FoldFun, LifeTime, CurrTime,
  			     Acc, ets_first(Name)),
  	    ets_safe_fixtable(Name, false),
  	    NewAcc
      end.
  
  -spec all() -> [atom()].
  