let pp_received fmt r =   let pp_elem fmt = function     | `Addr v -> Address.pp_mailbox' fmt v     | `Domain v -> Address.pp_domain fmt v     | `Word v -> Address.pp_word fmt v   in   match r with   | (l, Some date) ->     pp fmt "Received = { @[<hov>%a;@ date = %a@] }"       (pp_lst ~sep:(fun fmt () -> pp fmt "@ ") pp_elem) l       Date.pp date   | (l, None->     pp fmt "Received = @[<hov>%a@]"       (pp_lst ~sep:(fun fmt () -> pp fmt "@ ") pp_elem) l