anchor.diff:                  match builder.Attrs.TryGetValue k with
                   | true, prop ->
                       try
  -                        prop.Setter.Invoke(inst, v)
  +                        prop.Setter.Invoke(inst, prop.Reader v)
                       with ex ->
                           System.Diagnostics.Trace.WriteLine(
                               String.Format("Failed to set attribute '{0}': {1}", k, ex))
  
positive.code:             ReflectionHelpers.getDeserializableProperties t
              |> Array.fold func
                  (Dictionary<string, PropertyReaderInfo>(StringComparer.OrdinalIgnoreCase),
                   Dictionary<string, PropertyReaderInfo>(StringComparer.OrdinalIgnoreCase))
          { Type = t
            Props = props
            Attrs = attrs
  
negative.code:     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, AttributeReaderInfo>
      Ctor : EmptyConstructor }
  
  /// Record type containing the deserialization information
  