Buggy code:
public abstract class ResolvedType extends UnresolvedType implements AnnotatedElement { private static final ResolvedType [ ] EMPTY_RESOLVED_TYPE_ARRAY = new ResolvedType [ 0 ] ; public static final String PARAMETERIZED_TYPE_IDENTIFIER = "P" ; private ResolvedType [ ] resolvedTypeParams ; protected World world ; protected ResolvedType ( String signature , World world ) { } protected ResolvedType ( String signature , String signatureErasure , World world ) { } public final Iterator getDirectSupertypes ( ) { } public abstract ResolvedMember [ ] getDeclaredFields ( ) { } public abstract ResolvedMember [ ] getDeclaredMethods ( ) { } public abstract ResolvedType [ ] getDeclaredInterfaces ( ) { } public abstract ResolvedMember [ ] getDeclaredPointcuts ( ) { } public abstract ResolvedType getSuperclass ( ) { } public abstract int getModifiers ( ) { } public boolean isMissing ( ) { } public static boolean isMissing ( UnresolvedType unresolved ) { } public ResolvedType [ ] getAnnotationTypes ( ) { } public final UnresolvedType getSuperclass ( World world ) { } static Set validBoxing = new HashSet ( ) ; public ResolvedType getResolvedComponentType ( ) { } public World getWorld ( ) { } public final boolean equals ( Object other ) { } public Iterator getFields ( ) { } public Iterator getMethods ( ) { } public List getMethodsWithoutIterator ( boolean includeITDs , boolean allowMissing ) { } private void addAndRecurse ( Set knowninterfaces , List collector , ResolvedType rtx , boolean includeITDs , boolean allowMissing ) { collector . addAll ( Arrays . asList ( rtx . getDeclaredMethods ( ) ) ) ; if ( includeITDs && ( ( rtx . interTypeMungers ) != null ) ) { for ( Iterator i = interTypeMungers . iterator ( ) ; i . hasNext ( ) ; ) { ConcreteTypeMunger tm = ( ( ConcreteTypeMunger ) ( i . next ( ) ) ) ; ResolvedMember rm = tm . getSignature ( ) ; if ( rm != null ) { collector . add ( tm . getSignature ( ) ) ; } } } if ( ! ( rtx . equals ( OBJECT ) ) ) { ResolvedType superType = rtx . getSuperclass ( ) ; if ( ( superType != null ) && ( ! ( superType . isMissing ( ) ) ) ) { addAndRecurse ( knowninterfaces , collector , superType , includeITDs , allowMissing ) ; } } ResolvedType [ ] interfaces = rtx . getDeclaredInterfaces ( ) ; for ( int i = 0 ; i < ( interfaces . length ) ; i ++ ) { ResolvedType iface = interfaces [ i ] ; boolean shouldSkip = false ; for ( int j = 0 ; j < ( rtx . interTypeMungers . size ( ) ) ; j ++ ) { ConcreteTypeMunger munger = ( ( ConcreteTypeMunger ) ( rtx . interTypeMungers . get ( j ) ) ) ; <START_BUG> if ( ( munger . getMunger ( ) . getKind ( ) ) == ( ResolvedTypeMunger . Parent ) ) { <END_BUG> shouldSkip = true ; break ; } } if ( ( ! shouldSkip ) && ( ! ( knowninterfaces . contains ( iface ) ) ) ) { knowninterfaces . add ( iface ) ; if ( allowMissing && ( iface . isMissing ( ) ) ) { if ( iface instanceof MissingResolvedTypeWithKnownSignature ) { ( ( MissingResolvedTypeWithKnownSignature ) ( iface ) ) . raiseWarningOnMissingInterfaceWhilstFindingMethods ( ) ; } } else { addAndRecurse ( knowninterfaces , collector , iface , includeITDs , allowMissing ) ; } } } } public ResolvedType [ ] getResolvedTypeParameters ( ) { } public ResolvedMember lookupField ( Member m ) { } public ResolvedMember lookupMethod ( Member m ) { } public ResolvedMember lookupMethodInITDs ( Member m ) { } private ResolvedMember lookupMember ( Member m , Iterator i ) { } private ResolvedMember lookupMember ( Member m , ResolvedMember [ ] a ) { } public ResolvedMember lookupResolvedMember ( ResolvedMember aMember , boolean allowMissing ) { } public static boolean matches ( Member m1 , Member m2 ) { } public static boolean conflictingSignature ( Member m1 , Member m2 ) { } public Iterator getPointcuts ( ) { } public ResolvedPointcutDefinition findPointcut ( String name ) { } public CrosscuttingMembers crosscuttingMembers ; public CrosscuttingMembers collectCrosscuttingMembers ( boolean shouldConcretizeIfNeeded ) { } public final Collection collectDeclares ( boolean includeAdviceLike ) { } private final Collection collectShadowMungers ( ) { } protected boolean doesNotExposeShadowMungers ( ) { } public PerClause getPerClause ( ) { } protected Collection getDeclares ( ) { } protected Collection getTypeMungers ( ) { } protected Collection getPrivilegedAccesses ( ) { } public final boolean isInterface ( ) { } public final boolean isAbstract ( ) { } public boolean isClass ( ) { } public boolean isAspect ( ) { } public boolean isAnnotationStyleAspect ( ) { } public boolean isEnum ( ) { } public boolean isAnnotation ( ) { } public boolean isAnonymous ( ) { } public boolean isNested ( ) { } public void addAnnotation ( AnnotationX annotationX ) { } public AnnotationX [ ] getAnnotations ( ) { } public boolean canAnnotationTargetType ( ) { } public AnnotationTargetKind [ ] getAnnotationTargetKinds ( ) { } public boolean isAnnotationWithRuntimeRetention ( ) { } public boolean isSynthetic ( ) { } public final boolean isFinal ( ) { } protected Map getMemberParameterizationMap ( ) { } public Collection getDeclaredAdvice ( ) { } public Collection getDeclaredShadowMungers ( ) { } public ResolvedMember [ ] getDeclaredJavaFields ( ) { } public ResolvedMember [ ] getDeclaredJavaMethods ( ) { } public ShadowMunger [ ] getDeclaredShadowMungersArray ( ) { } private ResolvedMember [ ] filterInJavaVisible ( ResolvedMember [ ] ms ) { } public abstract ISourceContext getSourceContext ( ) { } public static final ResolvedType [ ] NONE = new ResolvedType [ 0 ] ;

Fix:
if ( ( ( munger . getMunger ( ) ) != null ) && ( ( munger . getMunger ( ) . getKind ( ) ) == ( ResolvedTypeMunger . Parent ) ) ) {