anchor.diff:      %% PkgVsns should be a list of pkg() where all the constraints are correctly
       %% met. If not we fail the solution. If so we return those pkg()s
       case lists:all(fun({Pkg, Vsn}) ->
  -                           lists:all(fun(Constraint) ->
  +                           lists:all(fun({Constraint, _}) ->
                                                is_version_within_constraint(Vsn, Constraint)
                                        end,  get_constraints(Constraints, Pkg))
                      end, PkgVsns) of
  
positive.code:             {value, {PkgName, Constraints0}} ->
                  Constraints0
          end,
      [{PkgName, [PkgConstraint | Constraints1]} |
       lists:keydelete(PkgName, 1, PkgsConstraints)].
  
  %% @doc
  %% Extend the currently active constraints correctly for the given constraints.
  -spec extend_constraints(constraints(),constraints()) -> [{pkg_name(), constraints()}].
  extend_constraints(ExistingConstraints0, NewConstraints) ->
      lists:foldl(fun (Constraint, ExistingConstraints1) ->
                          add_constraint(ExistingConstraints1, Constraint)
                  end,
                  ExistingConstraints0, NewConstraints).
  
  -spec normalize_version(vsn()) -> vsn().
  normalize_version({M}) ->
  
negative.code: primitive_solve(State, PackageList)
    when erlang:length(PackageList) > 0 ->
      Constraints = lists:foldl(fun(Info, Acc) ->
                                        add_constraint('_GOAL_', 'NO_VSN', Acc, Info)
                                end, new_constraints(), PackageList),
  
      Pkgs = lists:map(fun dep_pkg/1, PackageList),
  