Home | History | Annotate | Download | only in util
      1 /*
      2  * ProGuard -- shrinking, optimization, obfuscation, and preverification
      3  *             of Java bytecode.
      4  *
      5  * Copyright (c) 2002-2014 Eric Lafortune (eric (at) 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.util;
     22 
     23 import proguard.classfile.*;
     24 import proguard.classfile.attribute.*;
     25 import proguard.classfile.attribute.annotation.*;
     26 import proguard.classfile.attribute.annotation.target.*;
     27 import proguard.classfile.attribute.preverification.*;
     28 import proguard.classfile.constant.*;
     29 import 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  */
     39 public 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