anchor.diff:      Tokens = coalesce_strings(Tokens0),
       scan_file1(Tokens, Tf, From, St).
   
  -scan_file1([{'(',_Llp},{string,_Ls,Name},{',',_Lc},{integer,_Li,Ln},{')',_Lrp},
  -            {dot,_Ld}], Tf, From, St) ->
  +scan_file1([{'(',_Alp},{string,_As,Name},{',',_Ac},{integer,_Ai,Ln},{')',_Arp},
  +            {dot,_Ad}], Tf, From, St) ->
       Anno = erl_anno:new(Ln),
       enter_file_reply(From, Name, Anno, loc(Tf), generated),
       Ms0 = St#epp.macs,
  
positive.code: %%  If we are in an if body then convert to else and skip, if we are in an
  %%  else or not in anything report an error.
  
  scan_else([{dot,_Ld}], Else, From, St) ->
      case St#epp.istk of
  	['else'|Cis] ->
  	    epp_reply(From, {error,{loc(Else),
  
negative.code: macro_expansion([], T0) -> throw({error,loc(T0),premature_end}).
  
  %% expand_macros(Tokens, St)
  %%  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),
      Anno = 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, Anno, [], #{}), 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, Anno, Toks1, Bs), St)
      end.
  
  expand_macro1(Lm, M, Toks, Ms) ->
  