anchor.diff:      {#k_alt{anno=A,first=F1,then=T1},Used,St2};
   umatch(#k_select{anno=A,var=V,types=Ts0}, Br, St0) ->
       {Ts1,Tus,St1} = umatch_list(Ts0, Br, St0),
  -    Used = case member(no_usage, get_kanno(V)) of
  -	       true -> Tus;
  -	       false -> add_element(V#k_var.name, Tus)
  -	   end,
  +    Used = add_element(V#k_var.name, Tus),
       {#k_select{anno=A,var=V,types=Ts1},Used,St1};
   umatch(#k_type_clause{anno=A,type=T,values=Vs0}, Br, St0) ->
       {Vs1,Vus,St1} = umatch_list(Vs0, Br, St0),
  
positive.code: 
  %% pat_vars(Pattern) -> {[UsedVarName],[NewVarName]}.
  %%  Return variables in a pattern.  All variables are new variables
  %%  except those in the size field of binary segments.
  %%  and map_pair keys
  
  pat_vars(#k_var{name=N}) -> {[],[N]};
  %%pat_vars(#k_char{}) -> {[],[]};
  
negative.code:     pat_list_vars([H,T]);
  pat_vars(#k_binary{segs=V}) ->
      pat_vars(V);
  pat_vars(#k_bin_seg{size=Size,seg=S,next=N}) ->
      {U1,New} = pat_list_vars([S,N]),
      {[],U2} = pat_vars(Size),
      {union(U1, U2),New};
  pat_vars(#k_bin_int{size=Size,next=N}) ->
      {[],New} = pat_vars(N),
      {[],U} = pat_vars(Size),
      {U,New};
  pat_vars(#k_bin_end{}) -> {[],[]};
  pat_vars(#k_tuple{es=Es}) ->
      pat_list_vars(Es);
  