anchor.diff:  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, {AnnAST, Info, CheckSum}}}).
  +    gen_server:call(wrangler_ast_server, {update, {Key, {zlib:zip(term_to_binary(AnnAST)), Info, CheckSum}}}).
    
  -get_temp_dir() ->
  -    gen_server:call(wrangler_ast_server, get_temp_dir).
   %%--------------------------------------------------------------------
   %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
   %%                                      {reply, Reply, State, Timeout} |
  
positive.code:     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}) ->
      {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.
      
  log_errors(FileName, Info) ->
      case lists:keysearch(errors, 1, Info) of
        {value, {errors, Error}} ->
  
negative.code: 
  -include("../include/wrangler_internal.hrl").
  
  -record(state, {ets_tab=none}).
  
  %%====================================================================
  %% API
  