Buggy code:
public abstract class Shadow { private final Shadow . Kind kind ; private final Member signature ; protected final Shadow enclosingShadow ; protected List mungers = new ArrayList ( 1 ) ; protected Shadow ( Shadow . Kind kind , Member signature , Shadow enclosingShadow ) { } public abstract World getIWorld ( ) { } public List getMungers ( ) { } public final boolean hasThis ( ) { } public final TypeX getThisType ( ) { } public abstract Var getThisVar ( ) { } public final boolean hasTarget ( ) { } public final TypeX getTargetType ( ) { } public abstract Var getTargetVar ( ) { } public TypeX [ ] getArgTypes ( ) { } public TypeX getArgType ( int arg ) { } public int getArgCount ( ) { } public abstract TypeX getEnclosingType ( ) { } public abstract Var getArgVar ( int i ) { } public abstract Var getThisJoinPointVar ( ) { } public abstract Var getThisJoinPointStaticPartVar ( ) { } public abstract Var getThisEnclosingJoinPointStaticPartVar ( ) { } public abstract Member getEnclosingCodeSignature ( ) { } public Shadow . Kind getKind ( ) { } public Member getSignature ( ) { } public TypeX getReturnType ( ) { } public static final Shadow . Kind MethodCall = new Shadow . Kind ( JoinPoint . METHOD_CALL , 1 , true ) ; public static final Shadow . Kind ConstructorCall = new Shadow . Kind ( JoinPoint . CONSTRUCTOR_CALL , 2 , true ) ; public static final Shadow . Kind MethodExecution = new Shadow . Kind ( JoinPoint . METHOD_EXECUTION , 3 , false ) ; public static final Shadow . Kind ConstructorExecution = new Shadow . Kind ( JoinPoint . CONSTRUCTOR_EXECUTION , 4 , false ) ; public static final Shadow . Kind FieldGet = new Shadow . Kind ( JoinPoint . FIELD_GET , 5 , true ) ; public static final Shadow . Kind FieldSet = new Shadow . Kind ( JoinPoint . FIELD_SET , 6 , true ) ; public static final Shadow . Kind StaticInitialization = new Shadow . Kind ( JoinPoint . STATICINITIALIZATION , 7 , false ) ; public static final Shadow . Kind PreInitialization = new Shadow . Kind ( JoinPoint . PREINTIALIZATION , 8 , false ) ; public static final Shadow . Kind AdviceExecution = new Shadow . Kind ( JoinPoint . ADVICE_EXECUTION , 9 , false ) ; public static final Shadow . Kind Initialization = new Shadow . Kind ( JoinPoint . INITIALIZATION , 10 , false ) ; public static final Shadow . Kind ExceptionHandler = new Shadow . Kind ( JoinPoint . EXCEPTION_HANDLER , 11 , true ) ; public static final int MAX_SHADOW_KIND = 11 ; public static final Shadow . Kind [ ] SHADOW_KINDS = new Shadow . Kind [ ] { Shadow . MethodCall , Shadow . ConstructorCall , Shadow . MethodExecution , Shadow . ConstructorExecution , Shadow . FieldGet , Shadow . FieldSet , Shadow . StaticInitialization , Shadow . PreInitialization , Shadow . AdviceExecution , Shadow . Initialization , Shadow . ExceptionHandler } ; public static final class Kind extends TypeSafeEnum { private boolean argsOnStack ; public Kind ( String name , int key , boolean argsOnStack ) { } public String toLegalJavaIdentifier ( ) { } public boolean argsOnStack ( ) { } public boolean allowsExtraction ( ) { } public boolean hasHighPriorityExceptions ( ) { } public boolean isEnclosingKind ( ) { } public boolean isTargetSameAsThis ( ) { } public boolean neverHasTarget ( ) { } public boolean neverHasThis ( ) { } public String getSimpleName ( ) { } public static Shadow . Kind read ( DataInputStream s ) throws IOException { } } protected boolean checkMunger ( ShadowMunger munger ) { } protected boolean checkCanThrow ( ShadowMunger munger , ResolvedTypeX resolvedTypeX ) { } private boolean isDeclaredException ( ResolvedTypeX resolvedTypeX , Member member ) { } public void addMunger ( ShadowMunger munger ) { } public final void implement ( ) { } private void sortMungers ( ) { } protected void prepareForMungers ( ) { } private String beautifyLocation ( ISourceLocation isl ) { } private void reportWeavingMessage ( ShadowMunger munger ) { } public IRelationship . Kind determineRelKind ( ShadowMunger munger ) { } private void implementMungers ( ) { World world = getIWorld ( ) ; for ( Iterator iter = mungers . iterator ( ) ; iter . hasNext ( ) ; ) { ShadowMunger munger = ( ( ShadowMunger ) ( iter . next ( ) ) ) ; munger . implementOn ( this ) ; if ( ( world . xrefHandler ) != null ) { world . xrefHandler . addCrossReference ( munger . getSourceLocation ( ) , this . getSourceLocation ( ) , determineRelKind ( munger ) , ( ( org . aspectj . weaver . bcel . BcelAdvice ) ( munger ) ) . hasDynamicTests ( ) ) ; } if ( ! ( getIWorld ( ) . getMessageHandler ( ) . isIgnoring ( WEAVEINFO ) ) ) { reportWeavingMessage ( munger ) ; } if ( ( world . getModel ( ) ) != null ) { <START_BUG> AsmRelationshipProvider . adviceMunger ( world . getModel ( ) , this , munger ) ; <END_BUG> } } } public String makeReflectiveFactoryString ( ) { } public abstract ISourceLocation getSourceLocation ( ) { } public String toString ( ) { } }

Fix:
AsmRelationshipProvider . getDefault ( ) . adviceMunger ( world . getModel ( ) , this , munger ) ;