anchor.diff:              raise EncoderException
   
   let objectDecoder dD (i: FormatSettings) (t: System.Type) =
  -    if not t.IsSerializable then
  +    if t = typeof<System.DateTime> then
  +        fun (x: Value) ->
  +            match i.DecodeDateTime x with
  +            | Some d -> box d
  +            | None -> raise DecoderException
  +    elif not t.IsSerializable then
           raise (NoEncodingException t)
  +    else
       match t.GetConstructor [||] with
       | null -> raise (NoEncodingException t)
       | _ -> ()
  
positive.code:     |> Seq.toArray
  
  let objectEncoder dE (i: FormatSettings) (t: System.Type) =
      if not t.IsSerializable then
          raise (NoEncodingException t)
      let fs = getObjectFields t
      let ms = fs |> Array.map (fun x -> x :> System.Reflection.MemberInfo)
      let es = fs |> Array.map (fun f ->
  
negative.code:                     fun tag -> Some (n, tags.[tag])
              GetEncodedUnionFieldName = fun p -> let n = p.Name in fun _ -> n
              RepresentNullUnionsAsAbsentField = true
              EncodeDateTime = fun d ->
                  EncodedString (d.ToString("o"))
              DecodeDateTime = function
                  | String s ->
                      match System.DateTime.TryParse(s) with
                      | true, x -> Some x
                      | false, _ -> None
                  | _ -> None
              Pack = flatten
          }
  
  