anchor.diff:  opt([{label,Fc}|_]=Is0, CLabel) ->
       Lbls = initial_labels(Is0),
       find_fixpoint(fun(Is) ->
  -			  St = #st{fc=Fc,entry=CLabel,mlbl=dict:new(),
  +			  St = #st{fc=Fc,entry=CLabel,mlbl=#{},
   				   labels=Lbls},
   			  opt(Is, [], St)
   		  end, Is0).
  
positive.code:     St = case Lbls of
  	     [] -> St0;
  	     [_|_] ->
  		 Mlbl = dict:append_list(L, Lbls, Mlbl0),
  		 St0#st{mlbl=Mlbl}
  	 end,
      skip_unreachable(Is, [I|Acc], label_used(Lbl, St));
  
negative.code:     end;
  opt([], Acc, #st{fc=Fc,mlbl=Mlbl}) ->
      Code = reverse(Acc),
      case maps:find(Fc, Mlbl) of
   	{ok,Lbls} -> insert_fc_labels(Lbls, Mlbl, Code);
   	error -> Code
      end.
  
  maps_append_list(K,Vs,M) ->
      case M of
          #{K:=Vs0} -> M#{K:=Vs0++Vs}; % same order as dict
          _ -> M#{K => Vs}
      end.
  
  insert_fc_labels([L|Ls], Mlbl, Acc0) ->
      Acc = [{label,L}|Acc0],
      case maps:find(L, Mlbl) of
  	error ->
  	    insert_fc_labels(Ls, Mlbl, Acc);
  	{ok,Lbls} ->
  