anchor.diff:  	    throw({error, "The new variable name conflicts with, or shadows, "
   			  "existing variable declarations."});
   	false -> ok
  +    end.
  +
  +variable_replaceable(Exp) ->
  +    Ann = refac_syntax:get_ann(Exp),
  +    case lists:keysearch(category, 1, Ann) of
  +	{value, {category, record_field}} ->
  +	    throw({error, "Record field cannot be replaced by a variable."});
  +	{value, {category, record_type}} ->
  +	    throw({error, "Record type cannot be replaced by a variable."});
  +	{value, {category, guard_expression}} ->
  +            throw({error, "Introducing a variable in a guard expression is not supported."});
  +        {value, {category, {macro_name, Num, _}}} when Num/=none ->
  +	    throw({error, "Replacing a macro name with a variable is not supported."});
  +	_ -> ok
       end.
   
   get_bound_vars(Tree) ->
  
positive.code:     end.
  
  cond_check(Form, Expr, NewVarName) ->
      {Body, Statement} = get_inmost_enclosing_body_expr(Form, Expr),
      ExprFVs = refac_util:get_free_vars(Expr),
      SEnvs = refac_util:get_env_vars(Statement),
      case ExprFVs -- SEnvs of
  	[] ->
  	    ok;
  	Vs ->
  	    Msg = io_lib:format("The exprssion selected contains locally "
  				"declared variables(s) ~p.", [Vs]),
  	    throw({error, lists:flatten(Msg)})
  
negative.code: 
  make_match_expr(Expr, NewVarName) ->
      Pat = refac_syntax:variable(NewVarName),
      PreComs = refac_syntax:get_precomments(Expr),
      PostComs=refac_syntax:get_postcomments(Expr),
      Expr1=refac_syntax:set_precomments(refac_syntax:set_postcomments(Expr, []),[]),
      MatchExpr=refac_syntax:match_expr(Pat, Expr1),
      refac_syntax:set_precomments(refac_syntax:set_postcomments(MatchExpr, PostComs), PreComs).
  
  get_inmost_enclosing_clause(Form, Expr) -> 
      ExprPos = refac_syntax:get_pos(Expr),
      Fun = fun (Node, S) ->
  		  Type = refac_syntax:type(Node),
  