anchor.diff:          | 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
  
positive.code:             DATA, data
          ]
  
      let format info =
          {
              AddTag = addTag info
  
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
          }
  
  