anchor.diff:                  |> Set.ofSeq
                   |> fun cs -> String.Join(" Or ",cs)
               sprintf "%s And (%s)" group detail)
  -    |> Seq.toList
       |> fun l -> 
               match l with
               | [] -> ""
  
positive.code:         |> List.map getTargetCondition
          |> List.filter (fun (_,v) -> v <> "false")
          |> List.append grouped
          |> Seq.groupBy fst
  
      conditions
      |> Seq.map (fun (group,conditions) ->
          match List.ofSeq conditions with
          | [ _,"" ] -> group
          | [ _,detail ] -> sprintf "%s And %s" group detail
  
negative.code:     |> List.map (fun path -> path, (getPenalty requiredPlatforms path))
      |> List.filter (fun (_, penalty) -> penalty < MaxPenalty)
      |> List.sortWith comparePaths
      |> List.map fst
      |> List.tryFind (fun _ -> true)
  
  // For a given list of paths and target profiles return tuples of paths with their supported target profiles.
  // Every target profile will only be listed for own path - the one that best supports it. 
  