anchor.diff:  scan_toks([{'-',_Lh},{atom,_Le,endif}=Endif|Toks], From, St) ->
       scan_endif(Toks, Endif, From, St);
   scan_toks([{'-',_Lh},{atom,_Lf,file}=FileToken|Toks0], From, St) ->
  -    case catch expand_macros(Toks0, {St#epp.macs, St#epp.uses}) of
  +    case catch expand_macros(Toks0, St) of
   	Toks1 when is_list(Toks1) ->
               scan_file(Toks1, FileToken, From, St);
   	{error,ErrL,What} ->
  
positive.code:                 io_lib:write(Symbol)
          end,
      throw({error,loc(Token),{call,[$?|T]}});
  expand_macros([T|Ts], Ms) ->
      [T|expand_macros(Ts, Ms)];
  expand_macros([], _Ms) -> [].
  
  %% bind_args(Tokens, MacroLocation, MacroName, ArgumentVars, Bindings)
  %%  Collect the arguments to a macro call.
  
negative.code:     [T|macro_expansion(Ts, T)];
  macro_expansion([], Anno0) -> throw({error,loc(Anno0),premature_end}).
  
  %% expand_macros(Tokens, St)
  %% expand_macro(Tokens, MacroToken, RestTokens)
  %%  Expand the macros in a list of tokens, making sure that an expansion
  %%  gets the same location as the macro call.
  
  expand_macros(MacT, M, Toks, St) ->
      #epp{macs=Ms,uses=U} = St,
      Lm = loc(MacT),
      Tinfo = element(2, MacT),
      case expand_macro1(Lm, M, Toks, Ms) of
  	{ok,{none,Exp}} ->
  	    check_uses([{M,none}], [], U, Lm),
  	    Toks1 = expand_macros(expand_macro(Exp, Tinfo, [], #{}), St),
  	    expand_macros(Toks1++Toks, St);
  	{ok,{As,Exp}} ->
  	    check_uses([{M,length(As)}], [], U, Lm),
  	    {Bs,Toks1} = bind_args(Toks, Lm, M, As, #{}),
  	    expand_macros(expand_macro(Exp, Tinfo, Toks1, Bs), St)
      end.
  
  expand_macro1(Lm, M, Toks, Ms) ->
  