anchor.diff:  
   parse_tokens(Ts) ->
       parse_tokens(Ts, fun fix_form/1).
  +    
   
   parse_tokens(Ts, Fix) ->
  -    case refac_parse:parse_form(Ts) of
  +      case refac_parse:parse_form(Ts) of
           {ok, Form} ->
   	    Form;
           {error, IoErr} ->
  
positive.code:     scan_macros_1([], Rest, [{atom,L,macro_atom(Type,LA,A)} | As], Opt).
  
  macro_call([{'(',_}, {')',_}], L, {_, Ln, _}=N, Rest, As, Opt) ->
      {Open, Close} = parentheses(As),
      scan_macros_1([], Rest,
  		  lists:reverse(Open ++ [{atom,L,?macro_call},
  					 {'(',L}, N, {')',Ln}] ++ Close,
  				As), Opt);
  macro_call([{'(',_} | Args], L, {_, Ln, _}=N, Rest, As, Opt) ->
      {Open, Close} = parentheses(As),
      %% note that we must scan the argument list; it may not be skipped
      scan_macros_1(Args ++ Close,
  		  Rest,
  
negative.code: %% don't insert parentheses after a string token, to avoid turning
  %% `"string" ?macro' into a "function application" `"string"(...)'
  %% (see note at top of file)
  parentheses([{string, _, _} | _], _) ->
      {[], []};
  parentheses(_, L) ->
      {[{'(',L}], [{')',L}]}.
  
  %% (after a macro has been found and the arglist skipped, if any)
  scan_macros_1(Args, [{string, L, _} | _]=Rest, As,
  