for (Iterator it = arrayAttr.entrySet().iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
String attrName = (String) entry.getKey();
ListExpression listExpr = (ListExpression) entry.getValue();
AnnotationVisitor av2 = av.visitArray(attrName);
List values = listExpr.getExpressions();
if (!values.isEmpty()) {
Expression expr = (Expression) values.get(0);
int arrayElementType = -1;
if (expr instanceof AnnotationConstantExpression) {
arrayElementType = 1;
} else if (expr instanceof ConstantExpression) {
arrayElementType = 2;
} else if (expr instanceof ClassExpression) {
arrayElementType = 3;
} else if (expr instanceof PropertyExpression) {
arrayElementType = 4;
}
for (Iterator exprIt = listExpr.getExpressions().iterator(); exprIt.hasNext();) {
switch (arrayElementType) {
case 1:
AnnotationNode atAttr =
(AnnotationNode) ((AnnotationConstantExpression) exprIt.next()).getValue();
AnnotationVisitor av3 = av2.visitAnnotation(null,
BytecodeHelper.getTypeDescription(atAttr.getClassNode()));
visitAnnotationAttributes(atAttr, av3);
av3.visitEnd();
break;
case 2:
av2.visit(null, ((ConstantExpression) exprIt.next()).getValue());
break;
case 3: