anchor.diff:  	end,
       refac_syntax_lib:fold(F, [], Tree).
   
  +
  +%% This function is a duplicated of refac_gen:collect_guard_ranges/1, and 
  +%% will be removed later on.
  +collect_guard_ranges(Node) ->
  +    Fun=fun(T, Acc) ->
  +		case refac_syntax:type(T) of
  +		    clause ->
  +			G = refac_syntax:clause_guard(T),
  +			case G of 
  +			    none ->
  +				Acc;
  +			    _ -> 
  +				[refac_util:get_range(G)|Acc]
  +			end;
  +		    _ ->Acc
  +		end
  +	end,
  +    refac_syntax_lib:fold(Fun, [], Node).
  +  	
  +
  +collect_macro_arg_ranges(Node) ->	
  +    Fun = fun(T, Acc) ->
  +		  case refac_syntax:type(T) of 
  +		      macro ->
  +			  Args = refac_syntax:macro_arguments(T),
  +			  case Args of 
  +			      none -> Acc;
  +			      _ -> 
  +				  [refac_util:get_range(A)||A<-Args]++Acc
  +			  end;
  +		      _ -> Acc
  +		  end
  +	  end,
  +    refac_syntax_lib:fold(Fun, [], Node).
   
   is_guard_expr(Node) ->
       As = refac_syntax:get_ann(Node),
  
positive.code: 	[] -> ExpList = [],
  	      throw({error, "You have not selected an expression or a sequence of expressions, "
  		     "or the function containing the expression(s) selected is malformed."});
  	ExpList -> ExpList
      end,
      {ok, Fun} = refac_util:expr_to_fun(AnnAST, hd(ExpList)),
      ok=side_cond_analysis(FileName, Info, Fun, ExpList, list_to_atom(NewFunName)),
  
negative.code: 
  replace_expr_with_fun_call(Form, ExpList, NewFunName, ParNames, VarsToExport) ->
      Op = refac_syntax:atom(NewFunName),
      Pars = [refac_syntax:variable(P) || P <- ParNames],
      FunCall = refac_syntax:copy_pos(hd(ExpList), refac_syntax:application(Op, Pars)),
      NewExpr = case length(VarsToExport) of
  		0 ->
  		    FunCall;
  		1 ->
  		    Pats = refac_syntax:variable(hd(VarsToExport)),
  		    refac_syntax:match_expr(Pats, FunCall);
  		_ ->
  		    Pats = refac_syntax:tuple([refac_syntax:variable(V) || V <- VarsToExport]),
  		    refac_syntax:match_expr(Pats, FunCall)
  	      end,
      case length(ExpList) == 1 andalso refac_syntax:type(hd(ExpList)) =/= match_expr of
        true ->
  	  {Form1, _} = refac_util:stop_tdTP(
  			 fun do_replace_expr_with_fun_call_1/2, Form, {NewExpr, hd(ExpList)}),
  	  Form1;
        _ ->
  	  {Form1, _} = refac_util:stop_tdTP(
  			 fun do_replace_expr_with_fun_call_2/2, Form, {NewExpr, ExpList}),
  	  Form1
      end.
      
  do_replace_expr_with_fun_call_1(Tree, {NewExpr, Expr}) ->
  