anchor.diff:                      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
           }
   
  
positive.code:         | String x -> x
          | _ -> raise DecoderException
      add EncodedString decString d
      let epoch = System.DateTime(1970, 1, 1, 0, 0, 0, System.DateTimeKind.Utc)
      let encDateTime (d: System.DateTime) =
          EncodedNumber (string (d.ToUniversalTime() - epoch).TotalMilliseconds)
      let decDateTime = function
          | Number x ->
              match tryParseDouble x with
              | true, x -> epoch + System.TimeSpan.FromMilliseconds x
              | _ -> raise DecoderException
          | _ -> raise DecoderException
      add encDateTime decDateTime d
      let encTimeSpan (t: System.TimeSpan) =
          EncodedNumber (string t.TotalMilliseconds)
      let decTimeSpan = function
  
negative.code:             DATA, data
          ]
  
      let epoch = System.DateTime(1970, 1, 1, 0, 0, 0, System.DateTimeKind.Utc)
  
      let format info =
          {
              AddTag = addTag info
  