anchor.diff:      let pickleUTF32 =
           wrap (System.Text.Encoding.UTF32.GetString, System.Text.Encoding.UTF32.GetBytes) (array pickleByte)
   
  -
  -
  -
  +    /// Pickles a decimal
  +    let pickleDecimal =
  +        let intAToDecimal (a : int[]) = System.Decimal a
  +        wrap (intAToDecimal, System.Decimal.GetBits) (repeatA pickleInt32 4)
  
positive.code:     /// Given a value of x, returns a pickler of x
      let lift x = {Pickle = (fun (_,st) -> st); Unpickle = (fun s -> x, s)}
  
      let sequ (f : 'b -> 'a) (pa : BinaryPU<'a>) (k : 'a -> BinaryPU<'b>) : BinaryPU<'b> =
          match pa with
          |{Unpickle = unPck; Pickle = pck} ->
              let unPck' = fun s ->
                  let a, s' = runUnpickle s pa
                  runUnpickle s' (k a)
              let pck' = fun (b, s) ->
                  let a = f b
                  let pb = k a
                  runPickle (a, runPickle (b, s) pb) pa
  
negative.code: 
  type BinaryPU<'a> = {Pickle : 'a * BinaryPicklerState -> BinaryPicklerState; Unpickle : BinaryUnpicklerState -> 'a * BinaryUnpicklerState}
  
  /// Conversions functions
  module private PickleConvertors =
      /// perform some type conversion with exception checks on the array bounds
      let private checkConversionException f pos array =
          try
              f array
  