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 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 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 void implementMungers ( ) { World world = getIWorld ( ) ; for ( Iterator iter = mungers . iterator ( ) ; iter . hasNext ( ) ; ) { ShadowMunger munger = ( ( ShadowMunger ) ( iter . next ( ) ) ) ; munger . implementOn ( this ) ; if ( ( world . getModel ( ) ) != null ) { <START_BUG> AsmAdapter . nodeMunger ( world . getModel ( ) , this , munger ) ; <END_BUG> } } } public String makeReflectiveFactoryString ( ) { } public abstract ISourceLocation getSourceLocation ( ) { } public String toString ( ) { } }

Fix:
AsmAdviceRelationshipProvider . nodeMunger ( world . getModel ( ) , this , munger ) ;