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:     {[V]=Mes,St1} = new_vars(1, St0),
      {#k_binary{segs=V},Mes,St1};
  get_match(#k_bin_seg{size=#k_literal{val=all},next={k_bin_end,[]}}=Seg, St0) ->
      {[S,N],St1} = new_vars(2, St0),
      {Seg#k_bin_seg{seg=S,next=N},[S],St1};
  get_match(#k_bin_seg{}=Seg, St0) ->
      {[S,N],St1} = new_vars(2, St0),
      {Seg#k_bin_seg{seg=S,next=N},[S,N],St1};
  get_match(#k_bin_int{}=BinInt, St0) ->
      {N,St1} = new_var(St0),
      {BinInt#k_bin_int{next=N},[N],St1};
  get_match(#k_tuple{es=Es}, St0) ->
      {Mes,St1} = new_vars(length(Es), St0),
  