void sieve_ext_imap4flags_register_side_effect
(struct sieve_validator *valdtr, const struct sieve_extension *flg_ext,
	const char *command)
{
	/* Implicit tag if none is specified */
	sieve_validator_register_persistent_tag
		(valdtr, command, flg_ext, &tag_flags_implicit);
}
void ext_imap4flags_attach_flags_tag
(struct sieve_validator *valdtr, const struct sieve_extension *ext,
	const char *command, bool implicit)
{
	/* Register :flags tag with the command and we don't care whether it is
	 * registered or even whether it will be registered at all. The validator
	 * handles either situation gracefully
	 */

	if ( !implicit ) {
		/* Tag specified by user */
		sieve_validator_register_external_tag
			(valdtr, command, ext, &tag_flags, SIEVE_OPT_SIDE_EFFECT);
	}

    /* Implicit tag if none is specified */
	sieve_validator_register_persistent_tag
		(valdtr, command, ext, &tag_flags_implicit);
}