anchor.diff:  %% ============================================
   -module(refac_util).
   
  --export([ghead/2, glast/2, to_lower/1, to_upper/1, try_evaluation/1,
  -         is_var_name/1, is_fun_name/1, is_expr/1, is_pattern/1,
  -	 is_exported/2, inscope_funs/1,
  -         once_tdTU/3, stop_tdTP/3, full_tdTP/3,full_buTP/3,
  -         pos_to_fun_name/2, pos_to_fun_def/2,pos_to_var_name/2,
  -         pos_to_expr/3, pos_to_expr_list/3, pos_to_expr_or_pat_list/3, pos_to_syntax_units/6, 
  -	 pos_to_syntax_units/4, expr_to_fun/2,get_range/1,get_toks/1, concat_toks/1, tokenize/3,
  -         get_var_exports/1, get_env_vars/1, get_bound_vars/1, get_free_vars/1, 
  -         get_client_files/2, expand_files/2, get_modules_by_file/1,
  -         reset_attrs/1, update_ann/2,parse_annotate_file_1/5, parse_annotate_file/3,
  -         parse_annotate_file/4,write_refactored_files/1, write_refactored_files_for_preview/2,
  -         build_lib_side_effect_tab/1, build_local_side_effect_tab/2,
  -	 build_scc_callgraph/1,build_callercallee_callgraph/1, has_side_effect/3,
  -         callback_funs/1,auto_imported_bifs/0, called_funs/2, file_format/1, rewrite/2,
  -	 predefined_macros/0, default_incls/0]).
  +-export([ghead/2, glast/2, to_lower/1, to_upper/1,
  +	 try_evaluation/1, is_var_name/1, is_fun_name/1,
  +	 is_expr/1, is_pattern/1, is_exported/2, inscope_funs/1,
  +	 once_tdTU/3, stop_tdTP/3, full_tdTP/3, full_buTP/3,
  +	 pos_to_fun_name/2, pos_to_fun_def/2, pos_to_var_name/2,
  +	 pos_to_expr/3, pos_to_expr_list/3,
  +	 pos_to_expr_or_pat_list/3, pos_to_syntax_units/6,
  +	 pos_to_syntax_units/4, expr_to_fun/2, get_range/1,
  +	 get_toks/1, concat_toks/1, tokenize/3,
  +	 get_var_exports/1, get_env_vars/1, get_bound_vars/1,
  +	 get_free_vars/1, get_client_files/2, expand_files/2,
  +	 get_modules_by_file/1, reset_attrs/1, update_ann/2,
  +	 parse_annotate_file_1/5, parse_annotate_file/3,
  +	 parse_annotate_file/4, write_refactored_files/1,
  +	 write_refactored_files_for_preview/2,
  +	 build_lib_side_effect_tab/1,
  +	 build_local_side_effect_tab/2, has_side_effect/3,
  +	 callback_funs/1, auto_imported_bifs/0, file_format/1,
  +	 rewrite/2, predefined_macros/0, default_incls/0]).
   
   -export([test_framework_used/1]).
   -export([analyze_free_vars/1, remove_duplicates/1]).
  
positive.code:     SideEffectFile = filename:join(CurrentDir, "local_side_effect_tab"),
      LibSideEffectFile = filename:join(?WRANGLER_DIR, "plt/side_effect_plt"),
      LibPlt = from_dets(lib_side_effect_plt, LibSideEffectFile),
      Dirs = lists:usort([CurrentDir | SearchPaths]),
      Files = refac_util:expand_files(Dirs, ".erl"),
      SideEffectFileModifiedTime = filelib:last_modified(SideEffectFile),
      FilesToAnalyse = [F || F <- Files, SideEffectFileModifiedTime < filelib:last_modified(F)],
  
negative.code: -spec(build_lib_side_effect_tab([dir()]) -> true).
  build_lib_side_effect_tab(SearchPaths) ->
      Plt = ets:new(side_effect_table, [set, public]),
      #callgraph{callercallee = _CallerCallee, scc_order = Sccs, external_calls = _E} = wrangler_callgraph_server:build_scc_callgraph(SearchPaths),
      build_side_effect_tab(Sccs, Plt, ets:new(dummy_tab, [set, public])),
      ets:insert(Plt, bifs_side_effect_table()),
      File = filename:join(?WRANGLER_DIR, "plt/side_effect_plt"),
  