anchor.diff:      {Ef,_} = expand(F, Env, #mac{expand=true}),
       Ef.
   
  -%% expand_forms(FileForms, Env) -> {FileForms,Env}.
  +%% expand_forms(FileForms, Env) ->
  +%%     {ok,FileForms,Env,Warnings} | {error,Errors,Warnings}.
   %%  Expand forms in "file format", {Form,LineNumber}.
   
   expand_forms(Fs, Env) ->
       do_forms(Fs, Env, true).
   
  -%% macro_forms(FileForms, Env) -> {FileForms,Env}.
  +%% macro_forms(FileForms, Env) ->
  +%%     {ok,FileForms,Env,Warnings} | {error,Errors,Warnings}.
   %%  Collect, and remove, all macro definitions in a list of forms. All
   %%  top level macro calls are also expanded and any new macro
   %%  definitions are collected.
  
positive.code: 	    no -> {no,E0,St0}
  	end
      catch
  	_:Error -> {no,E0,add_error(L, Error, St0)}
      end;
  pass_expand_expr(E, _, _, St, _) -> {no,E,St}.
  
  %% add_error(Line, Error, State) -> State.
  %% add_warning(Line, Warning, State) -> State.
  
negative.code: %%  Nesting of forms by progn is preserved.
  
  pass([{['progn'|Pfs0],L}|Fs0], Env0, St0) ->
      {Pfs1,Env1,St1} = pass_progn(Pfs0, Env0, St0#mac{line=L}),
      {Fs1,Env2,St2} = pass(Fs0, Env1, St1),
      {[{['progn'|Pfs1],L}|Fs1],Env2,St2};
  pass([{['eval-when-compile'|Ewcs0],L}|Fs0], Env0, St0) ->
      {Ecws1,Env1,St1} = pass_ewc(Ewcs0, Env0, St0#mac{line=L}),
      {Fs1,Env2,St2} = pass(Fs0, Env1, St1),
      {[{['progn'|Ecws1],L}|Fs1],Env2,St2};
  pass([{['define-macro'|Def]=F,L}|Fs0], Env0, St0) ->
      case pass_define_macro(Def, Env0, St0#mac{line=L}) of
  	{yes,Env1,St1} -> pass(Fs0, Env1, St1);
  	{no,St1} ->
  	    %% Ignore it and pass it on to generate error later.
  