anchor.diff:  
       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
  +        shouldEqual [ str ] matchingStrings
  +
  +    let fileNamesInDir (dir: string) = dir |> directoryInfo |> filesInDir |> Seq.map (fun x -> x.Name)
  +    let subDirectoryNames (dir: string) = dir |> directoryInfo |> subDirectories |> Seq.map (fun x -> x.Name)    
  +    let matchingFileNamesInDir (filter: string -> bool) (dir: string) = fileNamesInDir dir |> Seq.filter filter
   
       let scenario = "i002812"
       let packageName = "AutoMapper"
  
positive.code: open NUnit.Framework
  open FsUnit
  open Paket
  
  [<Test>]
  let ``#2496 Paket fails on projects that target multiple frameworks``() = 
  
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
  