A tagged union would be a variant on hash (and possibly array?) validators that permits different validations to be applied when a specified 'tag' key takes on specific values.
Currently, this can be vaguely emulated by adding rule validators to fields that inspect the tag manually to derive the constraint.