String annotationClassName = Type.getType(annotation.type).getClassName();
// get the ClassInfo for the annoation class to populate the assigned element values
// with lazy value holders from the setted value or the default value if defaulted element
// has been used in the annotation
ClassInfo annotationClassInfo = AsmClassInfo.getClassInfo(annotationClassName, loader);
Map annotationElementValueHoldersByName = new HashMap();
// populate with the default values (might be then overriden by setted values)
MethodInfo[] annotationMethods = annotationClassInfo.getMethods();
for (int i = 0; i < annotationMethods.length; i++) {
MethodInfo annotationMethod = annotationMethods[i];
for (Iterator iterator = annotationMethod.getAnnotations().iterator(); iterator.hasNext();) {
AnnotationInfo annotationInfo = (AnnotationInfo) iterator.next();
// handles AnnotationDefault attribute that we have wrapped. See AnnotationDefault.