completerType,
annotation);
//
if (getMultiplicity() == Multiplicity.MULTI && getType() == ValueType.BOOLEAN) {
throw new IllegalParameterException();
}
//
names = new ArrayList<String>(names);
for (String name : names) {
if (name == null) {
throw new IllegalParameterException("Option name must not be null");
}
int length = name.length();
if (length == 0) {
throw new IllegalParameterException("Option name cannot be empty");
}
if (!A.get(name.charAt(0))) {
throw new IllegalParameterException("Option name " + name + " cannot start with " + name.charAt(0));
}
checkChar(name, 0, A);
checkChar(name, length - 1, A);
for (int i = 1;i < length - 1;i++) {
checkChar(name, i, B);