anchor.diff:      open System.Collections.Generic
       open System.IO
       open System.Reflection
  -    open System.Xml
   
       open SharpXml.Attempt
       open SharpXml.Extensions
   
  +    /// Record type containing the serialization information
  +    /// for a specific property member
       type PropertyWriterInfo = {
           Info : PropertyInfo
           OriginalName : string
  
positive.code:         elif t = typeof<Type> then Some ValueTypeSerializer.writeType
          else None
  
      let rec writeEnumerable (writer : TextWriter) (value : obj) =
          let collection : IEnumerable = unbox value
          let write func elem =
              let f = match func with | None -> determineWriter (elem.GetType()) | _ -> func
  
negative.code:             match determineWriter t with
              | Some s -> Atom.updateAtomDict serializerCache t s
              | _ -> invalidOp "No serializer available for type %s" t.FullName
  
      /// Get the PropertyWriterInfo array for the given type
      let getProperties (t : Type) =
          match (!propertyCache).TryGetValue t with
          | true, props -> props
          | _ ->
              let buildWriter = buildPropertyWriterInfo
              let props =
                  Reflection.getSerializableProperties t
                  |> Seq.filter (fun p -> p.GetIndexParameters().Length = 0)
                  |> Seq.map buildWriter
                  |> Array.ofSeq
              Atom.updateAtomDict propertyCache t props
  
      /// Writer for classes and other reference types
      let writeClass (writer : TextWriter) (value : obj) =
          let t = value.GetType()
          getProperties t
          |> Seq.iter (fun p ->
              match p.WriteFunc with
              | Some write ->
                  let v = p.GetFunc value
                  if v <> null then
                      write writer v
              | _ -> ())
  