anchor.diff:                        any
                 end,
   
  -    sub_unsafe(RetType, [#t_integer{}, #t_tuple{size=Index}]);
  +    ArgTypes = [#t_integer{elements={1,?MAX_TUPLE_SIZE}},
  +                #t_tuple{size=Index}],
  +
  +    sub_unsafe(RetType, ArgTypes);
   types(erlang, setelement, [PosType, TupleType, ArgType]) ->
       RetType = case {PosType,TupleType} of
                     {#t_integer{elements={Index,Index}},
  
positive.code:               #t_tuple{size=Sz} -> Sz;
                _ -> 0
            end,
      Max = (1 bsl 24) - 1,                       %Documented max size of a tuple.
      sub_safe(#t_integer{elements={Min,Max}}, [#t_tuple{}]);
  types(erlang, 'bit_size', [_]) ->
      sub_safe(#t_integer{elements={0,?SIZE_UPPER_LIMIT}}, [#t_bitstring{}]);
  
negative.code: -define(SIZE_UPPER_LIMIT, ((1 bsl 58) - 1)).
  
  %%
  %% The document maximum size of a tuple.
  %%
  -define(MAX_TUPLE_SIZE, (1 bsl 24) - 1).
  
  %%
  %% Returns the inferred return and argument types for known functions, and
  %% whether it's safe to subtract argument types on failure.
  %%
  