anchor.diff:      }
   
     let fetchCandidatesForConstraint sourceExplorer locations package constraints = asyncSeq {
  -    let candidatesToExplore = SourceExplorer.fetchLocationsForConstraint sourceExplorer locations package constraints
  +    let candidatesToExplore = SourceExplorer.fetchLocationsForConstraint sourceExplorer locations package (Constraint.simplify constraints)
       let mutable hasCandidates = false
       let mutable consecutiveFailures = 0
       for x in candidatesToExplore do
  
positive.code:         |> Map.ofSeq
    }
  
    let private recoverOrFail state log resolutions =
      resolutions
      |> AsyncSeq.map (fun resolution ->
          match resolution with
          | Resolution.Backtrack (s, f) ->
            log("trying to recover from: " + resolution.ToString() |> text, LoggingLevel.Info)
            if state.Constraints.ContainsKey f.Package &&
              match f.Constraint with
              | All xs -> xs |> List.forall state.Constraints.[f.Package].Contains
  
negative.code:                 privatePackagesSolutions
                  |> AsyncSeq.map(addPrivatePackageSolution newState package resolvedVersion)
                  |> AsyncSeq.collect (step context strategy)
                  |> recoverOrFail (packageLock, versions) newState log
                  |> recoverOrFail (packageLock, versions) state log
                  |> AsyncSeq.scan
                       (fun (failures, _) resolution ->
                         match resolution with
  