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 */
21package proguard.classfile.util;
22
23import proguard.classfile.*;
24import proguard.classfile.attribute.*;
25import proguard.classfile.attribute.annotation.*;
26import proguard.classfile.attribute.annotation.target.*;
27import proguard.classfile.attribute.preverification.*;
28import proguard.classfile.constant.*;
29import proguard.classfile.instruction.*;
30
31/**
32 * This abstract utility class allows to implement various visitor interfaces
33 * with simplified methods. The provided methods delegate to other versions
34 * with fewer arguments or more general arguments.
35 *
36 * @author Eric Lafortune
37 * @noinspection AbstractClassWithoutAbstractMethods
38 */
39public abstract class SimplifiedVisitor
40{
41    // Simplifications for ClassVisitor.
42
43    /**
44     * Visits any type of class member of the given class.
45     */
46    public void visitAnyClass(Clazz clazz)
47    {
48        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
49    }
50
51
52    public void visitProgramClass(ProgramClass programClass)
53    {
54        visitAnyClass(programClass);
55    }
56
57
58    public void visitLibraryClass(LibraryClass libraryClass)
59    {
60        visitAnyClass(libraryClass);
61    }
62
63
64    // Simplifications for MemberVisitor.
65
66    /**
67     * Visits any type of class member of the given class.
68     */
69    public void visitAnyMember(Clazz clazz, Member member)
70    {
71        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
72    }
73
74
75    /**
76     * Visits any type of class member of the given program class.
77     */
78    public void visitProgramMember(ProgramClass programClass, ProgramMember programMember)
79    {
80        visitAnyMember(programClass, programMember);
81    }
82
83
84    public void visitProgramField(ProgramClass programClass, ProgramField programField)
85    {
86        visitProgramMember(programClass, programField);
87    }
88
89
90    public void visitProgramMethod(ProgramClass programClass, ProgramMethod programMethod)
91    {
92        visitProgramMember(programClass, programMethod);
93    }
94
95
96    /**
97     * Visits any type of class member of the given library class.
98     */
99    public void visitLibraryMember(LibraryClass libraryClass, LibraryMember libraryMember)
100    {
101        visitAnyMember(libraryClass, libraryMember);
102    }
103
104
105    public void visitLibraryField(LibraryClass libraryClass, LibraryField libraryField)
106    {
107        visitLibraryMember(libraryClass, libraryField);
108    }
109
110
111    public void visitLibraryMethod(LibraryClass libraryClass, LibraryMethod libraryMethod)
112    {
113        visitLibraryMember(libraryClass, libraryMethod);
114    }
115
116
117    // Simplifications for ConstantVisitor.
118
119    public void visitAnyConstant(Clazz clazz, Constant constant)
120    {
121        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
122    }
123
124
125    public void visitIntegerConstant(Clazz clazz, IntegerConstant integerConstant)
126    {
127        visitAnyConstant(clazz, integerConstant);
128    }
129
130
131    public void visitLongConstant(Clazz clazz, LongConstant longConstant)
132    {
133        visitAnyConstant(clazz, longConstant);
134    }
135
136
137    public void visitFloatConstant(Clazz clazz, FloatConstant floatConstant)
138    {
139        visitAnyConstant(clazz, floatConstant);
140    }
141
142
143    public void visitDoubleConstant(Clazz clazz, DoubleConstant doubleConstant)
144    {
145        visitAnyConstant(clazz, doubleConstant);
146    }
147
148
149    public void visitStringConstant(Clazz clazz, StringConstant stringConstant)
150    {
151        visitAnyConstant(clazz, stringConstant);
152    }
153
154
155    public void visitUtf8Constant(Clazz clazz, Utf8Constant utf8Constant)
156    {
157        visitAnyConstant(clazz, utf8Constant);
158    }
159
160
161    public void visitInvokeDynamicConstant(Clazz clazz, InvokeDynamicConstant invokeDynamicConstant)
162    {
163        visitAnyConstant(clazz, invokeDynamicConstant);
164    }
165
166
167    public void visitMethodHandleConstant(Clazz clazz, MethodHandleConstant methodHandleConstant)
168    {
169        visitAnyConstant(clazz, methodHandleConstant);
170    }
171
172
173    /**
174     * Visits any type of RefConstant of the given class.
175     */
176    public void visitAnyRefConstant(Clazz clazz, RefConstant refConstant)
177    {
178        visitAnyConstant(clazz, refConstant);
179    }
180
181
182    public void visitFieldrefConstant(Clazz clazz, FieldrefConstant fieldrefConstant)
183    {
184        visitAnyRefConstant(clazz, fieldrefConstant);
185    }
186
187
188    /**
189     * Visits any type of method RefConstant of the given class.
190     */
191    public void visitAnyMethodrefConstant(Clazz clazz, RefConstant refConstant)
192    {
193        visitAnyRefConstant(clazz, refConstant);
194    }
195
196
197    public void visitInterfaceMethodrefConstant(Clazz clazz, InterfaceMethodrefConstant interfaceMethodrefConstant)
198    {
199        visitAnyMethodrefConstant(clazz, interfaceMethodrefConstant);
200    }
201
202
203    public void visitMethodrefConstant(Clazz clazz, MethodrefConstant methodrefConstant)
204    {
205        visitAnyMethodrefConstant(clazz, methodrefConstant);
206    }
207
208
209    public void visitClassConstant(Clazz clazz, ClassConstant classConstant)
210    {
211        visitAnyConstant(clazz, classConstant);
212    }
213
214
215    public void visitMethodTypeConstant(Clazz clazz, MethodTypeConstant methodTypeConstant)
216    {
217        visitAnyConstant(clazz, methodTypeConstant);
218    }
219
220
221    public void visitNameAndTypeConstant(Clazz clazz, NameAndTypeConstant nameAndTypeConstant)
222    {
223        visitAnyConstant(clazz, nameAndTypeConstant);
224    }
225
226
227    // Simplifications for AttributeVisitor.
228
229    /**
230     * Visit any type of attribute.
231     */
232    public void visitAnyAttribute(Clazz clazz, Attribute attribute)
233    {
234        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
235    }
236
237
238    public void visitUnknownAttribute(Clazz clazz, UnknownAttribute unknownAttribute)
239    {
240        visitAnyAttribute(clazz, unknownAttribute);
241    }
242
243
244    public void visitBootstrapMethodsAttribute(Clazz clazz, BootstrapMethodsAttribute bootstrapMethodsAttribute)
245    {
246        visitAnyAttribute(clazz, bootstrapMethodsAttribute);
247    }
248
249
250    public void visitSourceFileAttribute(Clazz clazz, SourceFileAttribute sourceFileAttribute)
251    {
252        visitAnyAttribute(clazz, sourceFileAttribute);
253    }
254
255
256    public void visitSourceDirAttribute(Clazz clazz, SourceDirAttribute sourceDirAttribute)
257    {
258        visitAnyAttribute(clazz, sourceDirAttribute);
259    }
260
261
262    public void visitInnerClassesAttribute(Clazz clazz, InnerClassesAttribute innerClassesAttribute)
263    {
264        visitAnyAttribute(clazz, innerClassesAttribute);
265    }
266
267
268    public void visitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute)
269    {
270        visitAnyAttribute(clazz, enclosingMethodAttribute);
271    }
272
273
274    public void visitDeprecatedAttribute(Clazz clazz, DeprecatedAttribute deprecatedAttribute)
275    {
276        visitAnyAttribute(clazz, deprecatedAttribute);
277    }
278
279
280    /**
281     * Visits the given DeprecatedAttribute of any type of class member.
282     */
283    public void visitDeprecatedAttribute(Clazz clazz, Member member, DeprecatedAttribute deprecatedAttribute)
284    {
285        visitDeprecatedAttribute(clazz, deprecatedAttribute);
286    }
287
288
289    public void visitDeprecatedAttribute(Clazz clazz, Field field, DeprecatedAttribute deprecatedAttribute)
290    {
291        visitDeprecatedAttribute(clazz, (Member)field, deprecatedAttribute);
292    }
293
294
295    public void visitDeprecatedAttribute(Clazz clazz, Method method, DeprecatedAttribute deprecatedAttribute)
296    {
297        visitDeprecatedAttribute(clazz, (Member)method, deprecatedAttribute);
298    }
299
300
301    public void visitSyntheticAttribute(Clazz clazz, SyntheticAttribute syntheticAttribute)
302    {
303        visitAnyAttribute(clazz, syntheticAttribute);
304    }
305
306
307    /**
308     * Visits the given SyntheticAttribute of any type of class member.
309     */
310    public void visitSyntheticAttribute(Clazz clazz, Member member, SyntheticAttribute syntheticAttribute)
311    {
312        visitSyntheticAttribute(clazz, syntheticAttribute);
313    }
314
315
316    public void visitSyntheticAttribute(Clazz clazz, Field field, SyntheticAttribute syntheticAttribute)
317    {
318        visitSyntheticAttribute(clazz, (Member)field, syntheticAttribute);
319    }
320
321
322    public void visitSyntheticAttribute(Clazz clazz, Method method, SyntheticAttribute syntheticAttribute)
323    {
324        visitSyntheticAttribute(clazz, (Member)method, syntheticAttribute);
325    }
326
327
328    public void visitSignatureAttribute(Clazz clazz, SignatureAttribute signatureAttribute)
329    {
330        visitAnyAttribute(clazz, signatureAttribute);
331    }
332
333
334    /**
335     * Visits the given SignatureAttribute of any type of class member.
336     */
337    public void visitSignatureAttribute(Clazz clazz, Member member, SignatureAttribute signatureAttribute)
338    {
339        visitSignatureAttribute(clazz, signatureAttribute);
340    }
341
342
343    public void visitSignatureAttribute(Clazz clazz, Field field, SignatureAttribute signatureAttribute)
344    {
345        visitSignatureAttribute(clazz, (Member)field, signatureAttribute);
346    }
347
348
349    public void visitSignatureAttribute(Clazz clazz, Method method, SignatureAttribute signatureAttribute)
350    {
351        visitSignatureAttribute(clazz, (Member)method, signatureAttribute);
352    }
353
354
355    public void visitConstantValueAttribute(Clazz clazz, Field field, ConstantValueAttribute constantValueAttribute)
356    {
357        visitAnyAttribute(clazz, constantValueAttribute);
358    }
359
360
361    public void visitMethodParametersAttribute(Clazz clazz, Method method, MethodParametersAttribute methodParametersAttribute)
362    {
363        visitAnyAttribute(clazz, methodParametersAttribute);
364    }
365
366
367    public void visitExceptionsAttribute(Clazz clazz, Method method, ExceptionsAttribute exceptionsAttribute)
368    {
369        visitAnyAttribute(clazz, exceptionsAttribute);
370    }
371
372
373    public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute)
374    {
375        visitAnyAttribute(clazz, codeAttribute);
376    }
377
378
379    public void visitStackMapAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapAttribute stackMapAttribute)
380    {
381        visitAnyAttribute(clazz, stackMapAttribute);
382    }
383
384
385    public void visitStackMapTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapTableAttribute stackMapTableAttribute)
386    {
387        visitAnyAttribute(clazz, stackMapTableAttribute);
388    }
389
390
391    public void visitLineNumberTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberTableAttribute lineNumberTableAttribute)
392    {
393        visitAnyAttribute(clazz, lineNumberTableAttribute);
394    }
395
396
397    public void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute)
398    {
399        visitAnyAttribute(clazz, localVariableTableAttribute);
400    }
401
402
403    public void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute)
404    {
405        visitAnyAttribute(clazz, localVariableTypeTableAttribute);
406    }
407
408
409    /**
410     * Visits any type of AnnotationsAttribute of a class.
411     */
412    public void visitAnyAnnotationsAttribute(Clazz clazz, AnnotationsAttribute annotationsAttribute)
413    {
414        visitAnyAttribute(clazz, annotationsAttribute);
415    }
416
417
418    public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
419    {
420        visitAnyAnnotationsAttribute(clazz, runtimeVisibleAnnotationsAttribute);
421    }
422
423
424    /**
425     * Visits the given RuntimeVisibleAnnotationsAttribute of any type of class member.
426     */
427    public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Member member, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
428    {
429        visitRuntimeVisibleAnnotationsAttribute(clazz, runtimeVisibleAnnotationsAttribute);
430    }
431
432
433    public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
434    {
435        visitRuntimeVisibleAnnotationsAttribute(clazz, (Member)field, runtimeVisibleAnnotationsAttribute);
436    }
437
438
439    public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute)
440    {
441        visitRuntimeVisibleAnnotationsAttribute(clazz, (Member)method, runtimeVisibleAnnotationsAttribute);
442    }
443
444
445    public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
446    {
447        visitAnyAnnotationsAttribute(clazz, runtimeInvisibleAnnotationsAttribute);
448    }
449
450
451    /**
452     * Visits the given RuntimeInvisibleAnnotationsAttribute of any type of class member.
453     */
454    public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Member member, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
455    {
456        visitRuntimeInvisibleAnnotationsAttribute(clazz, runtimeInvisibleAnnotationsAttribute);
457    }
458
459
460    public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
461    {
462        visitRuntimeInvisibleAnnotationsAttribute(clazz, (Member)field, runtimeInvisibleAnnotationsAttribute);
463    }
464
465
466    public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute)
467    {
468        visitRuntimeInvisibleAnnotationsAttribute(clazz, (Member)method, runtimeInvisibleAnnotationsAttribute);
469    }
470
471
472    /**
473     * Visits any type of ParameterAnnotationsAttribute.
474     */
475    public void visitAnyParameterAnnotationsAttribute(Clazz clazz, Method method, ParameterAnnotationsAttribute parameterAnnotationsAttribute)
476    {
477        visitAnyAttribute(clazz, parameterAnnotationsAttribute);
478    }
479
480
481    public void visitRuntimeVisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleParameterAnnotationsAttribute runtimeVisibleParameterAnnotationsAttribute)
482    {
483        visitAnyParameterAnnotationsAttribute(clazz, method, runtimeVisibleParameterAnnotationsAttribute);
484    }
485
486
487    public void visitRuntimeInvisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleParameterAnnotationsAttribute runtimeInvisibleParameterAnnotationsAttribute)
488    {
489        visitAnyParameterAnnotationsAttribute(clazz, method, runtimeInvisibleParameterAnnotationsAttribute);
490    }
491
492
493    /**
494     * Visits any type of TypeAnnotationsAttribute of a class.
495     */
496    public void visitAnyTypeAnnotationsAttribute(Clazz clazz, TypeAnnotationsAttribute typeAnnotationsAttribute)
497    {
498        visitAnyAnnotationsAttribute(clazz, typeAnnotationsAttribute);
499    }
500
501
502    public void visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)
503    {
504        visitAnyTypeAnnotationsAttribute(clazz, runtimeVisibleTypeAnnotationsAttribute);
505    }
506
507
508    /**
509     * Visits the given RuntimeVisibleTypeAnnotationsAttribute of any type of class member.
510     */
511    public void visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Member member, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)
512    {
513        visitRuntimeVisibleTypeAnnotationsAttribute(clazz, runtimeVisibleTypeAnnotationsAttribute);
514    }
515
516
517    public void visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Field field, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)
518    {
519        visitRuntimeVisibleTypeAnnotationsAttribute(clazz, (Member)field, runtimeVisibleTypeAnnotationsAttribute);
520    }
521
522
523    public void visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)
524    {
525        visitRuntimeVisibleTypeAnnotationsAttribute(clazz, (Member)method, runtimeVisibleTypeAnnotationsAttribute);
526    }
527
528
529    public void visitRuntimeVisibleTypeAnnotationsAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, RuntimeVisibleTypeAnnotationsAttribute runtimeVisibleTypeAnnotationsAttribute)
530    {
531        visitRuntimeVisibleTypeAnnotationsAttribute(clazz, method, runtimeVisibleTypeAnnotationsAttribute);
532    }
533
534
535    public void visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)
536    {
537        visitAnyTypeAnnotationsAttribute(clazz, runtimeInvisibleTypeAnnotationsAttribute);
538    }
539
540
541    /**
542     * Visits the given RuntimeInvisibleTypeAnnotationsAttribute of any type of class member.
543     */
544    public void visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Member member, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)
545    {
546        visitRuntimeInvisibleTypeAnnotationsAttribute(clazz, runtimeInvisibleTypeAnnotationsAttribute);
547    }
548
549
550    public void visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Field field, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)
551    {
552        visitRuntimeInvisibleTypeAnnotationsAttribute(clazz, (Member)field, runtimeInvisibleTypeAnnotationsAttribute);
553    }
554
555
556    public void visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)
557    {
558        visitRuntimeInvisibleTypeAnnotationsAttribute(clazz, (Member)method, runtimeInvisibleTypeAnnotationsAttribute);
559    }
560
561
562    public void visitRuntimeInvisibleTypeAnnotationsAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, RuntimeInvisibleTypeAnnotationsAttribute runtimeInvisibleTypeAnnotationsAttribute)
563    {
564        visitRuntimeInvisibleTypeAnnotationsAttribute(clazz, method, runtimeInvisibleTypeAnnotationsAttribute);
565    }
566
567
568    public void visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute)
569    {
570        visitAnyAttribute(clazz, annotationDefaultAttribute);
571    }
572
573
574    // Simplifications for InstructionVisitor.
575
576    /**
577     * Visits any type of Instruction.
578     */
579    public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction)
580    {
581        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
582    }
583
584
585    public void visitSimpleInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SimpleInstruction simpleInstruction)
586    {
587        visitAnyInstruction(clazz, method, codeAttribute, offset, simpleInstruction);
588    }
589
590
591    public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
592    {
593        visitAnyInstruction(clazz, method, codeAttribute, offset, variableInstruction);
594    }
595
596
597    public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction)
598    {
599        visitAnyInstruction(clazz, method, codeAttribute, offset, constantInstruction);
600    }
601
602
603    public void visitBranchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, BranchInstruction branchInstruction)
604    {
605        visitAnyInstruction(clazz, method, codeAttribute, offset, branchInstruction);
606    }
607
608
609    /**
610     * Visits either type of SwitchInstruction.
611     */
612    public void visitAnySwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SwitchInstruction switchInstruction)
613    {
614        visitAnyInstruction(clazz, method, codeAttribute, offset, switchInstruction);
615    }
616
617
618    public void visitTableSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, TableSwitchInstruction tableSwitchInstruction)
619    {
620        visitAnySwitchInstruction(clazz, method, codeAttribute, offset, tableSwitchInstruction);
621    }
622
623
624    public void visitLookUpSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, LookUpSwitchInstruction lookUpSwitchInstruction)
625    {
626        visitAnySwitchInstruction(clazz, method, codeAttribute, offset, lookUpSwitchInstruction);
627    }
628
629
630    // Simplifications for StackMapFrameVisitor.
631
632    /**
633     * Visits any type of VerificationType.
634     */
635    public void visitAnyStackMapFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, StackMapFrame stackMapFrame)
636    {
637        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
638    }
639
640
641    public void visitSameZeroFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SameZeroFrame sameZeroFrame)
642    {
643        visitAnyStackMapFrame(clazz, method, codeAttribute, offset, sameZeroFrame);
644    }
645
646
647    public void visitSameOneFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, SameOneFrame sameOneFrame)
648    {
649        visitAnyStackMapFrame(clazz, method, codeAttribute, offset, sameOneFrame);
650    }
651
652
653    public void visitLessZeroFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, LessZeroFrame lessZeroFrame)
654    {
655        visitAnyStackMapFrame(clazz, method, codeAttribute, offset, lessZeroFrame);
656    }
657
658
659    public void visitMoreZeroFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, MoreZeroFrame moreZeroFrame)
660    {
661        visitAnyStackMapFrame(clazz, method, codeAttribute, offset, moreZeroFrame);
662    }
663
664
665    public void visitFullFrame(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, FullFrame fullFrame)
666    {
667        visitAnyStackMapFrame(clazz, method, codeAttribute, offset, fullFrame);
668    }
669
670
671    // Simplifications for VerificationTypeVisitor.
672
673    /**
674     * Visits any type of VerificationType.
675     */
676    public void visitAnyVerificationType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VerificationType verificationType)
677    {
678        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
679    }
680
681
682    public void visitIntegerType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, IntegerType integerType)
683    {
684        visitAnyVerificationType(clazz, method, codeAttribute, offset, integerType);
685    }
686
687
688    public void visitFloatType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, FloatType floatType)
689    {
690        visitAnyVerificationType(clazz, method, codeAttribute, offset, floatType);
691    }
692
693
694    public void visitLongType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, LongType longType)
695    {
696        visitAnyVerificationType(clazz, method, codeAttribute, offset, longType);
697    }
698
699
700    public void visitDoubleType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, DoubleType doubleType)
701    {
702        visitAnyVerificationType(clazz, method, codeAttribute, offset, doubleType);
703    }
704
705
706    public void visitTopType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, TopType topType)
707    {
708        visitAnyVerificationType(clazz, method, codeAttribute, offset, topType);
709    }
710
711
712    public void visitObjectType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ObjectType objectType)
713    {
714        visitAnyVerificationType(clazz, method, codeAttribute, offset, objectType);
715    }
716
717
718    public void visitNullType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, NullType nullType)
719    {
720        visitAnyVerificationType(clazz, method, codeAttribute, offset, nullType);
721    }
722
723
724    public void visitUninitializedType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, UninitializedType uninitializedType)
725    {
726        visitAnyVerificationType(clazz, method, codeAttribute, offset, uninitializedType);
727    }
728
729
730    public void visitUninitializedThisType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, UninitializedThisType uninitializedThisType)
731    {
732        visitAnyVerificationType(clazz, method, codeAttribute, offset, uninitializedThisType);
733    }
734
735
736    public void visitStackIntegerType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, IntegerType integerType)
737    {
738        visitIntegerType(clazz, method, codeAttribute, offset, integerType);
739    }
740
741
742    public void visitStackFloatType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, FloatType floatType)
743    {
744        visitFloatType(clazz, method, codeAttribute, offset, floatType);
745    }
746
747
748    public void visitStackLongType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, LongType longType)
749    {
750        visitLongType(clazz, method, codeAttribute, offset, longType);
751    }
752
753
754    public void visitStackDoubleType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, DoubleType doubleType)
755    {
756        visitDoubleType(clazz, method, codeAttribute, offset, doubleType);
757    }
758
759
760    public void visitStackTopType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, TopType topType)
761    {
762        visitTopType(clazz, method, codeAttribute, offset, topType);
763    }
764
765
766    public void visitStackObjectType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, ObjectType objectType)
767    {
768        visitObjectType(clazz, method, codeAttribute, offset, objectType);
769    }
770
771
772    public void visitStackNullType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, NullType nullType)
773    {
774        visitNullType(clazz, method, codeAttribute, offset, nullType);
775    }
776
777
778    public void visitStackUninitializedType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, UninitializedType uninitializedType)
779    {
780        visitUninitializedType(clazz, method, codeAttribute, offset, uninitializedType);
781    }
782
783
784    public void visitStackUninitializedThisType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, UninitializedThisType uninitializedThisType)
785    {
786        visitUninitializedThisType(clazz, method, codeAttribute, offset, uninitializedThisType);
787    }
788
789
790
791    public void visitVariablesIntegerType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, IntegerType integerType)
792    {
793        visitIntegerType(clazz, method, codeAttribute, offset, integerType);
794    }
795
796
797    public void visitVariablesFloatType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, FloatType floatType)
798    {
799        visitFloatType(clazz, method, codeAttribute, offset, floatType);
800    }
801
802
803    public void visitVariablesLongType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, LongType longType)
804    {
805        visitLongType(clazz, method, codeAttribute, offset, longType);
806    }
807
808
809    public void visitVariablesDoubleType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, DoubleType doubleType)
810    {
811        visitDoubleType(clazz, method, codeAttribute, offset, doubleType);
812    }
813
814
815    public void visitVariablesTopType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, TopType topType)
816    {
817        visitTopType(clazz, method, codeAttribute, offset, topType);
818    }
819
820
821    public void visitVariablesObjectType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, ObjectType objectType)
822    {
823        visitObjectType(clazz, method, codeAttribute, offset, objectType);
824    }
825
826
827    public void visitVariablesNullType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, NullType nullType)
828    {
829        visitNullType(clazz, method, codeAttribute, offset, nullType);
830    }
831
832
833    public void visitVariablesUninitializedType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, UninitializedType uninitializedType)
834    {
835        visitUninitializedType(clazz, method, codeAttribute, offset, uninitializedType);
836    }
837
838
839    public void visitVariablesUninitializedThisType(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, int index, UninitializedThisType uninitializedThisType)
840    {
841        visitUninitializedThisType(clazz, method, codeAttribute, offset, uninitializedThisType);
842    }
843
844
845    // Simplifications for AnnotationVisitor.
846
847    public void visitAnnotation(Clazz clazz, Annotation annotation)
848    {
849        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
850    }
851
852
853    /**
854     * Visits the given Annotation of any type of class member.
855     */
856    public void visitAnnotation(Clazz clazz, Member member, Annotation annotation)
857    {
858        visitAnnotation(clazz, annotation);
859    }
860
861
862    public void visitAnnotation(Clazz clazz, Field field, Annotation annotation)
863    {
864        visitAnnotation(clazz, (Member)field, annotation);
865    }
866
867
868    public void visitAnnotation(Clazz clazz, Method method, Annotation annotation)
869    {
870        visitAnnotation(clazz, (Member)method, annotation);
871    }
872
873
874    public void visitAnnotation(Clazz clazz, Method method, int parameterIndex, Annotation annotation)
875    {
876        visitAnnotation(clazz, method, annotation);
877    }
878
879
880    public void visitAnnotation(Clazz clazz, Method method, CodeAttribute codeAttribute, Annotation annotation)
881    {
882        visitAnnotation(clazz, method, annotation);
883    }
884
885
886    // Simplifications for TypeAnnotationVisitor.
887
888    public void visitTypeAnnotation(Clazz clazz, TypeAnnotation typeAnnotation)
889    {
890        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
891    }
892
893
894    /**
895     * Visits the given TypeAnnotation of any type of class member.
896     */
897    public void visitTypeAnnotation(Clazz clazz, Member member, TypeAnnotation typeAnnotation)
898    {
899        visitTypeAnnotation(clazz, typeAnnotation);
900    }
901
902
903    public void visitTypeAnnotation(Clazz clazz, Field field, TypeAnnotation typeAnnotation)
904    {
905        visitTypeAnnotation(clazz, (Member)field, typeAnnotation);
906    }
907
908
909    public void visitTypeAnnotation(Clazz clazz, Method method, TypeAnnotation typeAnnotation)
910    {
911        visitTypeAnnotation(clazz, (Member)method, typeAnnotation);
912    }
913
914
915    public void visitTypeAnnotation(Clazz clazz, Method method, int parameterIndex, TypeAnnotation typeAnnotation)
916    {
917        visitTypeAnnotation(clazz, method, typeAnnotation);
918    }
919
920
921    public void visitTypeAnnotation(Clazz clazz, Method method, CodeAttribute codeAttribute, TypeAnnotation typeAnnotation)
922    {
923        visitTypeAnnotation(clazz, method, typeAnnotation);
924    }
925
926
927    // Simplifications for TargetInfoVisitor.
928
929    /**
930     * Visits any type of TargetInfo.
931     */
932    public void visitAnyTargetInfo(Clazz clazz, TypeAnnotation typeAnnotation, TargetInfo targetInfo)
933    {
934        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
935    }
936
937
938    public void visitTypeParameterTargetInfo(Clazz clazz, TypeAnnotation typeAnnotation, TypeParameterTargetInfo typeParameterTargetInfo)
939    {
940        visitAnyTargetInfo(clazz, typeAnnotation, typeParameterTargetInfo);
941    }
942
943
944    public void visitTypeParameterTargetInfo(Clazz clazz, Method method, TypeAnnotation typeAnnotation, TypeParameterTargetInfo typeParameterTargetInfo)
945    {
946        visitTypeParameterTargetInfo(clazz, typeAnnotation, typeParameterTargetInfo);
947    }
948
949
950    public void visitSuperTypeTargetInfo(Clazz clazz, TypeAnnotation typeAnnotation, SuperTypeTargetInfo superTypeTargetInfo)
951    {
952        visitAnyTargetInfo(clazz, typeAnnotation, superTypeTargetInfo);
953    }
954
955
956    public void visitTypeParameterBoundTargetInfo(Clazz clazz, TypeAnnotation typeAnnotation, TypeParameterBoundTargetInfo typeParameterBoundTargetInfo)
957    {
958        visitAnyTargetInfo(clazz, typeAnnotation, typeParameterBoundTargetInfo);
959    }
960
961
962    /**
963     * Visits the given TypeParameterBoundTargetInfo of any type of class member.
964     */
965    public void visitTypeParameterBoundTargetInfo(Clazz clazz, Member member, TypeAnnotation typeAnnotation, TypeParameterBoundTargetInfo typeParameterBoundTargetInfo)
966    {
967        visitTypeParameterBoundTargetInfo(clazz, typeAnnotation, typeParameterBoundTargetInfo);
968    }
969
970
971    public void visitTypeParameterBoundTargetInfo(Clazz clazz, Field field, TypeAnnotation typeAnnotation, TypeParameterBoundTargetInfo typeParameterBoundTargetInfo)
972    {
973        visitTypeParameterBoundTargetInfo(clazz, (Member)field, typeAnnotation, typeParameterBoundTargetInfo);
974    }
975
976
977    public void visitTypeParameterBoundTargetInfo(Clazz clazz, Method method, TypeAnnotation typeAnnotation, TypeParameterBoundTargetInfo typeParameterBoundTargetInfo)
978    {
979        visitTypeParameterBoundTargetInfo(clazz, (Member)method, typeAnnotation, typeParameterBoundTargetInfo);
980    }
981
982
983    /**
984     * Visits the given EmptyTargetInfo of any type of class member.
985     */
986    public void visitEmptyTargetInfo(Clazz clazz, Member member, TypeAnnotation typeAnnotation, EmptyTargetInfo emptyTargetInfo)
987    {
988        visitAnyTargetInfo(clazz, typeAnnotation, emptyTargetInfo);
989    }
990
991
992    public void visitEmptyTargetInfo(Clazz clazz, Field field, TypeAnnotation typeAnnotation, EmptyTargetInfo emptyTargetInfo)
993    {
994        visitEmptyTargetInfo(clazz, (Member)field, typeAnnotation, emptyTargetInfo);
995    }
996
997
998    public void visitEmptyTargetInfo(Clazz clazz, Method method, TypeAnnotation typeAnnotation, EmptyTargetInfo emptyTargetInfo)
999    {
1000        visitEmptyTargetInfo(clazz, (Member)method, typeAnnotation, emptyTargetInfo);
1001    }
1002
1003
1004    public void visitFormalParameterTargetInfo(Clazz clazz, Method method, TypeAnnotation typeAnnotation, FormalParameterTargetInfo formalParameterTargetInfo)
1005    {
1006        visitAnyTargetInfo(clazz, typeAnnotation, formalParameterTargetInfo);
1007    }
1008
1009
1010    public void visitThrowsTargetInfo(Clazz clazz, Method method, TypeAnnotation typeAnnotation, ThrowsTargetInfo throwsTargetInfo)
1011    {
1012        visitAnyTargetInfo(clazz, typeAnnotation, throwsTargetInfo);
1013    }
1014
1015
1016    public void visitLocalVariableTargetInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, TypeAnnotation typeAnnotation, LocalVariableTargetInfo localVariableTargetInfo)
1017    {
1018        visitAnyTargetInfo(clazz, typeAnnotation, localVariableTargetInfo);
1019    }
1020
1021
1022    public void visitCatchTargetInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, TypeAnnotation typeAnnotation, CatchTargetInfo catchTargetInfo)
1023    {
1024        visitAnyTargetInfo(clazz, typeAnnotation, catchTargetInfo);
1025    }
1026
1027
1028    public void visitOffsetTargetInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, TypeAnnotation typeAnnotation, OffsetTargetInfo offsetTargetInfo)
1029    {
1030        visitAnyTargetInfo(clazz, typeAnnotation, offsetTargetInfo);
1031    }
1032
1033
1034    public void visitTypeArgumentTargetInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, TypeAnnotation typeAnnotation, TypeArgumentTargetInfo typeArgumentTargetInfo)
1035    {
1036        visitAnyTargetInfo(clazz, typeAnnotation, typeArgumentTargetInfo);
1037    }
1038
1039
1040    // Simplifications for TypePathInfoVisitor.
1041
1042    public void visitTypePathInfo(Clazz clazz, TypeAnnotation typeAnnotation, TypePathInfo typePathInfo)
1043    {
1044        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
1045    }
1046
1047
1048    /**
1049     * Visits the given TypePathInfo of any type of class member.
1050     */
1051    public void visitTypePathInfo(Clazz clazz, Member member, TypeAnnotation typeAnnotation, TypePathInfo typePathInfo)
1052    {
1053        visitTypePathInfo(clazz, typeAnnotation, typePathInfo);
1054    }
1055
1056
1057    public void visitTypePathInfo(Clazz clazz, Field field, TypeAnnotation typeAnnotation, TypePathInfo typePathInfo)
1058    {
1059        visitTypePathInfo(clazz, (Member)field, typeAnnotation, typePathInfo);
1060    }
1061
1062
1063    public void visitTypePathInfo(Clazz clazz, Method method, TypeAnnotation typeAnnotation, TypePathInfo typePathInfo)
1064    {
1065        visitTypePathInfo(clazz, (Member)method, typeAnnotation, typePathInfo);
1066    }
1067
1068
1069    public void visitTypePathInfo(Clazz clazz, Method method, CodeAttribute codeAttribute, TypeAnnotation typeAnnotation, TypePathInfo typePathInfo)
1070    {
1071        visitTypePathInfo(clazz, method, typeAnnotation, typePathInfo);
1072    }
1073
1074
1075    // Simplifications for ElementValueVisitor.
1076
1077    /**
1078     * Visits any type of ElementValue.
1079     */
1080    public void visitAnyElementValue(Clazz clazz, Annotation annotation, ElementValue elementValue)
1081    {
1082        throw new UnsupportedOperationException("Method must be overridden in ["+this.getClass().getName()+"] if ever called");
1083    }
1084
1085
1086    public void visitConstantElementValue(Clazz clazz, Annotation annotation, ConstantElementValue constantElementValue)
1087    {
1088        visitAnyElementValue(clazz, annotation, constantElementValue);
1089    }
1090
1091
1092    public void visitEnumConstantElementValue(Clazz clazz, Annotation annotation, EnumConstantElementValue enumConstantElementValue)
1093    {
1094        visitAnyElementValue(clazz, annotation, enumConstantElementValue);
1095    }
1096
1097
1098    public void visitClassElementValue(Clazz clazz, Annotation annotation, ClassElementValue classElementValue)
1099    {
1100        visitAnyElementValue(clazz, annotation, classElementValue);
1101    }
1102
1103
1104    public void visitAnnotationElementValue(Clazz clazz, Annotation annotation, AnnotationElementValue annotationElementValue)
1105    {
1106        visitAnyElementValue(clazz, annotation, annotationElementValue);
1107    }
1108
1109
1110    public void visitArrayElementValue(Clazz clazz, Annotation annotation, ArrayElementValue arrayElementValue)
1111    {
1112        visitAnyElementValue(clazz, annotation, arrayElementValue);
1113    }
1114}
1115