001    package serp.bytecode;
002    
003    import serp.bytecode.lowlevel.*;
004    
005    /**
006     * Interface implemented by all bytecode entities. Entities must be able
007     * to access the project, constant pool, and class loader of the current class.
008     *
009     * @author Abe White
010     */
011    public interface BCEntity {
012        /**
013         * Return the project of the current class.
014         */
015        public Project getProject();
016    
017        /**
018         * Return the constant pool of the current class.
019         */
020        public ConstantPool getPool();
021    
022        /**
023         * Return the class loader to use when loading related classes.
024         */
025        public ClassLoader getClassLoader();
026    
027        /**
028         * Return false if this entity has been removed from its parent; in this
029         * case the results of any operations on the entity are undefined.
030         */
031        public boolean isValid();
032    }