anchor.diff:  				  true -> case variable_replaceable(Expr1)  andalso 
    					      variable_replaceable(Expr2) of
   					      
  -					      true -> [{Expr1, Expr2}];
  +					      true -> 
  +						  [{Expr1, Expr2}];
   					      _ ->
   						  ?debug("Does not unify 7:\n~p\n", [{Expr1,Expr2}]),
   						  throw(non_unifiable)
  
positive.code:     end.
  
  normalise_expr(Exprs, RecordInfo) ->
      Exprs1=normalise_record_expr(Exprs, RecordInfo),
      do_normalise_fun_calls(Exprs1).
    
  normalise_record_expr(Exprs, RecordInfo) when is_list(Exprs)->
      [refac_util:full_buTP(fun do_normalise_record_expr_1/2, E, {RecordInfo, true})|| E<-Exprs];
  
  normalise_record_expr(Expr, RecordInfo) ->
      refac_util:full_buTP(fun do_normalise_record_expr_1/2, Expr, {RecordInfo,true}).
  
  do_normalise_fun_calls(Exprs)  when is_list(Exprs)->
      [refac_util:full_buTP(fun do_normalise_fun_calls_1/2, E, [])||E<-Exprs];
  
  do_normalise_fun_calls(Expr) ->
      refac_util:full_buTP(fun do_normalise_fun_calls_1/2, Expr, []).
  
  do_normalise_fun_calls_1(Node, _Others) ->
      case refac_syntax:type(Node) of
  	application ->
  	    Op = refac_syntax:application_operator(Node),
  	    Args = refac_syntax:application_arguments(Node),
  	    case refac_syntax:type(Op) of 
  		atom ->
  		    As = refac_syntax:get_ann(Op),
  		    case lists:keysearch(fun_def, 1, As) of
  			{value, {fun_def, {M, _FunName, _Arity, _UsePos, _DefinePos}}} ->
  			    Op1 =refac_util:rewrite(
  				   Op, refac_syntax:module_qualifier(set_random_pos(refac_syntax:atom(M)), Op)),
  				refac_util:rewrite(Node, refac_syntax:application(Op1,Args));
  			_ -> Node
  		    end;
  		_ -> Node
  	    end;
  	_ -> Node
      end. 					    
  
  
  denormalise_expr(Exprs, _RecordInfo) ->
     do_denormalise_fun_calls(Exprs).
    
  do_denormalise_fun_calls(Exprs)  when is_list(Exprs)->
      [refac_util:full_buTP(fun do_denormalise_fun_calls_1/2, E, [])||E<-Exprs];
  
  do_denormalise_fun_calls(Expr) ->
      refac_util:full_buTP(fun do_denormalise_fun_calls_1/2, Expr, []).
  
  do_denormalise_fun_calls_1(Node, _Others) ->
      case refac_syntax:type(Node) of
  	application ->
  	    Op = refac_syntax:application_operator(Node),
  	    Args = refac_syntax:application_arguments(Node),
  	    case refac_syntax:type(Op) of 
  		module_qualifier ->
  		    M = refac_syntax:module_qualifier_argument(Op),
  		    F = refac_syntax:module_qualifier_body(Op),
  		    case refac_syntax:type(M)==atom andalso (refac_syntax:get_pos(M) < {0, 0}) of 
  			true ->
  			    refac_util:rewrite(Node, refac_syntax:application(F, Args));
  			_ -> Node
  		    end;
  		_ -> Node
  	    end;
  	_ -> Node
      end. 					    
  
  get_start_end_loc(Exprs) when is_list(Exprs) ->
      E1= hd(Exprs),
  
negative.code: 	_ -> {Node, false}
      end.
  
  
  %% expressions which should not be replaced by a variable.
  %% how about expressions has side effects?
  variable_replaceable(Exp) ->
      case lists:keysearch(category,1, refac_syntax:get_ann(Exp)) of 
  	{value, {category, record_field}} -> false;
  