anchor.diff:  				      application ->
   					  Operator = add_category(refac_syntax:application_operator(MacroHead), macro_name),
   					  Arguments = add_category(refac_syntax:application_arguments(MacroHead), attribute),
  -					  refac_syntax:copy_attrs(MacroHead, refac_syntax:application(Operator, Arguments));
  +					  rewrite(MacroHead, refac_syntax:application(Operator, Arguments));
   				      _ -> add_category(MacroHead, macro_name)
   				    end,
   		       MacroBody1 = add_category(MacroBody, attribute),
  -		       Node1 = refac_syntax:copy_attrs(Node, refac_syntax:attribute(Name, [MacroHead1|MacroBody1])),
  +		       Node1 = rewrite(Node, refac_syntax:attribute(Name, [MacroHead1| MacroBody1])),
   		       {refac_syntax:add_ann({category, attribute}, Node1), true};
   		   _ -> {refac_syntax:add_ann({category, C}, Node), false}
   		 end;
  
positive.code: 			none -> none;
  			_ -> add_category(G, guard_expression)
  		      end,
  		 Node1 = refac_syntax:copy_attrs(Node, refac_syntax:clause(P1, G1, B1)),
  		 {refac_syntax:add_ann({category, clause}, Node1), true};
  	     match_expr ->
  		 P = refac_syntax:match_expr_pattern(Node),
  		 B = refac_syntax:match_expr_body(Node),
  		 P1 = add_category(P, pattern),
  		 B1 = add_category(B, C),
  		 Node1 = refac_syntax:copy_attrs(Node, refac_syntax:match_expr(P1, B1)),
  		 {refac_syntax:add_ann({category, C}, Node1), true};
  	     operator -> {refac_syntax:add_ann({category, operator}, Node), true}; %% added to fix bug 13/09/2008.
  	     application ->
  		   Op = refac_syntax:application_operator(Node),
  		   Args = refac_syntax:application_arguments(Node),
  		   Op1 = add_category(Op, application_op),
  		   Args1 = add_category(Args, C),
  		   Node1 = refac_syntax:copy_attrs(Node, refac_syntax:application(Op1, Args1)),
  		   {refac_syntax:add_ann({category, C}, Node1), true};						   
  	     arity_qualifier ->
  		 Fun = add_category(refac_syntax:arity_qualifier_body(Node), arity_qualifier),
  		 A = add_category(refac_syntax:arity_qualifier_argument(Node), arity_qualifier),
  
negative.code:     atom_to_list(A) ++ " at: {" ++ integer_to_list(Line) ++ "," ++ integer_to_list(Col) ++ "}" ++ T1.
  
  
  annotate_bindings(FName, AST, Info, Ms, _AnnotateLevel, TabWidth) ->
      AnnAST0 = adjust_locations(FName,AST, TabWidth),
      AnnAST1 = add_fun_define_locations(AnnAST0, Info),
      AnnAST2 =add_range(FName, AnnAST1, TabWidth),
      AnnAST3 = add_tokens(FName, AnnAST2, TabWidth),
      AnnAST4 = refac_syntax_lib:annotate_bindings(AnnAST3, ordsets:new(), Ms),
      AnnAST5 = update_var_define_locations(AnnAST4),
      add_category(AnnAST5).
      
  %% Add  start and end location to each AST node.
  add_range(FName, AST, TabWidth) ->
      Toks = tokenize(FName, true,  TabWidth),    
  