1b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/* 2b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ProGuard -- shrinking, optimization, obfuscation, and preverification 3b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of Java bytecode. 4b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 59f606f95f03a75961498803e24bee6799a7c0885Ying Wang * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu) 6b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 7b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is free software; you can redistribute it and/or modify it 8b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * under the terms of the GNU General Public License as published by the Free 9b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Software Foundation; either version 2 of the License, or (at your option) 10b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * any later version. 11b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 12b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This program is distributed in the hope that it will be useful, but WITHOUT 13b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * more details. 16b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 17b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * You should have received a copy of the GNU General Public License along 18b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * with this program; if not, write to the Free Software Foundation, Inc., 19b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 21b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopackage proguard.classfile; 22b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 23b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.classfile.attribute.visitor.AttributeVisitor; 24b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.classfile.constant.visitor.ConstantVisitor; 25b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratoimport proguard.classfile.visitor.*; 26b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 27b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 28b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato/** 29b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * This interface provides access to the representation of a Java class. 30b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * 31b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @author Eric Lafortune 32b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 33b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onoratopublic interface Clazz extends VisitorAccepter 34b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato{ 35b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 36b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the access flags of this class. 37b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @see ClassConstants 38b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 39b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public int getAccessFlags(); 40b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 41b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 42b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the full internal name of this class. 43b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 44b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String getName(); 45b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 46b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 47b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the full internal name of the super class of this class, or 48b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * null if this class represents java.lang.Object. 49b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 50b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String getSuperName(); 51b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 52b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 53b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the number of interfaces that this class implements. 54b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 55b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public int getInterfaceCount(); 56b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 57b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 58b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the full internal name of the interface at the given index of 59b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * this class. 60b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 61b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String getInterfaceName(int index); 62b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 63b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 64b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the tag value of the Constant at the specified index. 65b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 66b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public int getTag(int constantIndex); 67b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 68b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 69b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the String value of the Utf8Constant at the specified index. 70b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 71b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String getString(int constantIndex); 72b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 73b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 74b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the String value of the StringConstant at the specified index. 75b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 76b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String getStringString(int constantIndex); 77b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 78b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 79b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the class name of ClassConstant at the specified index. 80b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 81b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String getClassName(int constantIndex); 82b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 83b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 84b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the name of the NameAndTypeConstant at the specified index. 85b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 86b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String getName(int constantIndex); 87b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 88b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 89b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the type of the NameAndTypeConstant at the specified index. 90b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 91b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public String getType(int constantIndex); 92b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 93b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 94b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Methods pertaining to related classes. 95b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 96b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 97b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Notifies this Clazz that it is being subclassed by another class. 98b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 99b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void addSubClass(Clazz clazz); 100b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 101b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 102b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the super class of this class. 103b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 104b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public Clazz getSuperClass(); 105b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 106b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 107b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the interface at the given index. 108b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 109b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public Clazz getInterface(int index); 110b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 111b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 112b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns whether this class extends the given class. 113b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A class is always considered to extend itself. 114b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Interfaces are considered to only extend the root Object class. 115b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 116b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean extends_(Clazz clazz); 117b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 118b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 119b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns whether this class implements the given class. 120b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * A class is always considered to implement itself. 121b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Interfaces are considered to implement all their superinterfaces. 122b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 123b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean extendsOrImplements(Clazz clazz); 124b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 125b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 126b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Methods for getting specific class members. 127b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 128b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 129b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the field with the given name and descriptor. 130b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 131b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato Field findField(String name, String descriptor); 132b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 133b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 134b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns the method with the given name and descriptor. 135b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 136b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato Method findMethod(String name, String descriptor); 137b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 138b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 139b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato // Methods for accepting various types of visitors. 140b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 141b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 142b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Accepts the given class visitor. 143b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 144b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void accept(ClassVisitor classVisitor); 145b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 146b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 147b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Accepts the given class visitor in the class hierarchy. 148b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @param visitThisClass specifies whether to visit this class. 149b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @param visitSuperClass specifies whether to visit the super classes. 150b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @param visitInterfaces specifies whether to visit the interfaces. 151b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @param visitSubclasses specifies whether to visit the subclasses. 152b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @param classVisitor the <code>ClassVisitor</code> that will 153b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * visit the class hierarchy. 154b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 155b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void hierarchyAccept(boolean visitThisClass, 156b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato boolean visitSuperClass, 157b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato boolean visitInterfaces, 158b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato boolean visitSubclasses, 159b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato ClassVisitor classVisitor); 160b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 161b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 162b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given class visitor visit all known subclasses. 163b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @param classVisitor the <code>ClassVisitor</code> that will visit the 164b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * subclasses. 165b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 166b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void subclassesAccept(ClassVisitor classVisitor); 167b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 168b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 169b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given constant pool entry visitor visit all constant pool entries 170b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * of this class. 171b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 172b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void constantPoolEntriesAccept(ConstantVisitor constantVisitor); 173b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 174b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 175b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given constant pool entry visitor visit the constant pool entry 176b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * at the specified index. 177b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 178b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void constantPoolEntryAccept(int index, ConstantVisitor constantVisitor); 179b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 180b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 181b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given constant pool entry visitor visit the class constant pool 182b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * entry of this class. 183b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 184b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void thisClassConstantAccept(ConstantVisitor constantVisitor); 185b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 186b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 187b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given constant pool entry visitor visit the class constant pool 188b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * entry of the super class of this class, if there is one. 189b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 190b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void superClassConstantAccept(ConstantVisitor constantVisitor); 191b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 192b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 193b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given constant pool entry visitor visit the class constant pool 194b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * entries for all interfaces of this class. 195b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 196b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void interfaceConstantsAccept(ConstantVisitor constantVisitor); 197b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 198b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 199b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given member info visitor visit all fields of this class. 200b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 201b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void fieldsAccept(MemberVisitor memberVisitor); 202b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 203b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 204b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given member info visitor visit the specified field. 205b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 206b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void fieldAccept(String name, String descriptor, MemberVisitor memberVisitor); 207b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 208b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 209b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given member info visitor visit all methods of this class. 210b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 211b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void methodsAccept(MemberVisitor memberVisitor); 212b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 213b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 214b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given member info visitor visit the specified method. 215b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 216b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void methodAccept(String name, String descriptor, MemberVisitor memberVisitor); 217b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 218b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 219b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Returns whether the given method may possibly have implementing or 220b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * overriding methods down the class hierarchy. This can only be true 221b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * if the class is not final, and the method is not private, static, or 222b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * final, or a constructor. 223b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @param method the method that may have implementations. 224b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * @return whether it may have implementations. 225b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 226b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public boolean mayHaveImplementations(Method method); 227b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato 228b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato /** 229b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato * Lets the given attribute info visitor visit all attributes of this class. 230b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato */ 231b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato public void attributesAccept(AttributeVisitor attributeVisitor); 232b72c5c2e5482cf10117b2b25f642f7616b2326c3Joe Onorato} 233