anchor.diff:          | TypeCode.UInt16  -> Some <| SerializerFunc(unbox >> writeUInt16)
           | TypeCode.UInt32  -> Some <| SerializerFunc(unbox >> writeUInt32)
           | TypeCode.UInt64  -> Some <| SerializerFunc(unbox >> writeUInt64)
  +        | TypeCode.DateTime -> Some <| SerializerFunc(unbox >> toShortestXsdFormat)
           | _                -> None
  +
  +    let writeEnumNames (t: Type) =
  +        let under = Enum.GetUnderlyingType(t)
  +        attributeValueWriter under
   
       let writeEnum (v : obj) =
           v.ToString()
  
positive.code:     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
          | TypeCode.Byte    -> Some <| SerializerFunc(unbox >> writeByte)
          | TypeCode.Char    -> Some <| SerializerFunc(unbox >> writeChar)
          | TypeCode.Decimal -> Some <| SerializerFunc(unbox >> writeDecimal)
  
negative.code:             then writeEnumNames t
              else None
          else
              attributeValueWriter (t.NullableUnderlying())
  
  /// Serialization logic for list and collection types
  module internal ListSerializer =
  