anchor.diff:                      end, {#{}, 1}, tuple_to_list(T)),
        {tuple, tuple_size(T), Es};
   value_to_type(L) -> {literal, L}.
  +
  +branch_arities(List, Tuple, Vst) ->
  +    Type = get_durable_term_type(Tuple, Vst),
  +    branch_arities(List, Tuple, Type, Vst).
   
   branch_arities([Sz,{f,L}|T], Tuple, {tuple,[_],Es0}=Type0, Vst0) when is_integer(Sz) ->
       %% Filter out element types that are no longer valid.
  
positive.code: -export([module/2, format_error/1]).
  -export([type_anno/1, type_anno/2, type_anno/4]).
  
  -import(lists, [any/2,dropwhile/2,foldl/3,map/2,foreach/2,reverse/1]).
  
  %% To be called by the compiler.
  
  
negative.code:     assert_choices(Choices),
      Vst = branch_state(Fail, Vst0),
      kill_state(select_val_branches(Src, Choices, Vst));
  valfun_4({select_tuple_arity,Tuple,{f,Fail},{list,Choices}}, Vst0) ->
      assert_type(tuple, Tuple, Vst0),
      assert_arities(Choices),
      Vst = branch_state(Fail, Vst0),
      kill_state(branch_arities(Choices, Tuple, Vst));
  
  %% New bit syntax matching instructions.
  valfun_4({test,bs_start_match3,{f,Fail},Live,[Src],Dst}, Vst) ->
  