anchor.diff:  
       let sourceExplorer = context.SourceExplorer
   
  -    let log = namespacedLogger context.Console "solver"
  +    let log = namespacedLogger context.Console ("solver"+state.Depth.ToString())
   
       let unsatisfied =
         findUnsatisfied state.Solution state.Constraints
  
positive.code:     |> AsyncSeq.map (fun resolution ->
          match resolution with
          | Resolution.Failure f ->
            if state.Constraints.ContainsKey f.Package &&
              match f.Constraint with
              | All xs -> xs |> List.forall state.Constraints.[f.Package].Contains
              | x -> state.Constraints.[f.Package].Contains x
            then resolution
            else
              log("Trying different resolution to workaround: " + f.ToString()|>text, LoggingLevel.Info)
              // we backtracked far enough, we can proceed normally...
              // TODO: remember f.Package + f.Constraint always fails
              Resolution.Error (new System.Exception (f.ToString()))
  
negative.code:                         state.Hints
                          |> AsyncSeq.append freshHints;
                    }
  
                    log (text "!!!!!!!!!!!!!!!!!!!!!!", LoggingLevel.Trace)
                    log (nextState.Solution|>string|>text, LoggingLevel.Trace)
                    log (text "!!!!!!!!!!!!!!!!!!!!!!", LoggingLevel.Trace)
  
                    yield! step context strategy nextState
                  })
  