anchor.diff:  
   -type expand_depth() :: integer().
   
  +-spec t_from_form1(parse_form(), sets:set(mfa()) | 'replace_by_none',
  +                   site(), mod_records(), var_table()) ->
  +                      {erl_type(), expand_limit()}.
  +
   t_from_form1(Form, ET, Site, MR, V) ->
  -  t_from_form1(Form, ET, Site, MR, V, ?EXPAND_DEPTH).
  -
  -t_from_form1(Form, ET, Site, MR, V, D) ->
  +  TypeNames = initial_typenames(Site),
  +  t_from_form1(Form, TypeNames, ET, Site, MR, V, ?EXPAND_DEPTH).
  +
  +initial_typenames({type, _MTA}=Site) -> [Site];
  +initial_typenames({spec, _MFA}) -> [];
  +initial_typenames({record, _MRA}) -> [].
  +
  +t_from_form1(Form, TypeNames, ET, Site, MR, V, D) ->
     L = ?EXPAND_LIMIT,
  -  {T, L1} = t_from_form(Form, [], ET, Site, MR, V, D, L),
  +  {T, L1} = t_from_form(Form, TypeNames, ET, Site, MR, V, D, L),
     if
       L1 =< 0, D > 1 ->
         D1 = D div 2,
  -      t_from_form1(Form, ET, Site, MR, V, D1);
  +      t_from_form1(Form, TypeNames, ET, Site, MR, V, D1);
       true ->
         {T, L1}
     end.
  
positive.code:                     case can_unfold_more(RemType, TypeNames) of
                        true ->
                          NewTypeNames = [RemType|TypeNames],
                          t_from_form(Form, NewTypeNames, ET, RemMod, MR,
                                      TmpVarDict, D, L1);
                        false ->
                          {t_any(), L1}
                      end,
                    NewRep1 = choose_opaque_type(NewRep, Type),
                    NewRep2 = case t_is_none(NewRep1) of
                       true -> NewRep1;
                       false ->
                         ArgTypes2 = subst_all_vars_to_any_list(ArgTypes),
                         t_opaque(Mod, Name, ArgTypes2, NewRep1)
                     end,
                    {NewRep2, L2};
                  error ->
                    Msg = io_lib:format("Unable to find remote type ~w:~w()\n",
  
negative.code:           false -> {t_any(), L1}
          end,
        Rep1 = choose_opaque_type(Rep, Type),
        Rep2 = case cannot_have_opaque(Rep1, TypeName, TypeNames) of
                 true -> Rep1;
                 false ->
                   ArgTypes2 = subst_all_vars_to_any_list(ArgTypes),
  