Idiomatic usage of `Match` is:

            let job_or_event = ... in
            let open Job_or_event.Match in
            let K k = kind job_or_event in
            match k, project k job_or_event with
            | Event , event -> ... use event ...
            | Job   , job   -> ... use job ...

`type _ kind````=`

`|` `Event : Event.t kind`
`|` `Job : Async_kernel__.Job.t kind`

``
`type packed````=`

`|` `K : _ kind ‑> packed`

``
`val kind : t ‑> packed`
`val project : 'a kind ‑> t ‑> 'a`