anchor.diff:                  else
                       reader.NodeType <> XmlNodeType.EndElement
   
  -            member __.ReadBoolean tag = readElementName reader tag ; reader.ReadElementContentAsBoolean()
  -
  -            member __.ReadByte tag = readElementName reader tag ; reader.ReadElementContentAsInt() |> byte
  -            member __.ReadSByte tag = readElementName reader tag ; reader.ReadElementContentAsInt() |> sbyte
  -
  -            member __.ReadInt16 tag = readElementName reader tag ; reader.ReadElementContentAsInt() |> int16
  -            member __.ReadInt32 tag = readElementName reader tag ; reader.ReadElementContentAsInt()
  -            member __.ReadInt64 tag = readElementName reader tag ; reader.ReadElementContentAsLong()
  -
  -            member __.ReadUInt16 tag = readElementName reader tag ; reader.ReadElementContentAsInt() |> uint16
  -            member __.ReadUInt32 tag = readElementName reader tag ; reader.ReadElementContentAsInt() |> uint32
  -            member __.ReadUInt64 tag = readElementName reader tag ; reader.ReadElementContentAsLong() |> uint64
  -
  -            member __.ReadDecimal tag = readElementName reader tag ; reader.ReadElementContentAsDecimal()
  -            member __.ReadSingle tag = readElementName reader tag ; reader.ReadElementContentAsFloat()
  -            member __.ReadDouble tag = readElementName reader tag ; reader.ReadElementContentAsDouble()
  -
  -            member __.ReadChar tag = readElementName reader tag ; reader.ReadElementContentAsString() |> unEscapeString |> char
  -            member __.ReadBigInteger tag = readElementName reader tag ; reader.ReadElementContentAsString() |> System.Numerics.BigInteger.Parse
  +            member __.ReadBoolean tag = reader.ReadElementName tag ; reader.ReadElementContentAsBoolean()
  +            member __.ReadByte tag = reader.ReadElementName tag ; reader.ReadElementContentAsInt() |> byte
  +            member __.ReadSByte tag = reader.ReadElementName tag ; reader.ReadElementContentAsInt() |> sbyte
  +
  +            member __.ReadInt16 tag = reader.ReadElementName tag ; reader.ReadElementContentAsInt() |> int16
  +            member __.ReadInt32 tag = reader.ReadElementName tag ; reader.ReadElementContentAsInt()
  +            member __.ReadInt64 tag = reader.ReadElementName tag ; reader.ReadElementContentAsLong()
  +
  +            member __.ReadUInt16 tag = reader.ReadElementName tag ; reader.ReadElementContentAsInt() |> uint16
  +            member __.ReadUInt32 tag = reader.ReadElementName tag ; reader.ReadElementContentAsInt() |> uint32
  +            member __.ReadUInt64 tag = reader.ReadElementName tag ; reader.ReadElementContentAsLong() |> uint64
  +
  +            member __.ReadDecimal tag = reader.ReadElementName tag ; reader.ReadElementContentAsDecimal()
  +            member __.ReadSingle tag = reader.ReadElementName tag ; reader.ReadElementContentAsFloat()
  +            member __.ReadDouble tag = reader.ReadElementName tag ; reader.ReadElementContentAsDouble()
  +
  +            member __.ReadChar tag = reader.ReadElementName tag ; reader.ReadElementContentAsString() |> unEscapeString |> char
  +            member __.ReadBigInteger tag = reader.ReadElementName tag ; reader.ReadElementContentAsString() |> System.Numerics.BigInteger.Parse
               member __.ReadString tag = 
  -                readElementName reader tag 
  +                reader.ReadElementName tag 
                   if reader.GetAttribute("null") = "true" then
  -                    reader.Read() |> ignore
  +                    reader.MoveNext()
                       null
                   else
                       reader.ReadElementContentAsString() |> unEscapeString
   
  -            member __.ReadGuid tag = readElementName reader tag ; reader.ReadElementContentAsString() |> Guid.Parse
  -            member __.ReadDate tag = readElementName reader tag ; reader.ReadElementContentAsDateTime()
  -            member __.ReadTimeSpan tag = readElementName reader tag ; reader.ReadElementContentAsString () |> TimeSpan.Parse
  +            member __.ReadGuid tag = reader.ReadElementName tag ; reader.ReadElementContentAsString() |> Guid.Parse
  +            member __.ReadDate tag = reader.ReadElementName tag ; reader.ReadElementContentAsDateTime()
  +            member __.ReadTimeSpan tag = reader.ReadElementName tag ; reader.ReadElementContentAsString () |> TimeSpan.Parse
   
               member __.ReadBytes tag =
  -                do readElementName reader tag
  +                do reader.ReadElementName tag
                   if reader.GetAttribute("null") = "true" then 
  -                    reader.Read() |> ignore
  +                    reader.MoveNext()
                       null
                   else
                       let length = reader.GetAttribute("size") |> int
                       let bytes = Array.zeroCreate<byte> length
  -                    do reader.Read() |> ignore
  +                    do reader.MoveNext()
                       if length > 0 then
                           let n = reader.ReadContentAsBase64(bytes, 0, length)
                           if n < length then
  -                            raise <| new EndOfStreamException()
  +                            raise <| new InvalidDataException()
   
                           if reader.NodeType = XmlNodeType.Text then
  -                            reader.Read() |> ignore
  +                            reader.MoveNext()
   
                       bytes
   
  
positive.code:                 | "cyclic" -> flags <- flags ||| ObjectFlags.IsCyclicInstance
                  | "subtype" -> flags <- flags ||| ObjectFlags.IsProperSubtype
                  | "sequence" -> flags <- flags ||| ObjectFlags.IsSequenceHeader
                  | _ -> raise <| new InvalidDataException(sprintf "invalid pickle flag '%s'." t)
  
              flags
  
          type XmlReader with
              member inline r.MoveNext () =
  
negative.code:                     raise <| new FormatException("Xml document ended prematurely.")
  
              member inline r.SkipWhitespace() =
                  while
                     (match r.NodeType with
                      | XmlNodeType.Whitespace
                      | XmlNodeType.SignificantWhitespace
                      | XmlNodeType.Comment -> true
                      | _ -> false) 
                      
                      do r.MoveNext()
  
              member inline r.ReadElementName (tag : string) =
                  do r.SkipWhitespace()
  
                  if r.NodeType <> XmlNodeType.Element then
                      let msg = sprintf "expected token '%O' but was '%O'." XmlNodeType.Element r.NodeType
                      raise <| new FormatException(msg)
  
                  elif r.Name <> tag then
                      let msg = sprintf "expected element '%s' but was '%s'." tag r.Name
                      raise <| new FormatException(msg)
  
  
      open XmlUtils
  