anchor.diff:          interface IPickleFormatReader with
               
               member __.BeginReadRoot (tag : string) =
  -                do readElementName reader "FsPickler"
  +                do reader.MoveNext() // initial read
  +                do reader.SkipWhitespace()
  +                if reader.NodeType = XmlNodeType.XmlDeclaration then
  +                    reader.MoveNext ()
  +
  +                reader.ReadElementName "FsPickler"
   
                   let version = reader.["version"]
                   if version <> AssemblyVersionInformation.Version then
  -                    let msg = sprintf "Invalid FsPickler version %s (expected %s)." version AssemblyVersionInformation.Version
  -                    raise <| new InvalidDataException(msg)
  +                    let msg = sprintf "Unsupported FsPickler version %s." version
  +                    raise <| new FormatException(msg)
   
                   let sTag = reader.["type"]
                   if sTag <> tag then
  
positive.code:                 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 __.ReadString tag = 
                  readElementName reader tag 
                  if reader.GetAttribute("null") = "true" then
                      reader.Read() |> ignore
                      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 __.ReadBytes tag =
                  do readElementName reader tag
                  if reader.GetAttribute("null") = "true" then 
                      reader.Read() |> ignore
                      null
                  else
                      let length = reader.GetAttribute("size") |> int
                      let bytes = Array.zeroCreate<byte> length
                      do reader.Read() |> ignore
                      if length > 0 then
                          let n = reader.ReadContentAsBase64(bytes, 0, length)
                          if n < length then
                              raise <| new EndOfStreamException()
  
                          if reader.NodeType = XmlNodeType.Text then
                              reader.Read() |> ignore
  
                      bytes
  
  
negative.code: 
              member __.EndReadRoot () =
                  if reader.IsEmptyElement then
                      reader.MoveNext()
                  else
                      reader.ReadEndElement()
  
              member __.BeginReadObject (tag : string) =
                  do reader.ReadElementName tag
  
                  let flags = parseFlagCsv <| reader.["flags"]
  
  