anchor.diff:  t_from_form({type, _L, Name, Args}, TypeNames, InOpaque, RecDict, VarDict) ->
     case lookup_type(Name, RecDict) of
       {type, {_Module, Type, ArgNames}} when length(Args) =:= length(ArgNames) ->
  -      case unfold({type, Name}, TypeNames) of
  +      case can_unfold_more({type, Name}, TypeNames) of
           true ->
             List = lists:zipwith(
                      fun(ArgName, ArgType) ->
  
positive.code:     [] -> inf_tuple_sets(Left1, Left2, Acc, Mode);
      NewTuples -> inf_tuple_sets(Left1, Left2, [{Arity, NewTuples}|Acc], Mode)
    end;
  inf_tuple_sets(L1 = [{Arity1, _}|Left1], L2 = [{Arity2, _}|Left2], Acc, Mode) ->
    if Arity1 < Arity2 -> inf_tuple_sets(Left1, L2, Acc, Mode);
       Arity1 > Arity2 -> inf_tuple_sets(L1, Left2, Acc, Mode)
    end;
  inf_tuple_sets([], _, Acc, _Mode) -> lists:reverse(Acc);
  inf_tuple_sets(_, [], Acc, _Mode) -> lists:reverse(Acc).
  
negative.code:     Set -> ?opaque(Set)
    end;
  t_subtract(?matchstate(Pres1, Slots1), ?matchstate(Pres2, _Slots2)) ->
    Pres = t_subtract(Pres1, Pres2),
    case t_is_none(Pres) of
      true -> ?none;
      false -> ?matchstate(Pres, Slots1)
    end;
  t_subtract(?matchstate(Present, Slots), _) ->
    ?matchstate(Present, Slots);
  t_subtract(?nil, ?nil) ->
    ?none;
  t_subtract(?nil, ?nonempty_list(_, _)) ->
  