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: 
  
  test_framework_used(FileName) ->
      case refac_epp_dodger:parse_file(FileName, []) of 
  	{ok, Forms}->
  	    Strs =lists:flatmap(fun(F) ->
  					case refac_syntax:type(F) of 
  					    attribute ->
  						Name = refac_syntax:attribute_name(F),
  						Args = refac_syntax:attribute_arguments(F),
  						case refac_syntax:type(Name) of 
  						    atom-> 
  							AName = refac_syntax:atom_value(Name),
  							case (AName==include) orelse (AName==include_lib) of
  							    true ->
  								lists:flatmap(fun(A)-> case A of 
  											   {string, _, Str} -> [Str];
  											   _ -> []
  										       end
  									      end, Args);
  							   _ -> []
  						       end;
  						   _ -> []
  					       end;
  					   _ -> []
  				       end
  			       end,Forms),
  	    Eunit = lists:any(fun(S) -> lists:suffix("eunit.hrl", S) end,Strs),
  	    EQC = lists:any(fun(S) -> lists:suffix("eqc.hrl", S) end, Strs),
  	    EQC_STATEM  =lists:any(fun(S) -> lists:suffix("eqc_statem.hrl", S) end, Strs),
  	    TestSever = lists:suffix(FileName, "_SUITE.erl") and 
  		lists:any(fun(S) -> lists:suffix("test_server.hrl", S) end, Strs),
  	    CommonTest= lists:suffix(FileName, "_SUITE.erl") and 
  		lists:any(fun(S) -> lists:suffix("ct.hrl", S) end, Strs),
  	    lists:flatmap(fun({F, V}) -> case V of 
  					     true -> [F];
  					     _ -> []
  					 end
  			  end,[{eunit, Eunit}, {eqc, EQC}, {eqc_statem, EQC_STATEM}, 
  			       {testserver, TestSever}, {commontest, CommonTest}]);
  	_ -> []
      end.
     
      
  
negative.code: 
  
  
  %%=================================================================
  %% @doc Return true if the abstract syntax tree represented by Node has side effect, 
  %%      otherwise return false. As to parameters, File represents filename of the
  