anchor.diff:  
   
           // the primary deserialization routine; handles all the caching, subtype resolution logic, etc
  -        member r.Read(fmt : Pickler<'T>) : 'T =
  +        member r.Read(pickler : Pickler<'T>) : 'T =
   
               // ad-hoc System.Type caching
               let inline readType () =
  
positive.code:                         else
                              write ObjHeader.isNewCachedInstance
  
                      elif fmt.IsCyclicType && objStack.Contains id && not <| cyclicObjects.Contains id then
                          // came across cyclic object, record fixup-related data
                          // cyclic objects are handled once per instance
                          // instances of cyclic arrays are handled differently than other reference types
  
                          do cyclicObjects.Add(id) |> ignore
                      
                          if fmt.TypeKind <= TypeKind.Sealed || fmt.UseWithSubtypes then
                              if fmt.TypeKind = TypeKind.Array then
                                  writeHeader ObjHeader.isOldCachedInstance
                              else
                                  writeHeader ObjHeader.isCyclicInstance
  
negative.code:                 raise <| new SerializationException(msg)
              
              // read object header
              match ObjHeader.read pickler.Type pickler.PicklerFlags (br.ReadUInt32()) with
              | ObjHeader.isSequenceHeader -> ()
              | _ -> 
                  let msg = "FsPickler: invalid stream data; expected sequence serialization."
  