Optional arguments are optional, so if one is missing, do not stop the parsing,
but continue with the next argument (it might be a required one).
} else {
if (p.next_token().cat() == catEscape ||
p.next_token().character() != '[')
} else {
if (p.next_token().cat() == catEscape ||
p.next_token().character() != '[')
p.get_token(); // eat '['
begin_inset(os, "Argument ");
os << i << "\nstatus collapsed\n\n";
p.get_token(); // eat '['
begin_inset(os, "Argument ");
os << i << "\nstatus collapsed\n\n";