anchor.diff:            false -> {t_any(), L1}
           end,
         Rep1 = choose_opaque_type(Rep, Type),
  -      Args2 = [subst_all_vars_to_any(ArgType) || ArgType <- ArgTypes],
  -      {t_opaque(Module, Name, Args2, Rep1), L2};
  +      Rep2 = case t_is_none(Rep1) of
  +               true -> Rep1;
  +               false ->
  +                 Args2 = [subst_all_vars_to_any(ArgType) ||
  +                           ArgType <- ArgTypes],
  +                 t_opaque(Module, Name, Args2, Rep1)
  +             end,
  +      {Rep2, L2};
       error ->
         Msg = io_lib:format("Unable to find type ~w/~w\n", [Name, ArgsLen]),
         throw({error, Msg})
  
positive.code:                         {t_any(), L1}
                      end,
                    NewRep1 = choose_opaque_type(NewRep, Type),
                    {t_opaque(Mod, Name, ArgTypes, NewRep1), L2};
                  error ->
                    Msg = io_lib:format("Unable to find remote type ~w:~w()\n",
                                        [RemMod, Name]),
  
negative.code:                  %% List = lists:zip(ArgNames, Args),
                   %% TmpVarDict = dict:from_list(List),
                   %% Rep = t_from_form(Type, RecDict, TmpVarDict),
                   Rep = t_any(), % not used for anything right now
                   Args = [t_any() || _ <- ArgNames],
                   t_opaque(Module, Name, Args, Rep)
  	     end, OpaqueRecDict),
  