//Qualified class name is added first to match before unqualified class (which is still resolved for backwards compatibility)
newCodes.addAll(Arrays.asList(result.resolveMessageCodes(constraintOwningClass.getName() + '.' + constraintPropertyName + '.' + getName() + ".error", constraintPropertyName)));
newCodes.addAll(Arrays.asList(result.resolveMessageCodes(classShortName + '.' + constraintPropertyName + '.' + getName() + ".error", constraintPropertyName)));
for (String code : codes) {
newCodes.addAll(Arrays.asList(result.resolveMessageCodes(constraintOwningClass.getName() + '.' + constraintPropertyName + '.' + code, constraintPropertyName)));
newCodes.addAll(Arrays.asList(result.resolveMessageCodes(classShortName + '.' + constraintPropertyName + '.' + code, constraintPropertyName)));
//We resolve the error code on it's own last so that a global code doesn't override a class/field specific error
newCodes.addAll(Arrays.asList(result.resolveMessageCodes(code, constraintPropertyName)));
}
FieldError error = new FieldError(