anchor.diff:      {noreply, State};
   handle_info({insert, Key, Val}, State) ->
       do_insert(State, Key, Val),
  +    {noreply, State};
  +handle_info({insert_new, Key, Val}, State) ->
  +    do_insert_new(State, Key, Val),
       {noreply, State};
   handle_info({delete, Key}, #state{tab = Tab} = State) ->
       ets:delete(Tab, Key),
  
positive.code: 
  %% API
  -export([new/1, new/2, start_link/2, delete/1, delete/2, delete/3,
  	 lookup/2, lookup/3, insert/3, insert/4, clear/1, 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:     ets:insert(State#state.tab, {Key, Val, ExpireTime}),
      ok.
  
  -spec do_insert_new(state(), any(), {ok, any()} | error) -> boolean().
  do_insert_new(State, Key, Val) ->
      Tab = State#state.tab,
      LifeTime = State#state.life_time,
      check_size(Tab, State#state.max_size),
      if is_integer(LifeTime) ->
  	    CurrTime = current_time(),
  	    case ets:lookup(State#state.tab, Key) of
  		[{Key, Val, ExpireTime}] when ExpireTime > CurrTime ->
  		    ets:delete_object(Tab, {Key, Val, ExpireTime}),
  		    ets:insert_new(Tab, {Key, Val, LifeTime + CurrTime});
  		[] ->
  		    ets:insert_new(Tab, {Key, Val, LifeTime + CurrTime});
  		_ ->
  		    false
  	    end;
         true ->
  	    ets:insert_new(Tab, {Key, Val, LifeTime})
      end.
  
  -spec check_opts([option()]) -> [option()].
  check_opts(Opts) ->
      lists:map(
  