anchor.diff:      Ctor : EmptyConstructor }
   
   /// Record type containing the deserialization information
  +/// for XML attribute properties
  +type internal AttributeReaderInfo = {
  +    Info : System.Reflection.PropertyInfo
  +    Reader : string -> obj
  +    Setter : SetterFunc
  +    Ctor : EmptyConstructor }
  +
  +/// Record type containing the deserialization information
   /// of a specific type and all its members that have to be deserialized
   type internal TypeBuilderInfo = {
       Type : System.Type
       // TODO: I would love to use case-insensitive FSharpMaps instead
       Props : System.Collections.Generic.Dictionary<string, PropertyReaderInfo>
  -    Attrs : System.Collections.Generic.Dictionary<string, PropertyReaderInfo>
  +    Attrs : System.Collections.Generic.Dictionary<string, AttributeReaderInfo>
       Ctor : EmptyConstructor }
   
   /// Record type containing the deserialization information
  
positive.code:         | Some attr when notWhite attr.Name -> attr.Name
          | _ -> pi.Name
  
      /// Build the PropertyReaderInfo record based on the given PropertyInfo
      let rec buildReaderInfo (p : PropertyInfo) = {
          Info = p;
          Reader = getReaderFunc p.PropertyType;
          Setter = ReflectionHelpers.getObjSetter p;
  
negative.code:             |> Some
          else None
  
      let getValueParser t =
          match Type.GetTypeCode(t) with
          | TypeCode.Boolean -> Boolean.Parse >> box |> Some
          | TypeCode.Byte -> Byte.Parse >> box |> Some
          | TypeCode.Int16 -> Int16.Parse >> box |> Some
          | TypeCode.Int32 -> Int32.Parse >> box |> Some
          | TypeCode.Int64 -> Int64.Parse >> box |> Some
          | TypeCode.Char -> Char.Parse >> box |> Some
          | TypeCode.DateTime -> DateTime.Parse >> box |> Some
          | TypeCode.Decimal -> Decimal.Parse >> box |> Some
          | TypeCode.Double -> Double.Parse >> box |> Some
          | TypeCode.SByte -> SByte.Parse >> box |> Some
          | TypeCode.Single -> Single.Parse >> box |> Some
          | TypeCode.UInt16 -> UInt16.Parse >> box |> Some
          | TypeCode.UInt32 -> UInt32.Parse >> box |> Some
          | TypeCode.UInt64 -> UInt64.Parse >> box |> Some
          | TypeCode.String -> box |> Some
          | _ -> None
  
      let getValueReader (t : Type) = fun () ->
          match getValueParser t with
          | Some r -> Some(buildValueReader r)
          | _ -> None
  
  