anchor.diff:      %% the body and handler. Add try tag 'variable'.
       Ab = get_kanno(Kb),
       Ah = get_kanno(Kh),
  -    Tdb1 = use_vars(Ab#k.us, I+3, use_vars(Ah#k.us, I+3, Tdb0)),
  +    Tdb1 = use_vars(union(Ab#k.us, Ah#k.us), I+3, Tdb0),
       Tdb2 = vdb_sub(I, I+2, Tdb1),
       Vnames = fun (Kvar) -> Kvar#k_var.name end,	%Get the variable names
       {Aes,_,Adb} = body(Ka, I+2, add_var({catch_tag,I+1}, I+1, 1000000, Tdb2)),
  -    {Bes,_,Bdb} = body(Kb, I+4, new_vars(map(Vnames, Vs), I+3, Tdb2)),
  -    {Hes,_,Hdb} = body(Kh, I+4, new_vars(map(Vnames, Evs), I+3, Tdb2)),
  +    {Bes,_,Bdb} = body(Kb, I+4, new_vars(sort(map(Vnames, Vs)), I+3, Tdb2)),
  +    {Hes,_,Hdb} = body(Kh, I+4, new_vars(sort(map(Vnames, Evs)), I+3, Tdb2)),
       #l{ke={try_enter,#l{ke={block,Aes},i=I+1,vdb=Adb,a=[]},
   	   var_list(Vs),#l{ke={block,Bes},i=I+3,vdb=Bdb,a=[]},
   	   var_list(Evs),#l{ke={block,Hes},i=I+3,vdb=Hdb,a=[]}},
  
positive.code:     %% Work out imported variables which need to be locked.
      Rdb = vdb_sub(I, I+1, Vdb),
      M = match(Kb, add_element(V#k_var.name, A#k.us), I+1, [],
   	      new_var(V#k_var.name, I, Rdb)),
      {Tes,_,Adb} = body(Ka, I+1, Rdb),
      #l{ke={receive_loop,atomic(T),variable(V),M,
  	   #l{ke=Tes,i=I+1,vdb=Adb,a=[]},var_list(Rs)},
  
negative.code: function(#k_fdef{anno=#k{a=Anno},func=F,arity=Ar,vars=Vs,body=Kb}) ->
      try
  	As = var_list(Vs),
  	Vdb0 = init_vars(As),
  	%% Force a top-level match!
  	B0 = case Kb of
  		 #k_match{} -> Kb;
  