anchor.diff:  
     type ResolutionPath =
     | Root of Manifest
  -  | Node of PackageIdentifier * ResolvedVersion
  +  | Node of PackageIdentifier * Set<Constraint> * ResolvedVersion
   
     type SolverState = {
       Locations : Map<AdhocPackageIdentifier, PackageSource>
  
positive.code: 
      let result =
        resolutions
        |> AsyncSeq.map (fun s ->
          Resolution.Ok <| {Resolutions = s.Selections |> Map.map(fun k v -> (v, Solution.empty))}
        )
  
negative.code: 
        match conflicts with
        | Some (dep, _) ->
          yield Result.Error (Unresolvable dep.MinimumElement)
        | None ->
          for candidate in fetchCandidatesForConstraint sourceExplorer locations p c do
            match candidate with
            | Result.Error (Unresolvable d) ->
              unresolvableCores <- (unresolvableCores |> Map.add (Set [d]) (Unresolvable d))
  
              System.Console.WriteLine "----------"
              for cores in unresolvableCores |> Map.keySet do
                cores |> Set |> System.Console.WriteLine
                System.Console.WriteLine "&&&&&"
              System.Console.WriteLine "----------"
  
              yield Result.Error <| Unresolvable d
            | Result.Error (LimitReached d) ->
              if hadCandidate <> false
              then
                underconstraintDeps <- (underconstraintDeps |> Set.add d)
                System.Console.WriteLine "----------"
                for cores in unresolvableCores |> Map.keySet do
                  cores |> Set |> System.Console.WriteLine
                  System.Console.WriteLine "&&&&&"
                System.Console.WriteLine "----------"
  
              yield Result.Error <| LimitReached d
            | Result.Ok (_, (location, versions)) ->
              let! lock = sourceExplorer.LockLocation location
  