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