anchor.diff:                      simplify_not(Br, Ts, Ds)
               end
       end;
  -opt_terminator(#b_switch{arg=#b_literal{val=Val0}=Arg,fail=Fail,list=List},
  -               _Ts, _Ds) ->
  -    {value,{_,L}} = search(fun({#b_literal{val=Val1},_}) ->
  -                                   Val1 =:= Val0
  -                           end, List ++ [{Arg,Fail}]),
  -    #b_br{bool=#b_literal{val=true},succ=L,fail=L};
   opt_terminator(#b_switch{arg=V}=Sw0, Ts, Ds) ->
  -    case get_literal_from_type(Ts) of
  +    Type = get_type(V, Ts),
  +    case get_literal_from_type(Type) of
           #b_literal{}=Lit ->
               Sw = Sw0#b_switch{arg=Lit},
  -            opt_terminator(Sw, Ts, Ds);
  +            beam_ssa:normalize(Sw);
           none ->
  -            case get_type(V, Ts) of
  +            case Type of
                   #t_integer{elements={_,_}=Range} ->
                       simplify_switch_int(Sw0, Range);
                   Type ->
  
positive.code: will_succeed(_, _) -> maybe.
  
  
  band_type([#b_literal{val=Int},Other], Ts) when is_integer(Int) ->
      band_type_1(Int, Other, Ts);
  band_type([Other,#b_literal{val=Int}], Ts) when is_integer(Int) ->
      band_type_1(Int, Other, Ts);
  band_type([_,_], _) -> t_integer().
  
negative.code: 
  -include("beam_ssa.hrl").
  -import(lists, [any/2,droplast/1,foldl/3,last/1,member/2,
                  reverse/1,sort/1]).
  
  -define(UNICODE_INT, #t_integer{elements={0,16#10FFFF}}).
  
  