anchor.diff:  %% API
   -export([parse_annotate_file/2, parse_annotate_file/3,
   	 parse_annotate_file/4, parse_annotate_file/5,
  -	 quick_parse_annotate_file/3]).
  +	 quick_parse_annotate_file/3, 
  +         mfa_to_fun_def/2]).
   %% API
   -export([start_ast_server/0, update_ast/2, add_range/2]).
   
  
positive.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(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};
          _ -> 
              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),
      ets:delete(EtsTab, Key),
      ets:insert(EtsTab, [{Key, {AnnAST, Info, Checksum}}]),
      State.
       
  log_errors(FileName, Info) ->
  
negative.code:       false -> ok
      end.
  
  ast_to_list(AnnAST) ->
      Forms = wrangler_syntax:form_list_elements(AnnAST),
      Len = length(Forms),
      [case wrangler_syntax:type(Form) of 
           function -> 
               {api_refac:fun_define_info(Form), 
                zlib:zip(term_to_binary(Form))};
           _ -> 
             {SeqNo,zlib:zip(term_to_binary(Form))}
             end
       ||{SeqNo, Form}<-lists:zip(lists:seq(1,Len), Forms)].
  
  list_to_ast(FormsWithKey, Ann) ->
      wrangler_syntax:set_pos(
        wrangler_syntax:set_ann(
          wrangler_syntax:form_list(
            [binary_to_term(zlib:unzip(Form))||
                Form<-element(2, lists:unzip(FormsWithKey))]), Ann),{1,1}).
      
  
  
      
  
  %% =====================================================================
  %% @doc Parse an Erlang file, and annotate the abstract syntax tree with static semantic 
  