anchor.diff:                      NewGraph1 = gb_trees:insert(PkgName, Info, NewGraph0),
                       rewrite_vsns(ExistingGraph, NewGraph1, Info);
                   none ->
  -				  NewGraph1 = gb_trees:insert(PkgName, [{{missing},[]}],NewGraph0), %{error, {unreachable_package, PkgName}}
  +                  NewGraph1 = gb_trees:insert(PkgName, [{{missing},[]}],NewGraph0), %{error, {unreachable_package, PkgName}}
                       rewrite_vsns(ExistingGraph, NewGraph1, [{{missing},[]}])
               end
       end.
  
positive.code: do_solve(DepGraph0, RawGoals, Timeout) ->
      Goals = [fix_con(Goal) || Goal <- RawGoals],
  case lists:filter(fun (Goal) ->
  		PkgName = dep_pkg(Goal),
  		contains_package_version(DepGraph0, PkgName) == false
  	end,
  	Goals) of
  	[] ->
  	  Self = self(),
  	  F = fun() ->
      case trim_unreachable_packages(DepGraph0, Goals) of
  			Error = {error, _} ->
  				Error;
  			DepGraph1 ->
  				case primitive_solve(DepGraph1, Goals, no_path) of
  					{fail, _} ->
  						[FirstCons | Rest] = Goals,
  						Self ! {error, depsolver_culprit:search(DepGraph1, [FirstCons], Rest)};
  					{missing, Pkg} ->
  					  Self ! {error, {unreachable_package, Pkg}};
  					Solution ->
  						Self ! {ok, Solution}
  				end
  		end
  	end,
  	Pid = proc_lib:spawn(F),
  	receive
  	  Result ->
  		Result
  	after Timeout ->
  		exit(Pid, kill),
  		{error, resolution_timeout}
  	end;
  	[MissingPackage | _] ->
  	  {error, {unreachable_package, dep_pkg(MissingPackage)}}
    end.
  
  %% Parse a string version into a tuple based version
  
negative.code:   true;
  valid_version(PkgName, Vsn, PkgConstraints) ->
    Constraints = get_constraints(PkgConstraints, PkgName),
        lists:all(fun ({L, _ConstraintSrc}) ->
              is_version_within_constraint(Vsn, L)
          end,
          Constraints).
  
  %% @doc
  %% Given a Package Name and a set of constraints get a list of package
  