anchor.diff:      let key40 = match reqLangVersion with 
                   | FSharp_2_0 ->  @"Software\Microsoft\FSharp\2.0\Runtime\v4.0"
                   | FSharp_3_0 ->  @"Software\Microsoft\FSharp\3.0\Runtime\v4.0"
  +                | FSharp_3_1 ->  @"Software\Microsoft\FSharp\3.1\Runtime\v4.0"
                   
       let key1,key2 = match FSharpCoreLibRunningVersion with 
                       | None -> key20,key40 
  
positive.code:         let result =
              //early termination on Mono, continuing here results in failed pinvokes and reg key failures ~18-35ms
              if Environment.runningOnMono then None else
              match reqLangVersion, targetFramework with 
              | FSharp_2_0, x when (x = FSharpTargetFramework.NET_2_0 || x = FSharpTargetFramework.NET_3_0 || x = FSharpTargetFramework.NET_3_5) -> 
                  tryRegKey @"Software\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\Microsoft Visual F# 4.0"
              | FSharp_2_0, _ -> 
                  tryRegKey @"Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\Microsoft Visual F# 4.0"
              | FSharp_3_0, x when (x = FSharpTargetFramework.NET_2_0 || x = FSharpTargetFramework.NET_3_0 || x = FSharpTargetFramework.NET_3_5) -> 
                  tryRegKey @"Software\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\F# 3.0 Core Assemblies"
              | FSharp_3_0, _ -> 
                  tryRegKey @"Software\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\F# 3.0 Core Assemblies"
              | _ -> None 
          
          match result with 
          | Some _ ->  result 
  
negative.code:         Debug.WriteLine(sprintf "Resolution: targetFramework = %A" targetFramework)
          let ext = 
              match targetFramework with 
              | NET_2_0 | NET_3_0 | NET_3_5 -> "2.0"
              | NET_4_0 -> "4.0"
              | NET_4_5 -> "4.5"
  
          let safeExists f = (try File.Exists(f) with _ -> false)
          let result = 
              possibleInstallationPoints |> List.tryPick (fun possibleInstallationDir -> 
  