Open co-products. OCaml supports these, and they’re also fairly common in exception handling, e.g. in Rust/Swift.