specs for issue #319 (optional groups)
possible implementation for #319

Might be better to go with `optional_group(element)` than `group(element, required: false)`?