Buggy code:
public class BcelTypeMunger extends ConcreteTypeMunger { public BcelTypeMunger ( ResolvedTypeMunger munger , ResolvedType aspectType ) { } public String toString ( ) { } public boolean munge ( BcelClassWeaver weaver ) { } private String getShortname ( String path ) { } private boolean mungeNewAnnotationOnType ( BcelClassWeaver weaver , AnnotationOnTypeMunger munger ) { } private boolean mungeNewParent ( BcelClassWeaver weaver , NewParentTypeMunger munger ) { } private boolean enforceDecpRule1_abstractMethodsImplemented ( BcelClassWeaver weaver , ISourceLocation mungerLoc , LazyClassGen newParentTarget , ResolvedType newParent ) { } private boolean enforceDecpRule2_cantExtendFinalClass ( BcelClassWeaver weaver , ISourceLocation mungerLoc , LazyClassGen newParentTarget , ResolvedType newParent ) { } private boolean enforceDecpRule3_visibilityChanges ( BcelClassWeaver weaver , ResolvedType newParent , ResolvedMember superMethod , LazyMethodGen subMethod ) { } private boolean enforceDecpRule4_compatibleReturnTypes ( BcelClassWeaver weaver , ResolvedMember superMethod , LazyMethodGen subMethod ) { } private boolean enforceDecpRule5_cantChangeFromStaticToNonstatic ( BcelClassWeaver weaver , ISourceLocation mungerLoc , ResolvedMember superMethod , LazyMethodGen subMethod ) { } public void error ( BcelClassWeaver weaver , String text , ISourceLocation primaryLoc , ISourceLocation [ ] extraLocs ) { } private LazyMethodGen findMatchingMethod ( LazyClassGen newParentTarget , ResolvedMember m ) { } public boolean attemptToModifySuperCalls ( BcelClassWeaver weaver , LazyClassGen newParentTarget , ResolvedType newParent ) { } private String createReadableCtorSig ( ResolvedType newParent , ConstantPoolGen cpg , INVOKESPECIAL invokeSpecial ) { } private ResolvedMember getConstructorWithSignature ( ResolvedType tx , String signature ) { } private boolean mungePrivilegedAccess ( BcelClassWeaver weaver , PrivilegedAccessMunger munger ) { } private void addFieldGetter ( LazyClassGen gen , ResolvedMember field , ResolvedMember accessMethod ) { } private void addFieldSetter ( LazyClassGen gen , ResolvedMember field , ResolvedMember accessMethod ) { } private void addMethodDispatch ( LazyClassGen gen , ResolvedMember method , ResolvedMember accessMethod ) { } protected LazyMethodGen makeMethodGen ( LazyClassGen gen , ResolvedMember member ) { } protected FieldGen makeFieldGen ( LazyClassGen gen , ResolvedMember member ) { } private boolean mungePerObjectInterface ( BcelClassWeaver weaver , PerObjectInterfaceTypeMunger munger ) { } private boolean mungePerTypeWithinTransformer ( BcelClassWeaver weaver ) { } private boolean couldMatch ( BcelObjectType bcelObjectType , Pointcut pointcut ) { } private boolean mungeNewMethod ( BcelClassWeaver weaver , NewMethodTypeMunger munger ) { ResolvedMember signature = munger . getSignature ( ) ; ResolvedMember dispatchMethod = munger . getInterMethodBody ( aspectType ) ; LazyClassGen gen = weaver . getLazyClassGen ( ) ; ResolvedType onType = weaver . getWorld ( ) . resolve ( signature . getDeclaringType ( ) , munger . getSourceLocation ( ) ) ; if ( onType . isRawType ( ) ) onType = onType . getGenericType ( ) ; boolean onInterface = onType . isInterface ( ) ; if ( onType . isAnnotation ( ) ) { signalError ( ITDM_ON_ANNOTATION_NOT_ALLOWED , weaver , onType ) ; return false ; } if ( onType . isEnum ( ) ) { signalError ( ITDM_ON_ENUM_NOT_ALLOWED , weaver , onType ) ; return false ; } if ( onType . equals ( gen . getType ( ) ) ) { ResolvedMember introMethod = AjcMemberMaker . interMethod ( signature , aspectType , onInterface ) ; AnnotationX [ ] annotationsOnRealMember = null ; <START_BUG> if ( ( ( ( weaver . getWorld ( ) . behaveInJava5Way ) && ( ! onInterface ) ) && ( munger . getSignature ( ) . isPublic ( ) ) ) && ( ! ( munger . getSignature ( ) . isAbstract ( ) ) ) ) { <END_BUG> ResolvedMember realMember = getRealMemberForITDFromAspect ( aspectType , dispatchMethod ) ; if ( realMember == null ) throw new org . aspectj . weaver . BCException ( ( ( ( "Couldn't<seq2seq4repair_space>find<seq2seq4repair_space>ITD<seq2seq4repair_space>holder<seq2seq4repair_space>member<seq2seq4repair_space>'" + dispatchMethod ) + "'<seq2seq4repair_space>on<seq2seq4repair_space>aspect<seq2seq4repair_space>" ) + ( aspectType ) ) ) ; annotationsOnRealMember = realMember . getAnnotations ( ) ; } LazyMethodGen mg = makeMethodGen ( gen , introMethod ) ; if ( annotationsOnRealMember != null ) { for ( int i = 0 ; i < ( annotationsOnRealMember . length ) ; i ++ ) { AnnotationX annotationX = annotationsOnRealMember [ i ] ; Annotation a = annotationX . getBcelAnnotation ( ) ; AnnotationGen ag = new AnnotationGen ( a , weaver . getLazyClassGen ( ) . getConstantPoolGen ( ) , true ) ; mg . addAnnotation ( new AnnotationX ( ag . getAnnotation ( ) , weaver . getWorld ( ) ) ) ; } } if ( ( ! onInterface ) && ( ! ( Modifier . isAbstract ( introMethod . getModifiers ( ) ) ) ) ) { InstructionList body = mg . getBody ( ) ; InstructionFactory fact = gen . getFactory ( ) ; int pos = 0 ; if ( ! ( signature . isStatic ( ) ) ) { body . append ( InstructionFactory . createThis ( ) ) ; pos ++ ; } Type [ ] paramTypes = BcelWorld . makeBcelTypes ( introMethod . getParameterTypes ( ) ) ; for ( int i = 0 , len = paramTypes . length ; i < len ; i ++ ) { Type paramType = paramTypes [ i ] ; body . append ( InstructionFactory . createLoad ( paramType , pos ) ) ; pos += paramType . getSize ( ) ; } body . append ( Utility . createInvoke ( fact , weaver . getWorld ( ) , dispatchMethod ) ) ; body . append ( InstructionFactory . createReturn ( BcelWorld . makeBcelType ( introMethod . getReturnType ( ) ) ) ) ; } else { } weaver . addLazyMethodGen ( mg ) ; weaver . getLazyClassGen ( ) . warnOnAddedMethod ( mg . getMethod ( ) , getSignature ( ) . getSourceLocation ( ) ) ; addNeededSuperCallMethods ( weaver , onType , munger . getSuperMethodsCalled ( ) ) ; return true ; } else if ( onInterface && ( ! ( Modifier . isAbstract ( signature . getModifiers ( ) ) ) ) ) { if ( ! ( gen . getType ( ) . isTopmostImplementor ( onType ) ) ) { ResolvedType rtx = gen . getType ( ) . getTopmostImplementor ( onType ) ;

Fix:
if ( ( ( ( weaver . getWorld ( ) . isInJava5Mode ( ) ) && ( ! onInterface ) ) && ( munger . getSignature ( ) . isPublic ( ) ) ) && ( ! ( munger . getSignature ( ) . isAbstract ( ) ) ) ) {