anchor.diff:      %% listing cookbooks within an environment.
       {ok, FilteredVersions} = depsolver:filter_packages_with_deps(AllVersions, EnvConstraints),
       Graph = depsolver:add_packages(depsolver:new_graph(), FilteredVersions),
  -    sanitize_semver(depsolver:solve(Graph, Cookbooks)).
  +    sanitize_semver(depsolver:solve(Graph, Cookbooks, depsolver_timeout())).
   
   %% @doc The depsolver module (as of version 0.1.0) supports semver and returns a version
   %% structure as `{Name, {{1, 2, 3}, {Alpha, Build}}}'. Chef does not currently support
  
positive.code:         {[
            {<<"run_list">>, chef_json_validator:run_list_spec()}
           ]}).
  
  %% @doc Convert a binary JSON string representing a Chef runlist into an
  %% EJson-encoded Erlang data structure.
  
negative.code:     {ok, XYZOnly};
  sanitize_semver(Error) ->
      Error.
  
  depsolver_timeout() ->
      case application:get_env(chef_objects, depsolver_timeout) of
          undefined ->
              ?DEFAULT_DEPSOLVER_TIMEOUT;
          {ok, Value} when is_integer(Value) ->
              Value;
          Bad ->
              error({invalid_config, {chef_objects, depsolver_timeout, Bad}})
      end.
  