anchor.diff:      let writeUInt32  (v : uint16)  = v.ToString()
       let writeUInt64  (v : uint64)  = v.ToString()
   
  -    let writeEnumNames (t: Type) =
  -        let under = Enum.GetUnderlyingType(t)
  -        match Type.GetTypeCode(under) with
  +    let writeBool v =
  +        match v with
  +        | true  -> "true"
  +        | false -> "false"
  +
  +    let attributeValueWriter (t: Type) =
  +        match Type.GetTypeCode(t) with
  +        | TypeCode.Boolean -> Some <| SerializerFunc(unbox >> writeBool)
           | TypeCode.Byte    -> Some <| SerializerFunc(unbox >> writeByte)
           | TypeCode.Char    -> Some <| SerializerFunc(unbox >> writeChar)
           | TypeCode.Decimal -> Some <| SerializerFunc(unbox >> writeDecimal)
  
positive.code:         | TypeCode.UInt16  -> Some <| SerializerFunc(unbox >> writeUInt16)
          | TypeCode.UInt32  -> Some <| SerializerFunc(unbox >> writeUInt32)
          | TypeCode.UInt64  -> Some <| SerializerFunc(unbox >> writeUInt64)
          | _                -> None
  
      let writeEnum (v : obj) =
          v.ToString()
  
negative.code:             then writeEnumNames t
              else None
          else
              attributeValueWriter (t.NullableUnderlying())
  
  /// Serialization logic for list and collection types
  module internal ListSerializer =
  