The `ProcArg` type is the disjoint union of all the `Proc_*` types. Perhaps it deserves another name, like `ProcUnion` or `ProcAny`.