Class<? extends ValueParser> parserKlazz = annotation.valueParser();
if (parserKlazz != NullValueParser.class) {
try {
this.valueParser = parserKlazz.newInstance();
} catch (Exception e) {
throw new UnsupportedTypeException("Failed to instantiate " +
"value parser " + parserKlazz.getName() +
" for option --" + this.longOptionName);
}
} else if (type.isEnum()) {
this.valueParser = new EnumValueParser();
Object[] constants = type.getEnumConstants();
this.alternatives = new HashSet<String>();
for (Object enumValue : constants) {
this.alternatives.add(enumValue.toString());
}
} else {
this.valueParser = parsers.get(type);
if(this.valueParser == null)
throw new UnsupportedTypeException("Internal error: Option --" +
this.longOptionName + " has unsupported type " + type.getName());
}
}