anchor.diff:  
       let rec improveModel (filteredVersions:Map<PackageName, (SemVerInfo list * bool)>,packages:ResolvedPackage list,closed:Set<PackageRequirement>,stillOpen:Set<PackageRequirement>) =
           if Set.isEmpty stillOpen then
  +            // we're done. check if we have a valid resolution and return it
               let isOk =
                   filteredVersions
                   |> Map.forall (fun _ v ->
  
positive.code:             failwith !errorText
  
  
  let calcOpenRequirements (exploredPackage:ResolvedPackage,versionToExplore,dependency,closed:Set<PackageRequirement>,stillOpen:Set<PackageRequirement>,rest:Set<PackageRequirement>) =
      let dependenciesByName =
          // there are packages which define multiple dependencies to the same package
          // we just take the latest one - see #567
          let hashSet = new HashSet<_>()
          exploredPackage.Dependencies
          |> Set.filter (fun (name,_,_) -> hashSet.Add name)
                          
      dependenciesByName
      |> Set.map (fun (n,v,r) -> {dependency with Name = n; VersionRequirement = v; Parent = Package(dependency.Name,versionToExplore); FrameworkRestrictions = r })
  
negative.code:                 ResolvedPackages.Conflict(closed,stillOpen)
          else
              let dependency = Seq.head stillOpen
       
              let allVersions,compatibleVersions,globalOverride = 
                  match Map.tryFind dependency.Name filteredVersions with
  