anchor.diff:                            state.Constraints
   
   
  -                      Depth = state.Depth;
  +                      Depth = state.Depth+1;
                         Visited =
                           state.Visited
                           |> Set.add (package, packageLock);
  
positive.code: 
      let sourceExplorer = context.SourceExplorer
  
      let log = namespacedLogger context.Console "solver"
  
      let unsatisfied =
        findUnsatisfied state.Solution state.Constraints
  
negative.code:     }
    let fetchCandidatesForConstraint sourceExplorer locations package constraints = asyncSeq {
      let candidatesToExplore = SourceExplorer.fetchLocationsForConstraint sourceExplorer locations package constraints
      let mutable hasCandidates = false
  
      for x in candidatesToExplore do
        yield!
          match x with
          | Candidate (a,b) -> asyncSeq {
              let! lock = sourceExplorer.LockLocation a
              do! sourceExplorer.FetchManifest (lock, b) |> Async.Ignore
              yield Result.Ok (package, (a, b))
            }
          | Unsatisfiable u -> asyncSeq {
            yield
              Result.Error (SearchStrategyError.NotSatisfiable {
              Package = package;
              Constraint = u
              Msg = "Constraint not satisfiable"
            })
          }
  
        hasCandidates <- true
  
      if hasCandidates = false then
        yield Result.Error (SearchStrategyError.NotSatisfiable {
            Package = package;
            Constraint = constraints;
            Msg = "No Version has a valid manifest"
        })
    }
  
    let constraintsOf (ds: Set<Dependency>) =
  