anchor.diff:              |> List.forall (fun p -> targets |> Seq.exists ((=) p))
   
           if fullyContained then
  -            sprintf "$(TargetFrameworkIdentifier) == '%s'" typeName :: processed,targets |> List.filter (filter >> not)
  +            (sprintf "$(TargetFrameworkIdentifier) == '%s'" typeName,"") :: processed,targets |> List.filter (filter >> not)
           else
               processed,targets
   
  
positive.code:     let conditions = 
          targets
          |> List.map getTargetCondition
          |> List.filter ((<>) "false")
          |> List.append grouped
           
      match conditions with
      | [ condition ] -> condition
      | [] -> "false"
      | conditions ->
          conditions
          |> List.map (fun c -> sprintf "(%s)" c)
          |> fun cs-> String.Join(" Or ",cs)
negative.code:     match target with
      | SinglePlatform(platform) -> 
          match platform with
          | DotNetFramework(version) ->"$(TargetFrameworkIdentifier) == '.NETFramework'", sprintf "$(TargetFrameworkVersion) == '%O'" version
          | Windows(version) -> "$(TargetFrameworkIdentifier) == '.NETCore'", sprintf "$(TargetFrameworkVersion) == '%O'" version
          | Silverlight(version) -> "$(TargetFrameworkIdentifier) == 'Silverlight'", sprintf "$(TargetFrameworkVersion) == '%O'" version
          | WindowsPhoneApp(version) -> "$(TargetFrameworkIdentifier) == 'WindowsPhoneApp", sprintf "$(TargetFrameworkVersion) == '%O'" version
          | WindowsPhoneSilverlight(version) -> "$(TargetFrameworkIdentifier) == 'WindowsPhone'", sprintf "$(TargetFrameworkVersion) == '%O'" version
          | MonoAndroid | MonoTouch -> "","false" // should be covered by the .NET case above
      | PortableProfile(name, _) -> sprintf "$(TargetFrameworkProfile) == '%O'" name,""
  
  let getCondition (targets : TargetProfile list) =
      let inline CheckIfFullyInGroup typeName matchF (processed,targets) =
  