anchor.diff:      case lfe_lib:is_core_form(Name) of
   	true -> no;				%Don't expand core forms
   	false ->
  +	    St = #mac{expand=false},		%Default state
   	    case get_mbinding(Name, Env) of
   		{yes,Def} ->
   		    %% User macro bindings.
  -		    {Exp,_} = exp_macro(Call, Def, Env, #mac{expand=false}),
  +		    {Exp,_} = exp_userdef_macro(Call, Def, Env, St),
   		    {yes,Exp};
   		no ->
   		    %% Default macro bindings.
  -		    case exp_predef(Call, Env, #mac{}) of
  +		    case exp_predef_macro(Call, Env, St) of
   			{yes,Exp,_} -> {yes,Exp};
   			no -> no
   		    end
  
positive.code: 
  exp_bif(B, As) -> [call,?Q(erlang),?Q(B)|As].
  
  %% expand_append(Args) -> Expansion.
  %%  Expand ++ in such a way as to allow its use in patterns. There are
  %%  a lot of interesting cases here. Only be smart with proper forms.
  
negative.code: 	    erlang:error({expand_macro,[Mac|Args],Error})
      end.
  
  %% exp_predef_macro(Call, Env, State) -> {Exp,State}.
  %%  Evaluate predefined macro definition catching errors.
  
  exp_predef_macro(Call, Env, St) ->
      try
  	exp_predef(Call, Env, St)
      catch
  	error:Error ->
  	    erlang:error({expand_macro,Call,Error})
      end.
  
  %% exp_predef(Form, Env, State) -> {yes,Form,State} | no.
  %%  Handle the builtin predefined macros but only one at top-level and
  %%  only once.  Expand must be called on result to fully expand
  