public AnnotationVisitor visitAnnotation(String annoDesc,
boolean visible) {
for (OnMethod om : applicableOnMethods) {
String extAnnoName = Type.getType(annoDesc).getClassName();
String annoName = om.getMethod();
if (annoName.length() > 0 && annoName.charAt(0) == '@') {
annoName = annoName.substring(1);
if (annoName.length() == 0) {
continue;
}
if (REGEX_SPECIFIER.matcher(annoName).matches()) {
annoName = annoName.substring(1, annoName.length() - 1);
try {
if (extAnnoName.matches(annoName)) {
mv = instrumentorFor(om, mv, lvs, tsIndex, access, name, desc);
}
} catch (PatternSyntaxException pse) {
reportPatternSyntaxException(extAnnoName);
}
} else if (annoName.equals(extAnnoName)) {
mv = instrumentorFor(om, mv, lvs, tsIndex, access, name, desc);
}
}
}
return mv.visitAnnotation(annoDesc, visible);
}
};