anchor.diff:  -record(st, {fc,				%Label for function class errors.
   	     entry,				%Entry label (must not be moved).
   	     mlbl,				%Moved labels.
  -	     labels				%Set of referenced labels.
  +             labels :: cerl_sets:set()          %Set of referenced labels.
   	    }).
   
   opt([{label,Fc}|_]=Is0, CLabel) ->
  
positive.code: initial_labels([{label,Lbl}|Is], Acc) ->
      initial_labels(Is, [Lbl|Acc]);
  initial_labels([{func_info,_,_,_},{label,Lbl}|_], Acc) ->
      gb_sets:from_list([Lbl|Acc]).
  
  drop_upto_label([{label,_}|_]=Is) -> Is;
  drop_upto_label([_|Is]) -> drop_upto_label(Is);
  
negative.code: %%  (including inside blocks).
  
  is_label_used_in(Lbl, Is) ->
      is_label_used_in_1(Is, Lbl, cerl_sets:new()).
  
  is_label_used_in_1([{block,Block}|Is], Lbl, Empty) ->
      lists:any(fun(I) -> is_label_used_in_block(I, Lbl) end, Block)
  	orelse is_label_used_in_1(Is, Lbl, Empty);
  is_label_used_in_1([I|Is], Lbl, Empty) ->
      Used = ulbl(I, Empty),
      cerl_sets:is_element(Lbl, Used) orelse is_label_used_in_1(Is, Lbl, Empty);
  is_label_used_in_1([], _, _) -> false.
  
  is_label_used_in_block({set,_,_,Info}, Lbl) ->
  