• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * ProGuard -- shrinking, optimization, obfuscation, and preverification
3  *             of Java bytecode.
4  *
5  * Copyright (c) 2002-2014 Eric Lafortune (eric@graphics.cornell.edu)
6  *
7  * This program is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by the Free
9  * Software Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * This program is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15  * more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  */
21 package proguard.classfile.attribute.visitor;
22 
23 import proguard.classfile.*;
24 import proguard.classfile.attribute.*;
25 import proguard.classfile.attribute.annotation.*;
26 import proguard.classfile.attribute.preverification.*;
27 
28 /**
29  * This AttributeVisitor delegates all visits to each AttributeVisitor
30  * in a given list.
31  *
32  * @author Eric Lafortune
33  */
34 public class MultiAttributeVisitor implements AttributeVisitor
35 {
36     private AttributeVisitor[] attributeVisitors;
37 
38 
MultiAttributeVisitor()39     public MultiAttributeVisitor()
40     {
41     }
42 
43 
MultiAttributeVisitor(AttributeVisitor[] attributeVisitors)44     public MultiAttributeVisitor(AttributeVisitor[] attributeVisitors)
45     {
46         this.attributeVisitors = attributeVisitors;
47     }
48 
49 
addAttributeVisitor(AttributeVisitor attributeVisitor)50     public void addAttributeVisitor(AttributeVisitor attributeVisitor)
51     {
52         incrementArraySize();
53 
54         attributeVisitors[attributeVisitors.length - 1] = attributeVisitor;
55     }
56 
57 
incrementArraySize()58     private void incrementArraySize()
59     {
60         if (attributeVisitors == null)
61         {
62             attributeVisitors = new AttributeVisitor[1];
63         }
64         else
65         {
66             AttributeVisitor[] newAttributeVisitors =
67                 new AttributeVisitor[attributeVisitors.length + 1];
68             System.arraycopy(attributeVisitors, 0,
69                              newAttributeVisitors, 0,
70                              attributeVisitors.length);
71             attributeVisitors = newAttributeVisitors;
72         }
73     }
74 
75 
76     // Implementations for AttributeVisitor.
77 
78 
visitUnknownAttribute(Clazz clazz, UnknownAttribute unknownAttribute)79     public void visitUnknownAttribute(Clazz clazz, UnknownAttribute unknownAttribute)
80     {
81         for (int index = 0; index < attributeVisitors.length; index++)
82         {
83             attributeVisitors[index].visitUnknownAttribute(clazz, unknownAttribute);
84         }
85     }
86 
87 
visitBootstrapMethodsAttribute(Clazz clazz, BootstrapMethodsAttribute bootstrapMethodsAttribute)88     public void visitBootstrapMethodsAttribute(Clazz clazz, BootstrapMethodsAttribute bootstrapMethodsAttribute)
89     {
90         for (int index = 0; index < attributeVisitors.length; index++)
91         {
92             attributeVisitors[index].visitBootstrapMethodsAttribute(clazz, bootstrapMethodsAttribute);
93         }
94     }
95 
96 
visitSourceFileAttribute(Clazz clazz, SourceFileAttribute sourceFileAttribute)97     public void visitSourceFileAttribute(Clazz clazz, SourceFileAttribute sourceFileAttribute)
98     {
99         for (int index = 0; index < attributeVisitors.length; index++)
100         {
101             attributeVisitors[index].visitSourceFileAttribute(clazz, sourceFileAttribute);
102         }
103     }
104 
105 
visitSourceDirAttribute(Clazz clazz, SourceDirAttribute sourceDirAttribute)106     public void visitSourceDirAttribute(Clazz clazz, SourceDirAttribute sourceDirAttribute)
107     {
108         for (int index = 0; index < attributeVisitors.length; index++)
109         {
110             attributeVisitors[index].visitSourceDirAttribute(clazz, sourceDirAttribute);
111         }
112     }
113 
114 
visitInnerClassesAttribute(Clazz clazz, InnerClassesAttribute innerClassesAttribute)115     public void visitInnerClassesAttribute(Clazz clazz, InnerClassesAttribute innerClassesAttribute)
116     {
117         for (int index = 0; index < attributeVisitors.length; index++)
118         {
119             attributeVisitors[index].visitInnerClassesAttribute(clazz, innerClassesAttribute);
120         }
121     }
122 
123 
visitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute)124     public void visitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute)
125     {
126         for (int index = 0; index < attributeVisitors.length; index++)
127         {
128             attributeVisitors[index].visitEnclosingMethodAttribute(clazz, enclosingMethodAttribute);
129         }
130     }
131 
132 
visitDeprecatedAttribute(Clazz clazz, DeprecatedAttribute deprecatedAttribute)133     public void visitDeprecatedAttribute(Clazz clazz, DeprecatedAttribute deprecatedAttribute)
134     {
135         for (int index = 0; index < attributeVisitors.length; index++)
136         {
137             attributeVisitors[index].visitDeprecatedAttribute(clazz, deprecatedAttribute);
138         }
139     }
140 
141 
visitSyntheticAttribute(Clazz clazz, SyntheticAttribute syntheticAttribute)142     public void visitSyntheticAttribute(Clazz clazz, SyntheticAttribute syntheticAttribute)
143     {
144         for (int index = 0; index < attributeVisitors.length; index++)
145         {
146             attributeVisitors[index].visitSyntheticAttribute(clazz, syntheticAttribute);
147         }
148     }
149 
150 
visitSignatureAttribute(Clazz clazz, SignatureAttribute syntheticAttribute)151     public void visitSignatureAttribute(Clazz clazz, SignatureAttribute syntheticAttribute)
152     {
153         for (int index = 0; index < attributeVisitors.length; index++)
154         {
155             attributeVisitors[index].visitSignatureAttribute(clazz, syntheticAttribute);
156         }
157     }
158 
159 
visitDeprecatedAttribute(Clazz clazz, Field field, DeprecatedAttribute deprecatedAttribute)160     public void visitDeprecatedAttribute(Clazz clazz, Field field, DeprecatedAttribute deprecatedAttribute)
161     {
162         for (int index = 0; index < attributeVisitors.length; index++)
163         {
164             attributeVisitors[index].visitDeprecatedAttribute(clazz, field, deprecatedAttribute);
165         }
166     }
167 
168 
visitSyntheticAttribute(Clazz clazz, Field field, SyntheticAttribute syntheticAttribute)169     public void visitSyntheticAttribute(Clazz clazz, Field field, SyntheticAttribute syntheticAttribute)
170     {
171         for (int index = 0; index < attributeVisitors.length; index++)
172         {
173             attributeVisitors[index].visitSyntheticAttribute(clazz, field, syntheticAttribute);
174         }
175     }
176 
177 
visitSignatureAttribute(Clazz clazz, Field field, SignatureAttribute syntheticAttribute)178     public void visitSignatureAttribute(Clazz clazz, Field field, SignatureAttribute syntheticAttribute)
179     {
180         for (int index = 0; index < attributeVisitors.length; index++)
181         {
182             attributeVisitors[index].visitSignatureAttribute(clazz, field, syntheticAttribute);
183         }
184     }
185 
186 
visitDeprecatedAttribute(Clazz clazz, Method method, DeprecatedAttribute deprecatedAttribute)187     public void visitDeprecatedAttribute(Clazz clazz, Method method, DeprecatedAttribute deprecatedAttribute)
188     {
189         for (int index = 0; index < attributeVisitors.length; index++)
190         {
191             attributeVisitors[index].visitDeprecatedAttribute(clazz, method, deprecatedAttribute);
192         }
193     }
194 
195 
visitSyntheticAttribute(Clazz clazz, Method method, SyntheticAttribute syntheticAttribute)196     public void visitSyntheticAttribute(Clazz clazz, Method method, SyntheticAttribute syntheticAttribute)
197     {
198         for (int index = 0; index < attributeVisitors.length; index++)
199         {
200             attributeVisitors[index].visitSyntheticAttribute(clazz, method, syntheticAttribute);
201         }
202     }
203 
204 
visitSignatureAttribute(Clazz clazz, Method method, SignatureAttribute syntheticAttribute)205     public void visitSignatureAttribute(Clazz clazz, Method method, SignatureAttribute syntheticAttribute)
206     {
207         for (int index = 0; index < attributeVisitors.length; index++)
208         {
209             attributeVisitors[index].visitSignatureAttribute(clazz, method, syntheticAttribute);
210         }
211     }
212 
213 
visitConstantValueAttribute(Clazz clazz, Field field, ConstantValueAttribute constantValueAttribute)214     public void visitConstantValueAttribute(Clazz clazz, Field field, ConstantValueAttribute constantValueAttribute)
215     {
216         for (int index = 0; index < attributeVisitors.length; index++)
217         {
218             attributeVisitors[index].visitConstantValueAttribute(clazz, field, constantValueAttribute);
219         }
220     }
221 
222 
visitMethodParametersAttribute(Clazz clazz, Method method, MethodParametersAttribute methodParametersAttribute)223     public void visitMethodParametersAttribute(Clazz clazz, Method method, MethodParametersAttribute methodParametersAttribute)
224     {
225         for (int index = 0; index < attributeVisitors.length; index++)
226         {
227             attributeVisitors[index].visitMethodParametersAttribute(clazz, method, methodParametersAttribute);
228         }
229     }
230 
231 
visitExceptionsAttribute(Clazz clazz, Method method, ExceptionsAttribute exceptionsAttribute)232     public void visitExceptionsAttribute(Clazz clazz, Method method, ExceptionsAttribute exceptionsAttribute)
233     {
234         for (int index = 0; index < attributeVisitors.length; index++)
235         {
236             attributeVisitors[index].visitExceptionsAttribute(clazz, method, exceptionsAttribute);
237         }
238     }
239 
240 
visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)241     public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
242     {
243         for (int index = 0; index < attributeVisitors.length; index++)
244         {
245             attributeVisitors[index].visitCodeAttribute(clazz, method, codeAttribute);
246         }
247     }
248 
249 
visitStackMapAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapAttribute stackMapAttribute)250     public void visitStackMapAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapAttribute stackMapAttribute)
251     {
252         for (int index = 0; index < attributeVisitors.length; index++)
253         {
254             attributeVisitors[index].visitStackMapAttribute(clazz, method, codeAttribute, stackMapAttribute);
255         }
256     }
257 
258 
visitStackMapTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapTableAttribute stackMapTableAttribute)259     public void visitStackMapTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapTableAttribute stackMapTableAttribute)
260     {
261         for (int index = 0; index < attributeVisitors.length; index++)
262         {
263             attributeVisitors[index].visitStackMapTableAttribute(clazz, method, codeAttribute, stackMapTableAttribute);
264         }
265     }
266 
267 
visitLineNumberTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberTableAttribute lineNumberTableAttribute)268     public void visitLineNumberTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberTableAttribute lineNumberTableAttribute)
269     {
270         for (int index = 0; index < attributeVisitors.length; index++)
271         {
272             attributeVisitors[index].visitLineNumberTableAttribute(clazz, method, codeAttribute, lineNumberTableAttribute);
273         }
274     }
275 
276 
visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute)277     public void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute)
278     {
279         for (int index = 0; index < attributeVisitors.length; index++)
280         {
281             attributeVisitors[index].visitLocalVariableTableAttribute(clazz, method, codeAttribute, localVariableTableAttribute);
282         }
283     }
284 
285 
visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute)286     public void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute)
287     {
288         for (int index = 0; index < attributeVisitors.length; index++)
289         {
290             attributeVisitors[index].visitLocalVariableTypeTableAttribute(clazz, method, codeAttribute, localVariableTypeTableAttribute);
291         }
292     }
293 
294 
visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)295     public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
296     {
297         for (int index = 0; index < attributeVisitors.length; index++)
298         {
299             attributeVisitors[index].visitRuntimeVisibleAnnotationsAttribute(clazz, runtimeVisibleAnnotationsAttribute);
300         }
301     }
302 
303 
visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)304     public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
305     {
306         for (int index = 0; index < attributeVisitors.length; index++)
307         {
308             attributeVisitors[index].visitRuntimeInvisibleAnnotationsAttribute(clazz, runtimeInvisibleAnnotationsAttribute);
309         }
310     }
311 
312 
visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)313     public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
314     {
315         for (int index = 0; index < attributeVisitors.length; index++)
316         {
317             attributeVisitors[index].visitRuntimeVisibleAnnotationsAttribute(clazz, field, runtimeVisibleAnnotationsAttribute);
318         }
319     }
320 
321 
visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)322     public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
323     {
324         for (int index = 0; index < attributeVisitors.length; index++)
325         {
326             attributeVisitors[index].visitRuntimeInvisibleAnnotationsAttribute(clazz, field, runtimeInvisibleAnnotationsAttribute);
327         }
328     }
329 
330 
visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)331     public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
332     {
333         for (int index = 0; index < attributeVisitors.length; index++)
334         {
335             attributeVisitors[index].visitRuntimeVisibleAnnotationsAttribute(clazz, method, runtimeVisibleAnnotationsAttribute);
336         }
337     }
338 
339 
visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)340     public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
341     {
342         for (int index = 0; index < attributeVisitors.length; index++)
343         {
344             attributeVisitors[index].visitRuntimeInvisibleAnnotationsAttribute(clazz, method, runtimeInvisibleAnnotationsAttribute);
345         }
346     }
347 
348 
visitRuntimeVisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleParameterAnnotationsAttribute runtimeVisibleParameterAnnotationsAttribute)349     public void visitRuntimeVisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleParameterAnnotationsAttribute runtimeVisibleParameterAnnotationsAttribute)
350     {
351         for (int index = 0; index < attributeVisitors.length; index++)
352         {
353             attributeVisitors[index].visitRuntimeVisibleParameterAnnotationsAttribute(clazz, method, runtimeVisibleParameterAnnotationsAttribute);
354         }
355     }
356 
357 
visitRuntimeInvisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleParameterAnnotationsAttribute runtimeInvisibleParameterAnnotationsAttribute)358     public void visitRuntimeInvisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleParameterAnnotationsAttribute runtimeInvisibleParameterAnnotationsAttribute)
359     {
360         for (int index = 0; index < attributeVisitors.length; index++)
361         {
362             attributeVisitors[index].visitRuntimeInvisibleParameterAnnotationsAttribute(clazz, method, runtimeInvisibleParameterAnnotationsAttribute);
363         }
364     }
365 
366 
visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)367     public void visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)
368     {
369         for (int index = 0; index < attributeVisitors.length; index++)
370         {
371             attributeVisitors[index].visitRuntimeVisibleTypeAnnotationsAttribute(clazz, runtimeVisibleTypeAnnotationsAttribute);
372         }
373     }
374 
375 
visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Field field, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)376     public void visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Field field, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)
377     {
378         for (int index = 0; index < attributeVisitors.length; index++)
379         {
380             attributeVisitors[index].visitRuntimeVisibleTypeAnnotationsAttribute(clazz, field, runtimeVisibleTypeAnnotationsAttribute);
381         }
382     }
383 
384 
visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)385     public void visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)
386     {
387         for (int index = 0; index < attributeVisitors.length; index++)
388         {
389             attributeVisitors[index].visitRuntimeVisibleTypeAnnotationsAttribute(clazz, method, runtimeVisibleTypeAnnotationsAttribute);
390         }
391     }
392 
393 
visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)394     public void visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)
395     {
396         for (int index = 0; index < attributeVisitors.length; index++)
397         {
398             attributeVisitors[index].visitRuntimeVisibleTypeAnnotationsAttribute(clazz, method, codeAttribute, runtimeVisibleTypeAnnotationsAttribute);
399         }
400     }
401 
402 
visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)403     public void visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)
404     {
405         for (int index = 0; index < attributeVisitors.length; index++)
406         {
407             attributeVisitors[index].visitRuntimeInvisibleTypeAnnotationsAttribute(clazz, runtimeInvisibleTypeAnnotationsAttribute);
408         }
409     }
410 
411 
visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Field field, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)412     public void visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Field field, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)
413     {
414         for (int index = 0; index < attributeVisitors.length; index++)
415         {
416             attributeVisitors[index].visitRuntimeInvisibleTypeAnnotationsAttribute(clazz, field, runtimeInvisibleTypeAnnotationsAttribute);
417         }
418     }
419 
420 
visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)421     public void visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)
422     {
423         for (int index = 0; index < attributeVisitors.length; index++)
424         {
425             attributeVisitors[index].visitRuntimeInvisibleTypeAnnotationsAttribute(clazz, method, runtimeInvisibleTypeAnnotationsAttribute);
426         }
427     }
428 
429 
visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)430     public void visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)
431     {
432         for (int index = 0; index < attributeVisitors.length; index++)
433         {
434             attributeVisitors[index].visitRuntimeInvisibleTypeAnnotationsAttribute(clazz, method, codeAttribute, runtimeInvisibleTypeAnnotationsAttribute);
435         }
436     }
437 
438 
visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute)439     public void visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute)
440     {
441         for (int index = 0; index < attributeVisitors.length; index++)
442         {
443             attributeVisitors[index].visitAnnotationDefaultAttribute(clazz, method, annotationDefaultAttribute);
444         }
445     }
446 }
447