anchor.diff:                  error -> Arg
               end
       end;
  -simplify_arg(#b_remote{mod=Mod,name=Name}=Rem, Sub, Ts) ->
  -    Rem#b_remote{mod=simplify_arg(Mod, Sub, Ts),
  -                 name=simplify_arg(Name, Sub, Ts)};
  -simplify_arg(Arg, _Sub, _Ts) -> Arg.
  +simplify_arg(#b_remote{mod=Mod,name=Name}=Rem, Ts, Sub) ->
  +    Rem#b_remote{mod=simplify_arg(Mod, Ts, Sub),
  +                 name=simplify_arg(Name, Ts, Sub)};
  +simplify_arg(Arg, _Ts, _Sub) -> Arg.
   
   sub_arg(#b_var{}=Old, Sub) ->
       case Sub of
  
positive.code:     SuccTs0 = meet_types(PosTypes, Ts),
      FailTs0 = subtract_types(NegTypes, Ts),
  
      case UsedOnce of
          true ->
              %% The branch variable is defined in this block and is only
              %% referenced by this terminator. Therefore, there is no need to
  
negative.code: simplify_is_record(_I, _Type, _Size, _Tag, _Ts) ->
      #b_literal{val=false}.
  
  simplify_switch_bool(#b_switch{arg=B,fail=Fail,list=List0}, Ts, Ds, Sub) ->
      FalseVal = #b_literal{val=false},
      TrueVal = #b_literal{val=true},
      List1 = List0 ++ [{FalseVal,Fail},{TrueVal,Fail}],
      {_,FalseLbl} = keyfind(FalseVal, 1, List1),
      {_,TrueLbl} = keyfind(TrueVal, 1, List1),
      Br = #b_br{bool=B,succ=TrueLbl,fail=FalseLbl},
      simplify_terminator(Br, Ts, Ds, Sub).
  
  simplify_not(#b_br{bool=#b_var{}=V,succ=Succ,fail=Fail}=Br0, Ts, Ds, Sub) ->
      case Ds of
          #{V:=#b_set{op={bif,'not'},args=[Bool]}} ->
              case beam_types:is_boolean_type(raw_type(Bool, Ts)) of
                  true ->
                      Br = Br0#b_br{bool=Bool,succ=Fail,fail=Succ},
                      simplify_terminator(Br, Ts, Ds, Sub);
                  false ->
                      Br0
              end;
  