anchor.diff:  
   guard_test({call,L,{atom,Ln,F},As0}, Bs0, Lf, Ef) ->
       TT = type_test(F),
  -    guard_test({call,L,{tuple,Ln,[{atom,Ln,erlang},{atom,Ln,TT}]},As0},
  -               Bs0, Lf, Ef);
  +    G = {call,L,{atom,Ln,TT},As0},
  +    try {value,true,_} = expr(G, Bs0, Lf, Ef, none)
  +    catch error:_ -> {value,false,Bs0} end;
   guard_test({call,L,{remote,_Lr,{atom,_Lm,erlang},{atom,_Lf,_F}=T},As0}, 
              Bs0, Lf, Ef) ->
       guard_test({call,L,T,As0}, Bs0, Lf, Ef);
  
positive.code: bif(apply, [erlang,apply,As], Bs, Ef, RBs) ->
      bif(apply, As, Bs, Ef, RBs);
  bif(apply, [M,F,As], Bs, Ef, RBs) ->
      do_apply({M,F}, As, Bs, Ef, RBs);
  bif(apply, [F,As], Bs, Ef, RBs) ->
      do_apply(F, As, Bs, Ef, RBs);
  bif(Name, As, Bs, Ef, RBs) ->
      do_apply({erlang,Name}, As, Bs, Ef, RBs).
  
  %% do_apply(MF, Arguments, Bindings, ExternalFuncHandler, RBs) ->
  %%	{value,Value,Bindings} | Value when
  
negative.code:         true ->
              bif(F, As, Bs3, Ef, RBs);
          false ->
              do_apply(M, F, As, Bs3, Ef, RBs)
      end;
  expr({call,_,{atom,_,Func},As0}, Bs0, Lf, Ef, RBs) ->
      case erl_internal:bif(Func, length(As0)) of
  