Well, as written an 'optional boolean' clause will generate a boolean parameter with default 'false' - which isn't the same as a true 'optional boolean'. A non-defaulted optional boolean has three values 'true', 'false', 'not-specified'. (same with c-data, integer and real). By making 'optional boolean' generate a default now, it means we can't add true optional boolean (or c-data, integer and real) parameters later.