anchor.diff:  %%
   
   -define(REC_TYPE_LIMIT, 2).
  -%-define(REC_TYPE_LIMIT, 1).
  +-define(EXPAND_DEPTH, 16).
  +-define(EXPAND_LIMIT, 10000).
   
   -define(TUPLE_TAG_LIMIT, 5).
   -define(TUPLE_ARITY_LIMIT, 8).
  
positive.code: t_sup1([T], []) -> subst_all_vars_to_any(T);
  t_sup1(Ts, L) ->
    t_sup1(Ts++L, []).
  
  -ifdef(old).
  t_sup([?any|_]) ->
    ?any;
  t_sup([H1, H2|T]) ->
    t_sup([t_sup(H1, H2)|T]);
  t_sup([H]) ->
    subst_all_vars_to_any(H);
  t_sup([]) ->
    ?none.
  -endif.
  
  -spec t_sup(erl_type(), erl_type()) -> erl_type().
  
  
negative.code:                   module(), mod_records(), var_table()) -> erl_type().
  
  t_from_form(Form, ExpTypes, Module, RecDict, VarDict) ->
    t_from_form1(Form, [], ExpTypes, Module, RecDict, VarDict).
  
  %% Replace external types with with none().
  -spec t_from_form_without_remote(parse_form(), type_table()) -> erl_type().
  
  t_from_form_without_remote(Form, TypeTable) ->
    Module = mod,
    RecDict = dict:from_list([{Module, TypeTable}]),
    ExpTypes = replace_by_none,
    t_from_form1(Form, [], ExpTypes, Module, RecDict, dict:new()).
  
  %% REC_TYPE_LIMIT is used for limiting the depth of recursive types.
  %% EXPAND_LIMIT is used for limiting the size of types by
  %% limiting the number of elements of lists within one type form.
  %% EXPAND_DEPTH is used in conjunction with EXPAND_LIMIT to make the
  %% types balanced (unions will otherwise collapse to any()) by limiting
  %% the depth the same way as t_limit/2 does.
  
  -type expand_limit() :: integer().
  
  -type expand_depth() :: integer().
  
  t_from_form1(Form, TypeNames, ET, M, MR, V) ->
    t_from_form1(Form, TypeNames, ET, M, MR, V, ?EXPAND_DEPTH).
  
  t_from_form1(Form, TypeNames, ET, M, MR, V, D) ->
    L = ?EXPAND_LIMIT,
    {T, L1} = t_from_form(Form, TypeNames, ET, M, MR, V, D, L),
    if
      L1 =< 0, D > 1 ->
        D1 = D div 2,
        t_from_form1(Form, TypeNames, ET, M, MR, V, D1);
      true ->
        T
    end.
  
  -spec t_from_form(parse_form(), type_names(),
                    sets:set(mfa()) | 'replace_by_none',
                    module(), mod_records(), var_table(),
                    expand_depth(), expand_limit())
                             -> {erl_type(), expand_limit()}.
  
  %% If there is something wrong with parse_form()
  %% throw({error, io_lib:chars()} is called;
  