anchor.diff:                  io_lib:write(Symbol)
           end,
       throw({error,loc(Token),{call,[$?|T]}});
  -expand_macros([T|Ts], Ms) ->
  -    [T|expand_macros(Ts, Ms)];
  -expand_macros([], _Ms) -> [].
  +expand_macros([T|Ts], St) ->
  +    [T|expand_macros(Ts, St)];
  +expand_macros([], _St) -> [].
   
   %% bind_args(Tokens, MacroLocation, MacroName, ArgumentVars, Bindings)
   %%  Collect the arguments to a macro call.
  
positive.code:     [T|macro_expansion(Ts, T)];
  macro_expansion([], Anno0) -> throw({error,loc(Anno0),premature_end}).
  
  %% expand_macros(Tokens, Macros)
  %% 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, Ms0) ->
      {Ms,U} = Ms0,
      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, [], #{}), Ms0),
  	    expand_macros(Toks1++Toks, Ms0);
  	{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), Ms0)
      end.
  
  expand_macro1(Lm, M, Toks, Ms) ->
  
negative.code: 	    wait_req_scan(St)
      end;
  scan_toks(Toks0, From, St) ->
      case catch expand_macros(Toks0, St) of
  	Toks1 when is_list(Toks1) ->
  	    epp_reply(From, {ok,Toks1}),
  	    wait_req_scan(St#epp{macs=scan_module(Toks1, St#epp.macs)});
  