anchor.diff:      {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}) ->
  +get_ast({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};
  +    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 =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,
  +            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, Key),
  -    ets:insert(EtsTab, [{Key, {AnnAST, Info, Checksum}}]),
  +    ets:delete(EtsTab, FileName),
  +    ets:insert(EtsTab, [{FileName, {AnnAST, Info, Checksum, Ann}}]),
       State.
        
   log_errors(FileName, Info) ->
  
positive.code:       false -> ok
      end.
  
  
  %% =====================================================================
  %% @doc Parse an Erlang file, and annotate the abstract syntax tree with static semantic 
  
negative.code: 	    ?wrangler_io("wrangler_ast_server is not defined\n", []),
  	    parse_annotate_file(FName, ByPassPreP, SearchPaths, TabWidth, FileFormat);
  	_ ->
              get_ast({FName, ByPassPreP,SearchPaths, TabWidth, FileFormat})
      end.
  
  -spec(parse_annotate_file(FName::filename(), ByPassPreP::boolean(), SearchPaths::[dir()], integer(), atom())
  