anchor.diff:      end;
   update_successors(#b_switch{arg=#b_var{}=V,fail=Fail0,list=List0}=Last0,
                     Ts, Ds, Ls0, UsedOnce) ->
  -    IsTempVar = sets:is_element(V, UsedOnce),
  +    IsTempVar = is_map_key(V, UsedOnce),
   
       {List1, FailTs, Ls1} =
           update_switch(List0, V, raw_type(V, Ts), Ts, Ds, Ls0, IsTempVar, []),
  
positive.code: used_once_2([#b_set{dst=Dst}=I|Is], L, Uses0) ->
      Uses = used_once_uses(beam_ssa:used(I), L, Uses0),
      case Uses of
          #{Dst:=[L]} ->
              used_once_2(Is, L, Uses);
          #{} ->
              %% Used more than once or used once in
  
negative.code:         { func_id :: func_id(),
            limit_return :: boolean(),
            params :: [beam_ssa:b_var()],
            used_once :: #{beam_ssa:b_var() => _ } }).
  
  -type metadata() :: #metadata{}.
  -type meta_cache() :: #{ func_id() => metadata() }.
  -type type_db() :: #{ beam_ssa:var_name() := type() }.
  
  %%
  
  -spec opt_start(term(), term()) -> term().
  opt_start(StMap, FuncDb0) when FuncDb0 =/= #{} ->
      {ArgDb, MetaCache, FuncDb} = signatures(StMap, FuncDb0),
  
      opt_start_1(maps:keys(StMap), ArgDb, StMap, FuncDb, MetaCache);
  opt_start(StMap, FuncDb) ->
      %% Module-level analysis is disabled, likely because of a call to
      %% load_nif/2 or similar. opt_continue/4 will assume that all arguments and
      %% return types are 'any'.
      {StMap, FuncDb}.
  
  opt_start_1([Id | Ids], ArgDb, StMap0, FuncDb0, MetaCache) ->
      case ArgDb of
          #{ Id := ArgTypes } ->
              #opt_st{ssa=Linear0,args=Args} = St0 = map_get(Id, StMap0),
  
              Ts = maps:from_list(zip(Args, ArgTypes)),
              {Linear, FuncDb} = opt_function(Linear0, Args, Id, Ts, FuncDb0, MetaCache),
  
              St = St0#opt_st{ssa=Linear},
              StMap = StMap0#{ Id := St },
  
              opt_start_1(Ids, ArgDb, StMap, FuncDb, MetaCache);
          #{} ->
              %% Unreachable functions must be removed so that opt_continue/4
              %% won't process them and potentially taint the argument types of
  