Buggy code:
public class BcelWeaver implements IWeaver { private BcelWorld world ; private CrosscuttingMembersSet xcutSet ; private IProgressListener progressListener = null ; private double progressMade ; private double progressPerClassFile ; private boolean inReweavableMode = false ; public BcelWeaver ( BcelWorld world ) { } public BcelWeaver ( ) { } private List addedClasses = new ArrayList ( ) ; private List deletedTypenames = new ArrayList ( ) ; private Manifest manifest = null ; private boolean needToReweaveWorld = false ; private List shadowMungerList = null ; private List typeMungerList = null ; private List declareParentsList = null ; private ZipOutputStream zipOutputStream ; public void setShadowMungers ( List l ) { } public void addLibraryAspect ( String aspectName ) { } public void addLibraryJarFile ( File inFile ) throws IOException { } private Set alreadyConfirmedReweavableState ; public List addDirectoryContents ( File inFile , File outDir ) throws IOException { } public List addJarFile ( File inFile , File outDir , boolean canBeDirectory ) { } public boolean needToReweaveWorld ( ) { } public void addClassFile ( UnwovenClassFile classFile ) { } public UnwovenClassFile addClassFile ( File classFile , File inPathDir , File outDir ) throws IOException { } public void deleteClassFile ( String typename ) { } public void prepareForWeave ( ) { } public void addManifest ( Manifest newManifest ) { } public static final String MANIFEST_NAME = "META-INF//MANIFEST.MF" ; private static final String WEAVER_MANIFEST_VERSION = "1.0" ; private static final Attributes . Name CREATED_BY = new Attributes . Name ( "Created-By" ) ; private static final String WEAVER_CREATED_BY = "AspectJ<seq2seq4repair_space>Compiler" ; public Manifest getManifest ( boolean shouldCreate ) { } public Collection weave ( File file ) throws IOException { } public Collection weave ( IClassFileProvider input ) throws IOException { } public void prepareToProcessReweavableState ( ) { } public void processReweavableStateIfPresent ( String className , BcelObjectType classType ) { } private void weaveAndNotify ( UnwovenClassFile classFile , BcelObjectType classType , IWeaveRequestor requestor ) throws IOException { } public BcelObjectType getClassType ( String forClass ) { } public void addTypeMungers ( String typeName ) { } public UnwovenClassFile [ ] getClassFilesFor ( LazyClassGen clazz ) { } public void weave ( ResolvedTypeX onType ) { onType . clearInterTypeMungers ( ) ; for ( Iterator i = declareParentsList . iterator ( ) ; i . hasNext ( ) ; ) { DeclareParents p = ( ( DeclareParents ) ( i . next ( ) ) ) ; <START_BUG> List newParents = p . findMatchingNewParents ( onType ) ; <END_BUG> if ( ! ( newParents . isEmpty ( ) ) ) { BcelObjectType classType = BcelWorld . getBcelObjectType ( onType ) ; for ( Iterator j = newParents . iterator ( ) ; j . hasNext ( ) ; ) { ResolvedTypeX newParent = ( ( ResolvedTypeX ) ( j . next ( ) ) ) ; if ( newParent . isClass ( ) ) { world . showMessage ( ERROR , WeaverMessages . format ( DECP_BINARY_LIMITATION , onType . getName ( ) ) , p . getSourceLocation ( ) , null ) ; continue ; } classType . addParent ( newParent ) ; ResolvedTypeMunger newParentMunger = new org . aspectj . weaver . NewParentTypeMunger ( newParent ) ; onType . addInterTypeMunger ( new BcelTypeMunger ( newParentMunger , xcutSet . findAspectDeclaringParents ( p ) ) ) ; } } } for ( Iterator i = typeMungerList . iterator ( ) ; i . hasNext ( ) ; ) { ConcreteTypeMunger m = ( ( ConcreteTypeMunger ) ( i . next ( ) ) ) ; if ( m . matches ( onType ) ) { onType . addInterTypeMunger ( m ) ; } } } public LazyClassGen weaveWithoutDump ( UnwovenClassFile classFile , BcelObjectType classType ) throws IOException { } LazyClassGen weave ( UnwovenClassFile classFile , BcelObjectType classType ) throws IOException { } private LazyClassGen weave ( UnwovenClassFile classFile , BcelObjectType classType , boolean dump ) throws IOException { } private void dumpUnchanged ( UnwovenClassFile classFile ) throws IOException { } private String getEntryName ( String className ) { } private void dump ( UnwovenClassFile classFile , LazyClassGen clazz ) throws IOException { } private void writeZipEntry ( String name , byte [ ] bytes ) throws IOException { } private List fastMatch ( List list , ResolvedTypeX type ) { } public void setProgressListener ( IProgressListener listener , double previousProgress , double progressPerClassFile ) { } public void setReweavableMode ( boolean mode , boolean compress ) { } public boolean isReweavable ( ) { } }

Fix:
List newParents = p . findMatchingNewParents ( onType , true ) ;