This module uses the X-macro technique to keep a variant type in ML synchronized with an enum in C. Check the jbuild file to figure out which files are safe to edit and which files are generated during the build. To help distinguish the two, the next comment is omitted from the generated copy. *
The order of variants in this enum type must be kept in sync with a C-side enum or else options will be silently misparsed. *
Polymorphic variants are provided for concision at client call sites. *