anchor.diff:                  // register new object with deserializer cache
                   r.EarlyRegisterArray array
   
  -                if ef.TypeKind = TypeKind.Primitive then //&& keepEndianness then
  +                if ep.TypeKind = TypeKind.Primitive then //&& keepEndianness then
                       r.Formatter.ReadToPrimitiveArray "data" array
   //                    Stream.WriteToArray(r.BinaryReader.BaseStream, array)
   
                       array
                   else
  -                    let isPrimitive = ef.TypeKind <= TypeKind.Primitive
  +                    let isPrimitive = isPrimitive ep
   
                       match rank with
                       | 1 -> 
                           let arr = fastUnbox<'T []> array
                           for i = 0 to l.[0] - 1 do
  -                            arr.[i] <- read isPrimitive r ef "item"
  +                            arr.[i] <- read isPrimitive r ep "item"
   
                           array
                       | 2 -> 
                           let arr = fastUnbox<'T [,]> array
                           for i = 0 to l.[0] - 1 do
                               for j = 0 to l.[1] - 1 do
  -                                arr.[i,j] <- read isPrimitive r ef "item"
  +                                arr.[i,j] <- read isPrimitive r ep "item"
   
                           array
                       | 3 ->
  
positive.code:                             for j = 0 to l.[1] - 1 do
                                  for k = 0 to l.[2] - 1 do
                                      for l = 0 to l.[3] - 1 do
                                          arr.[i,j,k,l] <- read isPrimitive r ef "item"
  
                          array
                      | _ -> failwith "impossible array rank"
  
negative.code:                         for i = 0 to l.[0] - 1 do
                              for j = 0 to l.[1] - 1 do
                                  for k = 0 to l.[2] - 1 do
                                      arr.[i,j,k] <- read isPrimitive r ep "item"
  
                          array
                      | 4 ->
  