anchor.diff:  
   -endif.
   
  --spec get_deps(constr()) -> [dep()].
  +-spec get_deps(constr()) -> deps().
   
   get_deps(#constraint{deps = D}) -> D;
   get_deps(#constraint_list{deps = D}) -> D;
   get_deps(#constraint_ref{deps = D}) -> D.
   
  --spec find_constraint_deps([fvar_or_type()]) -> [dep()].
  +-spec find_constraint_deps([fvar_or_type()]) -> deps().
   
   find_constraint_deps(List) ->
     ordsets:from_list(find_constraint_deps(List, [])).
  
positive.code:   debug_make_name_map(Vars0, Funs0),
    Vars = mk_var_list(Vars0),
    Funs = mk_var_list(Funs0),
    NewMap = lists:foldl(fun({Var, Fun}, MP) -> orddict:store(Var, Fun, MP) end,
  		       Map, lists:zip(Vars, Funs)),
    State#state{fun_map = NewMap}.
  
  state__get_rec_var(Fun, #state{fun_map = Map}) ->
    case [V || {V, FV} <- Map, FV =:= Fun] of
      [Var] -> {ok, Var};
      [] -> error
    end.
  
  state__finalize(State) ->
    State1 = enumerate_constraints(State),
  
negative.code:   RecTypes = [t_limit(Type, ?TYPE_LIMIT) || Type <- Types],
    CleanMap = lists:foldl(fun(Fun, AccFunMap) ->
  			     erase_type(t_var_name(Fun), AccFunMap)
  			 end, Map, ToSolve),
    Map1 = enter_type_lists(Vars, RecTypes, CleanMap),
    ?debug("Checking SCC: ~w\n", [[debug_lookup_name(F) || F <- SCC]]),
    SolveFun = fun(X, Y) -> scc_fold_fun(X, Y, State) end,
    Map2 = lists:foldl(SolveFun, Map1, ToSolve),
    Updated = updated_vars_only(Vars, Map, Map2),
    case Updated =:= [] of
      true ->
        ?debug("SCC ~w reached fixpoint\n", [SCC]),
        NewTypes = unsafe_lookup_type_list(Funs, Map2),
  