Buggy code:
public void initializeForAroundClosure ( ) { } public void initializeThisAnnotationVars ( ) { } public void initializeTargetAnnotationVars ( ) { } public void initializeArgAnnotationVars ( ) { } public void initializeKindedAnnotationVars ( ) { } ResolvedMember findMethod2 ( ResolvedMember [ ] rm , Member sig ) { } private ResolvedMember findMethod ( ResolvedTypeX aspectType , ResolvedMember ajcMethod ) { } private ResolvedMember findField ( ResolvedMember [ ] members , Member lookingFor ) { } public void initializeWithinAnnotationVars ( ) { } public void initializeWithinCodeAnnotationVars ( ) { } void weaveBefore ( BcelAdvice munger ) { } public void weaveAfter ( BcelAdvice munger ) { } public void weaveAfterReturning ( BcelAdvice munger ) { } public void weaveAfterThrowing ( BcelAdvice munger , TypeX catchType ) { } public void weaveSoftener ( BcelAdvice munger , TypeX catchType ) { } public void weavePerObjectEntry ( final BcelAdvice munger , final BcelVar onVar ) { } public void weavePerTypeWithinAspectInitialization ( final BcelAdvice munger , TypeX t ) { } public void weaveCflowEntry ( final BcelAdvice munger , final Member cflowField ) { } public void weaveAroundInline ( BcelAdvice munger , boolean hasDynamicTest ) { } private InstructionList getRedoneProceedCall ( InstructionFactory fact , LazyMethodGen callbackMethod , BcelAdvice munger , LazyMethodGen localAdviceMethod , List argVarList ) { } private InstructionList getRedoneProceedCallForAnnotationStyle ( InstructionFactory fact , LazyMethodGen callbackMethod , BcelAdvice munger , LazyMethodGen localAdviceMethod , List argVarList , boolean isProceedWithArgs ) { } public void weaveAroundClosure ( BcelAdvice munger , boolean hasDynamicTest ) { InstructionFactory fact = getFactory ( ) ; enclosingMethod . setCanInline ( false ) ; LazyMethodGen callbackMethod = extractMethod ( NameMangler . aroundCallbackMethodName ( getSignature ( ) , getEnclosingClass ( ) ) , 0 , munger ) ; BcelVar [ ] adviceVars = munger . getExposedStateAsBcelVars ( ) ; String closureClassName = NameMangler . makeClosureClassName ( getEnclosingClass ( ) . getType ( ) , getEnclosingClass ( ) . getNewGeneratedNameTag ( ) ) ; Member constructorSig = new Member ( Member . CONSTRUCTOR , TypeX . forName ( closureClassName ) , 0 , "<init>" , "([Ljava//lang//Object;)V" ) ; BcelVar closureHolder = null ; if ( ( getKind ( ) ) == ( PreInitialization ) ) { closureHolder = genTempVar ( AROUND_CLOSURE_TYPE ) ; } InstructionList closureInstantiation = makeClosureInstantiation ( constructorSig , closureHolder ) ; makeClosureClassAndReturnConstructor ( closureClassName , callbackMethod , makeProceedArgumentMap ( adviceVars ) ) ; InstructionList returnConversionCode ; if ( ( getKind ( ) ) == ( PreInitialization ) ) { returnConversionCode = new InstructionList ( ) ; BcelVar stateTempVar = genTempVar ( OBJECTARRAY ) ; closureHolder . appendLoad ( returnConversionCode , fact ) ; returnConversionCode . append ( Utility . createInvoke ( fact , world , AjcMemberMaker . aroundClosurePreInitializationGetter ( ) ) ) ; stateTempVar . appendStore ( returnConversionCode , fact ) ; Type [ ] stateTypes = getSuperConstructorParameterTypes ( ) ; returnConversionCode . append ( ALOAD_0 ) ; for ( int i = 0 , len = stateTypes . length ; i < len ; i ++ ) { TypeX bcelTX = BcelWorld . fromBcel ( stateTypes [ i ] ) ; ResolvedTypeX stateRTX = world . resolve ( bcelTX , true ) ; if ( stateRTX == ( ResolvedTypeX . MISSING ) ) { IMessage msg = new org . aspectj . bridge . Message ( WeaverMessages . format ( CANT_FIND_TYPE_DURING_AROUND_WEAVE_PREINIT , bcelTX . getClassName ( ) ) , "" , IMessage . ERROR , getSourceLocation ( ) , null , new ISourceLocation [ ] { munger . getSourceLocation ( ) } ) ; world . getMessageHandler ( ) . handleMessage ( msg ) ; } stateTempVar . appendConvertableArrayLoad ( returnConversionCode , fact , i , stateRTX ) ; } } else { returnConversionCode = Utility . createConversion ( getFactory ( ) , BcelWorld . makeBcelType ( munger . getSignature ( ) . getReturnType ( ) ) , callbackMethod . getReturnType ( ) ) ; if ( ! ( isFallsThrough ( ) ) ) { returnConversionCode . append ( InstructionFactory . createReturn ( callbackMethod . getReturnType ( ) ) ) ; } } <START_BUG> if ( munger . getConcreteAspect ( ) . isAnnotationStyleAspect ( ) ) { <END_BUG> closureInstantiation . append ( Utility . createInvoke ( getFactory ( ) , getWorld ( ) , new Member ( Member . METHOD , TypeX . forName ( "org.aspectj.runtime.internal.AroundClosure" ) , Modifier . PUBLIC , "linkClosureAndJoinPoint" , "()Lorg//aspectj//lang//ProceedingJoinPoint;" ) ) ) ; } InstructionList advice = new InstructionList ( ) ; advice . append ( munger . getAdviceArgSetup ( this , null , closureInstantiation ) ) ; advice . append ( munger . getNonTestAdviceInstructions ( this ) ) ; advice . append ( returnConversionCode ) ; if ( ! hasDynamicTest ) { range . append ( advice ) ; } else { InstructionList callback = makeCallToCallback ( callbackMethod ) ; InstructionList postCallback = new InstructionList ( ) ; if ( terminatesWithReturn ( ) ) { callback . append ( InstructionFactory . createReturn ( callbackMethod . getReturnType ( ) ) ) ; } else { advice . append ( InstructionFactory . createBranchInstruction ( GOTO , postCallback . append ( NOP ) ) ) ; } range . append ( munger . getTestInstructions ( this , advice . getStart ( ) , callback . getStart ( ) , advice . getStart ( ) ) ) ; range . append ( advice ) ; range . append ( callback ) ; range . append ( postCallback ) ; } } InstructionList makeCallToCallback ( LazyMethodGen callbackMethod ) { } private InstructionList makeClosureInstantiation ( Member constructor , BcelVar holder ) { } private IntMap makeProceedArgumentMap ( BcelVar [ ] adviceArgs ) { } private LazyMethodGen makeClosureClassAndReturnConstructor ( String closureClassName , LazyMethodGen callbackMethod , IntMap proceedMap ) { } public LazyMethodGen extractMethod ( String newMethodName , int visibilityModifier , ShadowMunger munger ) { } private void addPreInitializationReturnCode ( LazyMethodGen extractedMethod , Type [ ] superConstructorTypes ) { } private Type [ ] getSuperConstructorParameterTypes ( ) { } private IntMap makeRemap ( ) { }

Fix:
if ( ( ( munger . getConcreteAspect ( ) ) != null ) && ( munger . getConcreteAspect ( ) . isAnnotationStyleAspect ( ) ) ) {