anchor.diff:  open NUnit.Framework
   open FsUnit
   open Paket
  +open Paket.Utils
   
   [<Test>]
   let ``#2496 Paket fails on projects that target multiple frameworks``() = 
  
positive.code: 
      let shouldContainExactlyOneCasingVariant (str: string) (sequence: string seq) = 
          let matchingStrings = getCasingVariantsOf str sequence |> List.ofSeq
          if not (matchingStrings |> Seq.tryExactlyOne |> Option.exists ((=) str))
          then failwithf "Expected \"%s\" but got %A" str matchingStrings
  
      let scenario = "i002812"
      let packageName = "AutoMapper"
  
negative.code:     [ packageName; packageNameLowercase ] |> Seq.iter clearPackage
      directPaket "restore" scenario |> ignore
      
      // check if packages stored in cache are properly lowercased
      Constants.UserNuGetPackagesFolder
          |> subDirectoryNames
          |> shouldContainExactlyOneCasingVariant packageNameLowercase
      Constants.UserNuGetPackagesFolder @@ packageNameLowercase @@ packageVersion
          |> matchingFileNamesInDir (String.startsWithIgnoreCase (sprintf "%s." packageName))
          |> Seq.map (fun x -> x.Substring(0, packageName.Length))
          |> Seq.distinct
          |> shouldContainExactlyOneCasingVariant packageNameLowercase
  
      // check if packages stored in solution package folder are left unchanged
      let packagesDirectory = (scenarioTempPath scenario) @@ "packages"
      packagesDirectory
          |> subDirectoryNames
          |> shouldContainExactlyOneCasingVariant packageName
      packagesDirectory @@ packageName
          |> matchingFileNamesInDir (String.startsWithIgnoreCase (sprintf "%s." packageName))
          |> Seq.map (fun x -> x.Substring(0, packageName.Length))
          |> Seq.distinct
          |> shouldContainExactlyOneCasingVariant packageName
  