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