anchor.diff:      wrangler_error_logger:remove_from_logger(FileName),
       {ok, {AnnAST, Info}} = parse_annotate_file(FileName, false, SearchPaths, TabWidth, FileFormat),
       log_errors(FileName, Info),
  -    {{ok, {AnnAST, Info}}, State};
  -get_ast(Key = {FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat}, State = #state{dets_tab = TabFile, asts = ASTs}) ->
  -    case TabFile of
  -	none ->
  -            case lists:keysearch(Key, 1, ASTs) of
  -		{value, {Key, {AnnAST, Info, Checksum}}} ->
  -                    NewChecksum = wrangler_misc:filehash(FileName),
  -		    case Checksum =:= NewChecksum andalso NewChecksum =/= 0 of
  -			true ->
  -                            log_errors(FileName, Info),
  -                            {{ok, {AnnAST, Info}}, State};
  -			false ->
  -			    wrangler_error_logger:remove_from_logger(FileName),
  -			    {ok, {AnnAST1, Info1}} = parse_annotate_file(FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat),
  -			    log_errors(FileName, Info1),
  -			    {{ok, {AnnAST1, Info1}}, #state{asts = lists:keyreplace(Key, 1, ASTs, {Key, {AnnAST1, Info1, NewChecksum}})}}
  -		    end;
  -		false ->
  -                    wrangler_error_logger:remove_from_logger(FileName),
  -		    {ok, {AnnAST, Info}} = parse_annotate_file(FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat),
  -		    log_errors(FileName, Info),
  -		    {{ok, {AnnAST, Info}}, #state{asts = [{Key, {AnnAST, Info, wrangler_misc:filehash(FileName)}}| ASTs]}}
  -	    end;
  -	_ ->
  -	    NewChecksum = wrangler_misc:filehash(FileName),
  -	    case dets:lookup(TabFile, Key) of
  -		[{Key, {AnnAST, Info, Checksum}}] when Checksum =:= NewChecksum ->
  -		    {{ok, {AnnAST, Info}}, State};
  -		_ ->
  -		    wrangler_error_logger:remove_from_logger(FileName),
  -		    {ok, {AnnAST1, Info1}} = parse_annotate_file(FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat),
  -		    dets:insert(TabFile, {Key, {AnnAST1, Info1, NewChecksum}}),
  -		    log_errors(FileName, Info1),
  -		    {{ok, {AnnAST1, Info1}}, State}
  -	    end
  -    end.
  -
  -update_ast_1({Key, {AnnAST, Info, _CheckSum}}, State = #state{dets_tab = TabFile, asts = ASTs}) ->
  +    {{ok, {zlib:zip(term_to_binary(AnnAST)), Info}}, State};
  +get_ast(Key = {FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat}, State = #state{ets_tab=EtsTab}) ->
  +    NewChecksum = wrangler_misc:filehash(FileName),
  +    case ets:lookup(EtsTab, Key) of
  +        [{Key, {_AnnAST, _Info, Checksum}}] when Checksum =:= NewChecksum andalso
  +                                                 NewChecksum =/= 0 ->
  +            {{ok, {ets, EtsTab, Key}}, State};
  +        false ->
  +            wrangler_error_logger:remove_from_logger(FileName),
  +            {ok, {AnnAST0, Info1}} = parse_annotate_file(FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat),
  +            log_errors(FileName, Info1),
  +            AnnAST1 =zlib:zip(term_to_binary(AnnAST0)),
  +            true=ets:insert(EtsTab, {Key, {AnnAST1, Info1, NewChecksum}}),
  +            {{ok, {ets, EtsTab, Key}}, State}
  +    end.
  +
  +update_ast_1({Key, {AnnAST, Info, _CheckSum}}, State = #state{ets_tab = EtsTab}) ->
       {FileName, _ByPassPreP, _SearchPaths, _TabWidth, _FileFormat} = Key,
       Checksum = wrangler_misc:filehash(FileName),
  -    case TabFile of
  -	none -> 
  -            Res = lists:keysearch(Key, 1, ASTs),
  -            case Res of
  -                {value, {Key, _}} ->
  -                    State#state{asts = lists:keyreplace(Key, 1, ASTs, {Key, {AnnAST, Info, Checksum}})};
  -                false ->
  -                    State#state{asts = [{Key, {AnnAST, Info, Checksum}}| ASTs]}
  -            end;                    
  -	_ ->
  -	    dets:delete(TabFile, Key),
  -	    dets:insert(TabFile, [{Key, {AnnAST, Info, Checksum}}]),
  -            State
  -    end.
  -    
  +    ets:delete(EtsTab, Key),
  +    ets:insert(EtsTab, [{Key, {AnnAST, Info, Checksum}}]),
  +    State.
  +     
   log_errors(FileName, Info) ->
       case lists:keysearch(errors, 1, Info) of
         {value, {errors, Error}} ->
  
positive.code: %% The return value is ignored.
  %%--------------------------------------------------------------------
  %%-spec(terminate/2::(any(), #state{}) -> ok).
  terminate(_Reason, _State=#state{dets_tab=TabFile}) ->
      dets:close(TabFile),
      _Res=file:delete(TabFile),
      TempDir = filename:dirname(TabFile),
      case file:list_dir(TempDir) of 
       	{ok, []} ->
       	    file:del_dir(TempDir);
       	_ -> ok
       end.
  
  %%--------------------------------------------------------------------
  %% Func: code_change(OldVsn, State, Extra) -> {ok, NewState}
  
negative.code: update_ast(Key={FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat}, SwpFileName) ->
      {ok, {AnnAST, Info}} = parse_annotate_file(SwpFileName, ByPassPreP, SearchPaths, TabWidth, FileFormat),
      CheckSum = wrangler_misc:filehash(FileName),
      gen_server:call(wrangler_ast_server, {update, {Key, {zlib:zip(term_to_binary(AnnAST)), Info, CheckSum}}}).
   
  %%--------------------------------------------------------------------
  %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
  %%                                      {reply, Reply, State, Timeout} |
  