Now we will add a parameter representing the first name. Let's name it firstName and change its type to String, as in the case of familyName.
In the case of family names, at least in English, the form doesn't determine the owner's gender. That is not the case of given names, so it may have sense to distinguish male and female names. Let's then add two choices to the firstName parameter: male and female. Do not bother to define values for these choices as they will never be used. Instead, add three choices to both male and female choices:
Choices that have other choices as children will be referred as abstract choices. Choices on the bottom of the hierarchy will be called leaf choices.