anchor.diff:      %% Use the default undef exception handler.
       Excep = [lambda,[a,b],
                [':',error_handler,raise_undef_exception,['MODULE'],a,b]],
  -    [{make_huf(Excep, []),L}].
  -
  -make_huf(Huf, Doc) ->
  +    [{make_huf([], Excep),L}].
  +
  +make_huf(Doc, Huf) ->
       [defun,'$handle_undefined_function',[f,as],Doc,
        ['case',['LFE-EXPAND-EXPORTED-MACRO',f,as,[':',lfe_env,new]],
         [[tuple,?Q(yes),exp],[':',lfe_eval,expr,exp]],
         [?Q(no),[funcall,Huf,f,as]]]].
  -
  -%% macro_case_clause(Name, Def) -> CaseClause.
  -%%  Build a case clause for expanding macr Name.
  -
  -macro_case_clause(Name, Def) ->
  -    Cls = get_macro_cls(Def),
  -    Ccls = [ macro_clause(Args, B) || {Args,B} <- Cls ],
  -    [?Q(Name),['case',?ARGSVAR|Ccls]].          %Don't catch errors
  -
  -%% get_macro_cls(MacroDef) -> [{ArgPat,Body}].
  -%%  Build a list of arg pattern and body for each clause. In the
  -%%  definition arguments the first is the argument pattern, the second
  -%%  is the environment variable $ENV. Be nice.
  -
  -get_macro_cls(['lambda',[Arg|_]|B]) ->
  -    [{Arg,B}];                                  %Only one clause here
  -get_macro_cls(['match-lambda'|Cls]) ->
  -    [ {Arg,B} || [[Arg|_]|B] <- Cls ];
  -get_macro_cls(_) -> [].                         %Ignore bad formed macros
  -
  -macro_clause(Args, [['when'|_]=W|Body]) ->
  -    [Args,W,[tuple,?Q(yes),[progn|Body]]];
  -macro_clause(Args, Body) ->
  -    [Args,[tuple,?Q(yes),[progn|Body]]].
  
positive.code: 
  -define(NODOC, []).                             %Empty documentation
  
  -record(umac, {mline=[],expm=[],env=[]}).
  
  %% We need these variables to have a funny name.
  -define(NAMEVAR, '|- MACRO NAME -|').
  -define(ARGSVAR, '|- CALL ARGS -|').
  
  %% module(ModuleForms, CompState) -> {ModuleForms,CompState}.
  %% module(ModuleDef, ModuleForms, UmacState, CompState) ->
  
negative.code:     Exp = [export,['LFE-EXPAND-EXPORTED-MACRO',3],
             ['$handle_undefined_function',2]],
      Md1 = {['define-module',Name,Doc,Exp|Mdef],L},
      {[Md1|Fs1 ++ Umac],Cst}.
  
  collect_macros(Fs, Mst) ->
      lists:foldl(fun collect_macro/2, Mst, Fs).
  