anchor.diff:                  if !forceBreak then false else
                   if isOk() || Seq.isEmpty !versionsToExplore then false else
                   if trial < 1 then true else
  -                getConflicts() |> Set.isEmpty
  +                conflicts |> Set.isEmpty
   
               while shouldTryHarder !trial do
                   trial := !trial + 1
  
positive.code: 
          !availableVersions,!compatibleVersions,!globalOverride
  
      let rec step (relax,filteredVersions:Map<PackageName, ((SemVerInfo * PackageSource list) list * bool)>,currentResolution:Map<PackageName,ResolvedPackage>,closedRequirements:Set<PackageRequirement>,openRequirements:Set<PackageRequirement>) =
          if Set.isEmpty openRequirements then Resolution.Ok(cleanupNames currentResolution) else
          verbosefn "  %d packages in resolution. %d requirements left" currentResolution.Count openRequirements.Count
  
negative.code:                     currentMin := d
                      currentBoost := boost
              !currentMin
    
          let conflicts = getConflicts(filteredVersions,closedRequirements,openRequirements,currentRequirement)
          if conflicts |> Set.isEmpty |> not then Resolution.Conflict(currentResolution,closedRequirements,conflicts,Seq.head conflicts,getVersionsF sources ResolverStrategy.Max groupName) else
  
          let availableVersions,compatibleVersions,globalOverride = getCompatibleVersions(relax,filteredVersions,openRequirements,currentRequirement)
  
          let conflictStatus = Resolution.Conflict(currentResolution,closedRequirements,openRequirements,currentRequirement,getVersionsF sources ResolverStrategy.Max groupName)
          if Seq.isEmpty compatibleVersions then
              // boost the conflicting package, in order to solve conflicts faster
              let isNewConflict =
  