anchor.diff:          Type ->
               error({wrong_tag_type,Type})
       end;
  -vi_safe({try_case,Reg}, #vst{current=#st{ct=[Tag|_]}}=Vst0) ->
  +vi({try_case,Reg}, #vst{current=#st{ct=[Tag|_]}}=Vst0) ->
       case get_tag_type(Reg, Vst0) of
           {trytag,_Fail}=Tag ->
               %% Kill the catch tag, all x registers, and the receive marker.
  
positive.code:             ref_ctr=Counter,
              branched=Branched,
              labels=Labels};
  vi_safe(_I, #vst{current=none}=Vst) ->
      %% Ignore all unreachable code.
      Vst;
  vi_safe({bs_get_tail,Ctx,Dst,Live}, Vst0) ->
      assert_type(#t_bs_context{}, Ctx, Vst0),
      verify_live(Live, Vst0),
      verify_y_init(Vst0),
  
      #t_bs_context{tail_unit=Unit} = get_raw_type(Ctx, Vst0),
  
      Vst = prune_x_regs(Live, Vst0),
      extract_term(#t_bitstring{size_unit=Unit}, bs_get_tail, [Ctx], Dst,
                   Vst, Vst0);
  vi_safe(bs_init_writable=I, Vst) ->
      validate_body_call(I, 1, Vst);
  vi_safe(build_stacktrace=I, Vst) ->
      validate_body_call(I, 1, Vst);
  vi_safe({move,Src,Dst}, Vst) ->
      assign(Src, Dst, Vst);
  vi_safe({swap,RegA,RegB}, Vst0) ->
      assert_movable(RegA, Vst0),
      assert_movable(RegB, Vst0),
  
  
negative.code:     end;
  validate_instrs([I|Is], MFA, Offset, Vst0) ->
      validate_instrs(Is, MFA, Offset+1,
                      try
                          Vst = validate_mutation(I, Vst0),
                          vi(I, Vst)
                      catch Error ->
                         error({MFA,{I,Offset,Error}})
                      end).
  
  vi({label,Lbl}, #vst{current=St0,
                            ref_ctr=Counter0,
                            branched=Branched0,
                            labels=Labels0}=Vst) ->
  