Map<String, Object> enumValueMap = new LinkedHashMap<String, Object>();
Collection<EnumConstantDeclaration> enumConstants = ((EnumDeclaration) getDelegate()).getEnumConstants();
HashSet<String> enumValues = new HashSet<String>(enumConstants.size());
for (EnumConstantDeclaration enumConstant : enumConstants) {
String value = enumConstant.getSimpleName();
XmlEnumValue enumValue = enumConstant.getAnnotation(XmlEnumValue.class);
if (enumValue != null) {
value = enumValue.value();
}
if (!enumValues.add(value)) {
throw new ValidationException(enumConstant.getPosition(), getQualifiedName() + ": duplicate enum value: " + value);
}