/** * Makes the given visitor visit a given annotation value. * * @param av an annotation visitor. * @param name the value name. * @param value the actual value. */ static void accept(final AnnotationVisitor av, final String name, final Object value) { if (value instanceof String[]) { final String[] typeconst = (String[]) value; av.visitEnum(name, typeconst[0], typeconst[1]); } else if (value instanceof AnnotationNode) { final AnnotationNode an = (AnnotationNode) value; an.accept(av.visitAnnotation(name, an.desc)); } else if (value instanceof List) { final AnnotationVisitor v = av.visitArray(name); final List array = (List) value; for (int j = 0; j < array.size(); ++j) { accept(v, null, array.get(j)); } v.visitEnd(); } else { av.visit(name, value); } }