anchor.diff:      let Map16 = 0xdeuy
       [<Literal>]
       let Map32 = 0xdfuy
  +    let NegativeFixNum = [| 0xe0uy..0xffuy |]
   
   type Value =
       | Nil
  
positive.code: 
          let res = pack bytes (Array.length bytes)
          match Array.length res with
          | 1 -> [| yield DataType.Int8; yield! res |]
          | 2 -> [| yield DataType.Int16; yield! res |]
          | 4 -> [| yield DataType.Int32; yield! res |]
          | 8 -> [| yield DataType.Int64; yield! res |]
          | _ -> failwith "Cannot happen. failing encode int"
  
      let rec pack = function
          | Nil -> [| DataType.Nil |]
  
negative.code:         | Int64 i -> i |> BitConverter.GetBytes |> packInt
          | Float32 f -> [| yield DataType.Float32; yield! BitConverter.GetBytes f |]
          | Float64 f -> [| yield DataType.Float64; yield! BitConverter.GetBytes f |]
          | String s -> packString s
          | Array a when Array.length a < 16 ->
              [| yield DataType.FixArray.[Array.length a]
                 yield! Array.collect pack a |] 
  