anchor.diff:                                          forceBreak := true
                                   | _ -> ()                            
   
  -                    if not !useUnlisted && !hasUnlisted && not (isOk()) then
  +                    if not !useUnlisted && !hasUnlisted && not (!state).IsDone then
                           useUnlisted := true
                       else
                           ready := true
  
positive.code:             verbosefn "  %d packages in resolution. %d requirements left" currentStep.CurrentResolution.Count currentStep.OpenRequirements.Count
          
              let currentRequirement = getCurrentRequirement currentStep.OpenRequirements
              let conflicts = getConflicts(currentStep,currentRequirement)
              if conflicts |> Set.isEmpty |> not then 
                  Resolution.Conflict(currentStep,conflicts,Seq.head conflicts,getVersionsF currentRequirement.Sources ResolverStrategy.Max groupName) 
              else
                  let availableVersions,compatibleVersions,globalOverride = getCompatibleVersions(currentStep.Relax,currentStep.FilteredVersions,currentStep.OpenRequirements,currentRequirement)
  
                  let conflictStatus = Resolution.Conflict(currentStep,Set.empty,currentRequirement,getVersionsF currentRequirement.Sources ResolverStrategy.Max groupName)
                  if Seq.isEmpty compatibleVersions then
                      boostConflicts (currentStep.FilteredVersions,currentRequirement,conflictStatus) 
  
  
negative.code:                 "  Please try to relax some conditions."
              |> failwithf "%s"
  
      member this.IsDone =
          match this with
          | Resolution.Ok _ -> true
          | _ -> false
  
  let calcOpenRequirements (exploredPackage:ResolvedPackage,globalFrameworkRestrictions,(versionToExplore,_),dependency,resolverStep:ResolverStep) =
      let dependenciesByName =
          // there are packages which define multiple dependencies to the same package
  