for (String optionName : option.getNames()) {
String name;
if (optionName.length() == 1) {
name = "-" + optionName;
if (shortOptionNames.contains(name)) {
throw new IntrospectionException("Duplicate option " + name);
} else {
shortOptionNames.add(name);
}
} else {
name = "--" + optionName;
if (longOptionNames.contains(name)) {
throw new IntrospectionException();
} else {
longOptionNames.add(name);
}
}
optionMap.put(name, option);
}
options.add(option);
ListIterator<ParameterDescriptor> i = parameters.listIterator();
while (i.hasNext()) {
ParameterDescriptor next = i.next();
if (next instanceof ArgumentDescriptor) {
i.previous();
break;
}
}
i.add(parameter);
} else if (parameter instanceof ArgumentDescriptor) {
ArgumentDescriptor argument = (ArgumentDescriptor)parameter;
if (argument.getMultiplicity() == Multiplicity.MULTI) {
if (listArgument) {
throw new IntrospectionException();
}
listArgument = true;
}
arguments.add(argument);
parameters.add(argument);