anchor.diff:  %%------------------------------------------------------------------
   %% -spec(get_ast/1::({filename(), boolean(), [dir()], integer(), atom()}) ->
   %% 	     {ok, {syntaxTree(), moduleInfo()}}).
  -get_ast(Key={_FileName, _ByPassPreP, _SearchPaths, _TabWidth, _FileFormat}) ->
  +get_ast(Key) ->
       gen_server:call(wrangler_ast_server, {get,Key}, 500000).
   
  +-spec(mfa_to_fun_def(filename(), mfa()) -> syntaxTree()|none).
  +mfa_to_fun_def(File, {M,F,A}) ->
  +    Res=gen_server:call(wrangler_ast_server, {get_fun_def, {File, {M,F,A}}}, 500000),
  +    element(2, Res).
   
   %%-type(modifyTime()::{{integer(), integer(), integer()},{integer(), integer(), integer()}}).
   %%-spec(update_ast/2::({filename(),boolean(), [dir()], integer(), atom()}, {syntaxTree(), moduleInfo(), modifyTime()}) -> ok).
  -update_ast(Key={_FileName, _ByPassPreP, _SearchPaths, _TabWidth, _FileFormat}, {AnnAST, Info, CheckSum}) ->
  -    gen_server:call(wrangler_ast_server, {update, {Key, {AnnAST, Info, CheckSum}}});
  -update_ast(Key={FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat}, SwpFileName) ->
  -    {ok, {AnnAST, Info}} = parse_annotate_file(SwpFileName, ByPassPreP, SearchPaths, TabWidth, FileFormat),
  +update_ast({_FileName, false, _, _, _}, _) -> ok;
  +update_ast({FileName, true, _SearchPaths, _TabWidth, _FileFormat}, {AnnAST, Info, CheckSum, Ann}) ->
  +    gen_server:call(wrangler_ast_server, {update, {FileName, {AnnAST, Info, CheckSum, Ann}}});
  +update_ast({FileName, true, SearchPaths, TabWidth, FileFormat}, SwpFileName) ->
  +    {ok, {AnnAST, Info}} = parse_annotate_file(SwpFileName, true, SearchPaths, TabWidth, FileFormat),
       CheckSum = wrangler_misc:filehash(FileName),
  -    gen_server:call(wrangler_ast_server, {update, {Key, {zlib:zip(term_to_binary(AnnAST)), Info, CheckSum}}}).
  +    Ann = wrangler_syntax:get_ann(AnnAST),
  +    gen_server:call(wrangler_ast_server, {update, {FileName, {ast_to_list(AnnAST), Info, CheckSum, Ann}}}).
    
   %%--------------------------------------------------------------------
   %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
  
positive.code:       false -> ok
      end.
  
  
  %% =====================================================================
  %% @doc Parse an Erlang file, and annotate the abstract syntax tree with static semantic 
  
negative.code:     {ok, {AnnAST, Info}} = parse_annotate_file(FileName, false, SearchPaths, TabWidth, FileFormat),
      log_errors(FileName, Info),
      {{ok, {zlib:zip(term_to_binary(AnnAST)), Info}}, State};
  get_ast({FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat}, State = #state{ets_tab=EtsTab}) ->
      NewChecksum = wrangler_misc:filehash(FileName),
      case ets:lookup(EtsTab, FileName) of
          [{FileName, {_AnnAST, _Info, Checksum, _Ann}}] when Checksum =:= NewChecksum andalso
                                                        NewChecksum =/= 0 ->
              {{ok, {ets, EtsTab, FileName}}, State};
          _ -> 
              wrangler_error_logger:remove_from_logger(FileName),
              {ok, {AnnAST0, Info1}} = parse_annotate_file(FileName, ByPassPreP, SearchPaths, TabWidth, FileFormat),
              log_errors(FileName, Info1),
              AnnAST1 =ast_to_list(AnnAST0),
              Ann = wrangler_syntax:get_ann(AnnAST0),
              true=ets:insert(EtsTab, {FileName, {AnnAST1, Info1, NewChecksum, Ann}}),
              {{ok, {ets, EtsTab, FileName}}, State}
      end.
  
  update_ast_1({FileName, {AnnAST, Info, _CheckSum, Ann}}, State = #state{ets_tab = EtsTab}) ->
      Checksum = wrangler_misc:filehash(FileName),
      ets:delete(EtsTab, FileName),
      ets:insert(EtsTab, [{FileName, {AnnAST, Info, Checksum, Ann}}]),
      State.
       
  log_errors(FileName, Info) ->
  