anchor.diff:  
        
   do_find_anti_unifier(Exprs1, Exprs2) when is_list(Exprs1) andalso is_list(Exprs2)->
  -    case length(Exprs1) == length(Exprs2) andalso Exprs1=/=[] of
  +    case length(Exprs1) == length(Exprs2) of
   	true ->
  -	    lists:append([do_find_anti_unifier(E1, E2) || 
  -			     {E1, E2} <-lists:zip(Exprs1, Exprs2)]);
  +	    case Exprs1 of 
  +		[] -> [];
  +		_ -> 
  +		    lists:append([do_find_anti_unifier(E1, E2) || 
  +				     {E1, E2} <-lists:zip(Exprs1, Exprs2)])
  +	    end;
   	false ->
   	    ?debug("Does not unify 1:\n~p\n", [{Exprs1,Exprs2}]), 
   	    throw(non_unifiable)
  
positive.code: 			 ?debug("Does not unify 4:\n~p\n", [{Expr1,Expr2}]), 
  			 throw(non_unifiable)
  	       end;
  	true -> case refac_syntax:is_literal(Expr1) of 
  		 true ->  
  		     case refac_syntax:concrete(Expr1) == 
  			 refac_syntax:concrete(Expr2) of 
  			 true ->
  			     [];
  			 _ ->
  			     case variable_replaceable(Expr1) andalso
  				 variable_replaceable(Expr2) of
  				 true ->
  				     [{Expr1, Expr2}];
  				 false -> throw(non_unificable)
  			     end
  		     end;			
  		_ -> case T1 of 
  			 variable ->
  			      case {is_macro_name(Expr1),is_macro_name(Expr2)} of
  
negative.code: 			 _ -> case refac_syntax:is_leaf(Expr1) of
  				  true -> case variable_replaceable(Expr1)  andalso 
   					      variable_replaceable(Expr2) of
  				      
  					      true -> 
  						  [{Expr1, Expr2}];
  					      _ ->
  