1b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang/* 2b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * ProGuard -- shrinking, optimization, obfuscation, and preverification 3b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * of Java bytecode. 4b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * 5b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * Copyright (c) 2002-2013 Eric Lafortune (eric@graphics.cornell.edu) 6b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * 7b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * This program is free software; you can redistribute it and/or modify it 8b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * under the terms of the GNU General Public License as published by the Free 9b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * Software Foundation; either version 2 of the License, or (at your option) 10b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * any later version. 11b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * 12b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * This program is distributed in the hope that it will be useful, but WITHOUT 13b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * more details. 16b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * 17b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * You should have received a copy of the GNU General Public License along 18b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * with this program; if not, write to the Free Software Foundation, Inc., 19b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang */ 21b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangpackage proguard.classfile.attribute.visitor; 22b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 23b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangimport proguard.classfile.*; 24b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangimport proguard.classfile.attribute.*; 25b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangimport proguard.classfile.attribute.annotation.*; 26b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangimport proguard.classfile.attribute.preverification.*; 27b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangimport proguard.util.StringMatcher; 28b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 29b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang/** 30b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * This AttributeVisitor delegates its visits another AttributeVisitor, but 31b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * only when the visited attribute is not empty. For instance, a local variable 32b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * table without variables is empty. 33b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * 34b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * @author Eric Lafortune 35b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang */ 36b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangpublic class NonEmptyAttributeFilter 37b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wangimplements AttributeVisitor 38b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang{ 39b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang private final AttributeVisitor attributeVisitor; 40b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 41b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 42b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang /** 43b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * Creates a new NonEmptyAttributeFilter. 44b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * @param attributeVisitor the <code>AttributeVisitor</code> to which 45b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang * visits will be delegated. 46b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang */ 47b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public NonEmptyAttributeFilter(AttributeVisitor attributeVisitor) 48b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 49b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang this.attributeVisitor = attributeVisitor; 50b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 51b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 52b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 53b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang // Implementations for AttributeVisitor. 54b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 55b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitUnknownAttribute(Clazz clazz, UnknownAttribute unknownAttribute) 56b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 57b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang unknownAttribute.accept(clazz, attributeVisitor); 58b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 59b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 60b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 61b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitBootstrapMethodsAttribute(Clazz clazz, BootstrapMethodsAttribute bootstrapMethodsAttribute) 62b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 63b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (bootstrapMethodsAttribute.u2bootstrapMethodsCount > 0) 64b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 65b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang bootstrapMethodsAttribute.accept(clazz, attributeVisitor); 66b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 67b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 68b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 69b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 70b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitSourceFileAttribute(Clazz clazz, SourceFileAttribute sourceFileAttribute) 71b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 72b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang sourceFileAttribute.accept(clazz, attributeVisitor); 73b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 74b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 75b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 76b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitSourceDirAttribute(Clazz clazz, SourceDirAttribute sourceDirAttribute) 77b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 78b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang sourceDirAttribute.accept(clazz, attributeVisitor); 79b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 80b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 81b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 82b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitInnerClassesAttribute(Clazz clazz, InnerClassesAttribute innerClassesAttribute) 83b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 84b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (innerClassesAttribute.u2classesCount > 0) 85b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 86b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang innerClassesAttribute.accept(clazz, attributeVisitor); 87b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 88b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 89b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 90b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 91b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitEnclosingMethodAttribute(Clazz clazz, EnclosingMethodAttribute enclosingMethodAttribute) 92b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 93b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang enclosingMethodAttribute.accept(clazz, attributeVisitor); 94b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 95b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 96b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 97b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitDeprecatedAttribute(Clazz clazz, DeprecatedAttribute deprecatedAttribute) 98b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 99b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang deprecatedAttribute.accept(clazz, attributeVisitor); 100b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 101b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 102b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 103b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitDeprecatedAttribute(Clazz clazz, Field field, DeprecatedAttribute deprecatedAttribute) 104b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 105b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang deprecatedAttribute.accept(clazz, field, attributeVisitor); 106b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 107b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 108b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 109b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitDeprecatedAttribute(Clazz clazz, Method method, DeprecatedAttribute deprecatedAttribute) 110b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 111b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang deprecatedAttribute.accept(clazz, method, attributeVisitor); 112b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 113b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 114b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 115b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitSyntheticAttribute(Clazz clazz, SyntheticAttribute syntheticAttribute) 116b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 117b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang syntheticAttribute.accept(clazz, attributeVisitor); 118b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 119b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 120b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 121b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitSyntheticAttribute(Clazz clazz, Field field, SyntheticAttribute syntheticAttribute) 122b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 123b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang syntheticAttribute.accept(clazz, field, attributeVisitor); 124b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 125b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 126b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 127b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitSyntheticAttribute(Clazz clazz, Method method, SyntheticAttribute syntheticAttribute) 128b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 129b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang syntheticAttribute.accept(clazz, method, attributeVisitor); 130b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 131b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 132b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 133b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitSignatureAttribute(Clazz clazz, SignatureAttribute signatureAttribute) 134b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 135b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang signatureAttribute.accept(clazz, attributeVisitor); 136b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 137b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 138b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 139b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitSignatureAttribute(Clazz clazz, Field field, SignatureAttribute signatureAttribute) 140b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 141b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang signatureAttribute.accept(clazz, field, attributeVisitor); 142b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 143b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 144b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 145b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitSignatureAttribute(Clazz clazz, Method method, SignatureAttribute signatureAttribute) 146b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 147b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang signatureAttribute.accept(clazz, method, attributeVisitor); 148b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 149b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 150b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 151b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitConstantValueAttribute(Clazz clazz, Field field, ConstantValueAttribute constantValueAttribute) 152b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 153b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang constantValueAttribute.accept(clazz, field, attributeVisitor); 154b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 155b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 156b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 157b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitExceptionsAttribute(Clazz clazz, Method method, ExceptionsAttribute exceptionsAttribute) 158b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 159b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (exceptionsAttribute.u2exceptionIndexTableLength > 0) 160b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 161b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang exceptionsAttribute.accept(clazz, method, attributeVisitor); 162b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 163b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 164b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 165b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 166b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) 167b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 168b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang codeAttribute.accept(clazz, method, attributeVisitor); 169b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 170b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 171b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 172b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitStackMapAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapAttribute stackMapAttribute) 173b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 174b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (stackMapAttribute.u2stackMapFramesCount > 0) 175b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 176b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang stackMapAttribute.accept(clazz, method, codeAttribute, attributeVisitor); 177b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 178b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 179b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 180b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 181b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitStackMapTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, StackMapTableAttribute stackMapTableAttribute) 182b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 183b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (stackMapTableAttribute.u2stackMapFramesCount > 0) 184b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 185b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang stackMapTableAttribute.accept(clazz, method, codeAttribute, attributeVisitor); 186b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 187b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 188b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 189b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 190b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitLineNumberTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LineNumberTableAttribute lineNumberTableAttribute) 191b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 192b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (lineNumberTableAttribute.u2lineNumberTableLength > 0) 193b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 194b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang lineNumberTableAttribute.accept(clazz, method, codeAttribute, attributeVisitor); 195b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 196b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 197b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 198b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 199b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitLocalVariableTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTableAttribute localVariableTableAttribute) 200b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 201b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (localVariableTableAttribute.u2localVariableTableLength > 0) 202b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 203b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang localVariableTableAttribute.accept(clazz, method, codeAttribute, attributeVisitor); 204b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 205b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 206b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 207b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 208b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitLocalVariableTypeTableAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute, LocalVariableTypeTableAttribute localVariableTypeTableAttribute) 209b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 210b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (localVariableTypeTableAttribute.u2localVariableTypeTableLength > 0) 211b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 212b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang localVariableTypeTableAttribute.accept(clazz, method, codeAttribute, attributeVisitor); 213b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 214b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 215b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 216b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 217b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute) 218b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 219b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (runtimeVisibleAnnotationsAttribute.u2annotationsCount > 0) 220b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 221b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang runtimeVisibleAnnotationsAttribute.accept(clazz, attributeVisitor); 222b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 223b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 224b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 225b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 226b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute) 227b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 228b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (runtimeVisibleAnnotationsAttribute.u2annotationsCount > 0) 229b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 230b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang runtimeVisibleAnnotationsAttribute.accept(clazz, field, attributeVisitor); 231b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 232b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 233b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 234b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 235b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitRuntimeVisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleAnnotationsAttribute runtimeVisibleAnnotationsAttribute) 236b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 237b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (runtimeVisibleAnnotationsAttribute.u2annotationsCount > 0) 238b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 239b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang runtimeVisibleAnnotationsAttribute.accept(clazz, method, attributeVisitor); 240b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 241b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 242b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 243b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 244b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute) 245b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 246b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (runtimeInvisibleAnnotationsAttribute.u2annotationsCount > 0) 247b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 248b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang runtimeInvisibleAnnotationsAttribute.accept(clazz, attributeVisitor); 249b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 250b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 251b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 252b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 253b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Field field, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute) 254b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 255b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (runtimeInvisibleAnnotationsAttribute.u2annotationsCount > 0) 256b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 257b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang runtimeInvisibleAnnotationsAttribute.accept(clazz, field, attributeVisitor); 258b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 259b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 260b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 261b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 262b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitRuntimeInvisibleAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleAnnotationsAttribute runtimeInvisibleAnnotationsAttribute) 263b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 264b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (runtimeInvisibleAnnotationsAttribute.u2annotationsCount > 0) 265b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 266b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang runtimeInvisibleAnnotationsAttribute.accept(clazz, method, attributeVisitor); 267b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 268b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 269b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 270b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 271b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitRuntimeVisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeVisibleParameterAnnotationsAttribute runtimeVisibleParameterAnnotationsAttribute) 272b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 273b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (runtimeVisibleParameterAnnotationsAttribute.u2parametersCount > 0) 274b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 275b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang runtimeVisibleParameterAnnotationsAttribute.accept(clazz, method, attributeVisitor); 276b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 277b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 278b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 279b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 280b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitRuntimeInvisibleParameterAnnotationsAttribute(Clazz clazz, Method method, RuntimeInvisibleParameterAnnotationsAttribute runtimeInvisibleParameterAnnotationsAttribute) 281b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 282b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang if (runtimeInvisibleParameterAnnotationsAttribute.u2parametersCount > 0) 283b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 284b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang runtimeInvisibleParameterAnnotationsAttribute.accept(clazz, method, attributeVisitor); 285b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 286b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 287b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 288b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang 289b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang public void visitAnnotationDefaultAttribute(Clazz clazz, Method method, AnnotationDefaultAttribute annotationDefaultAttribute) 290b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang { 291b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang annotationDefaultAttribute.accept(clazz, method, attributeVisitor); 292b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang } 293b9cc48a43ed984587c939d02fba5316bf5c0df6eYing Wang} 294