anchor.diff:                      cache'.TryAdd(s,t) |> ignore
                       t
   
  -
  -//        // produces a structural hashcode out of a byte array
  -//        let getByteHashCode (bs : byte []) =
  -//            let n = bs.Length
  -//            let mutable i = 0
  -//            let mutable acc = 0
  -//
  -//            let inline bytes2Int x y z w = 
  -//                int x + (int y <<< 8) + (int z <<< 16) + (int w <<< 24)
  -//
  -//            while i + 4 <= n do
  -//                acc <- acc ^^^ bytes2Int bs.[i] bs.[i + 1] bs.[i + 2] bs.[i + 3]
  -//                i <- i + 4
  -//
  -//            match n - i with
  -//            | 0 -> ()
  -//            | 1 -> acc <- acc ^^^ bytes2Int bs.[i] 0uy 0uy 0uy
  -//            | 2 -> acc <- acc ^^^ bytes2Int bs.[i] bs.[i+1] 0uy 0uy
  -//            | _ -> acc <- acc ^^^ bytes2Int bs.[i] bs.[i+1] bs.[i+2] 0uy
  -//
  -//            acc
  -
           [<RequireQualifiedAccess>]
           module Stream =
   
  
positive.code:         // as suggested in http://stackoverflow.com/a/8543850
          let isDotNet45OrNewer =
              lazy(Type.GetType("System.Reflection.ReflectionContext") <> null)
  
  //        // TODO: include in serialization header
  //        let versionTag = 
  //            let version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version
  //            sprintf "FsPickler-v%O" version
  
          /// stackless raise operator
          let inline raise (e: System.Exception) = (# "throw" e : 'U #)
  
negative.code:         open System.Threading
          open System.Text
          open System.Runtime.Serialization
  
          open Microsoft.FSharp.Reflection
  
  