anchor.diff:  	eq ->
   	  case solve_subtype(Lhs, Inf, Map, Opaques) of
   	    error -> error;
  -	    {ok, Map1} -> solve_subtype(Rhs, Inf, Map1, Opaques)
  +	    {ok, {Map1, U1}} ->
  +              case solve_subtype(Rhs, Inf, Map1, Opaques) of
  +                error -> error;
  +                {ok, {Map2, U2}} -> {ok, {Map2, lists:umerge(U1, U2)}}
  +              end
   	  end
         end
     end.
  
positive.code:   Deps = get_deps(state__get_cs(F, State)),
    Cs = mk_constraint_ref(F, Deps),
    %% Note that functions are always considered to succeed.
    {ok, _NewMapDict, Map} = solve_ref_or_list(Cs, FunMap, dict:new(), State),
    NewType0 = unsafe_lookup_type(F, Map),
    NewType = t_limit(NewType0, ?TYPE_LIMIT),
    NewFunMap = case state__get_rec_var(F, State) of
  
negative.code: 	    FunType0 = lookup_type(Id, NewMap),
  	    {NewMapDict0, FunType0}
  	end,
        ?debug("  Id=~w Assigned ~s\n", [Id, format_type(FunType)]),
        NewMap1 = enter_type(Id, FunType, Map),
        NewMap2 =
  	case state__get_rec_var(Id, State) of
  