anchor.diff:  /// for XML attribute properties
   type internal AttributeReaderInfo = {
       Info : System.Reflection.PropertyInfo
  -    Reader : string -> obj
  +    Reader : DeserializerFunc
       Setter : SetterFunc
       Ctor : EmptyConstructor }
   
  
positive.code:                 match builder.Attrs.TryGetValue k with
                  | true, prop ->
                      try
                          prop.Setter.Invoke(inst, prop.Reader v)
                      with ex ->
                          System.Diagnostics.Trace.WriteLine(
                              String.Format("Failed to set attribute '{0}': {1}", k, ex))
  
negative.code: 
      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
  