anchor.diff:  	true ->
   	    assert_term(Sz, Vst0)
       end,
  -    Vst1 = heap_alloc(Heap, Vst0),
  -    Vst2 = branch_state(Fail, Vst1),
  -    Vst = prune_x_regs(Live, Vst2),
  -    create_term(binary, bs_init2, [], Dst, Vst, Vst0);
  +    Vst = heap_alloc(Heap, Vst0),
  +    branch(Fail, Vst,
  +           fun(SuccVst0) ->
  +                   SuccVst = prune_x_regs(Live, SuccVst0),
  +                   create_term(binary, bs_init2, [], Dst, SuccVst, SuccVst0)
  +           end);
   valfun_4({bs_init_bits,{f,Fail},Sz,Heap,Live,_,Dst}, Vst0) ->
       verify_live(Live, Vst0),
       verify_y_init(Vst0),
  
positive.code:     Type = get_element_type(Index, Src, Vst),
      extract_term(Type, {bif,element}, [Index, Src], Dst, Vst);
  valfun_1({jump,{f,Lbl}}, Vst) ->
      kill_state(branch_state(Lbl, Vst));
  valfun_1(I, Vst) ->
      valfun_2(I, Vst).
  
  
negative.code:     assert_not_literal(Src),                    %OTP 22.
      assert_type(map, Src, Vst0),
  
      branch(Fail, Vst0,
             fun(FailVst) ->
                     clobber_map_vals(List, Src, FailVst)
             end,
             fun(SuccVst) ->
                     Keys = extract_map_keys(List),
                     assert_unique_map_keys(Keys),
                     extract_map_vals(List, Src, SuccVst, SuccVst)
             end).
  
  %% get_map_elements may leave its destinations in an inconsistent state when
  %% the fail label is taken. Consider the following:
  