Buggy code:
public abstract class ReferenceBinding extends TypeBinding implements IDependent { public static ReferenceBinding LUB_GENERIC = new ReferenceBinding ( ) { } ; public char [ ] [ ] compoundName ; public char [ ] sourceName ; public int modifiers ; public PackageBinding fPackage ; char [ ] fileName ; char [ ] constantPoolName ; char [ ] signature ; public FieldBinding [ ] availableFields ( ) { } public MethodBinding [ ] availableMethods ( ) { } public boolean canBeInstantiated ( ) { } public final boolean canBeSeenBy ( PackageBinding invocationPackage ) { } public final boolean canBeSeenBy ( ReferenceBinding receiverType , SourceTypeBinding invocationType ) { } public final boolean canBeSeenBy ( Scope scope ) { } public char [ ] computeGenericTypeSignature ( TypeVariableBinding [ ] typeVariables ) { } public void computeId ( ) { } public char [ ] computeUniqueKey ( boolean isLeaf ) { } public char [ ] constantPoolName ( ) { } public String debugName ( ) { } public final int depth ( ) { } public boolean detectAnnotationCycle ( ) { } public final ReferenceBinding enclosingTypeAt ( int relativeDepth ) { } public int enumConstantCount ( ) { } public int fieldCount ( ) { } public FieldBinding [ ] fields ( ) { } public ReferenceBinding findSuperTypeErasingTo ( int wellKnownErasureID , boolean erasureIsClass ) { } public ReferenceBinding findSuperTypeWithSameErasure ( TypeBinding otherType ) { if ( ( this ) == otherType ) return this ; if ( ! ( otherType . isTypeVariable ( ) ) ) { otherType = otherType . erasure ( ) ; if ( ( ! ( isTypeVariable ( ) ) ) && ( ( erasure ( ) ) == otherType ) ) return this ; } ReferenceBinding currentType = this ; if ( ! ( otherType . isInterface ( ) ) ) { while ( ( currentType = currentType . superclass ( ) ) != null ) { if ( ( currentType == otherType ) || ( ( currentType . erasure ( ) ) == otherType ) ) return currentType ; } return null ; } ReferenceBinding [ ] [ ] interfacesToVisit = new ReferenceBinding [ 5 ] [ ] ; int lastPosition = - 1 ; do { ReferenceBinding [ ] itsInterfaces = currentType . superInterfaces ( ) ; <START_BUG> if ( itsInterfaces != ( NoSuperInterfaces ) ) { <END_BUG> if ( ( ++ lastPosition ) == ( interfacesToVisit . length ) ) System . arraycopy ( interfacesToVisit , 0 , ( interfacesToVisit = new ReferenceBinding [ lastPosition * 2 ] [ ] ) , 0 , lastPosition ) ; interfacesToVisit [ lastPosition ] = itsInterfaces ; } } while ( ( currentType = currentType . superclass ( ) ) != null ) ; for ( int i = 0 ; i <= lastPosition ; i ++ ) { ReferenceBinding [ ] interfaces = interfacesToVisit [ i ] ; for ( int j = 0 , length = interfaces . length ; j < length ; j ++ ) { if ( ( ( currentType = interfaces [ j ] ) == otherType ) || ( ( currentType . erasure ( ) ) == otherType ) ) return currentType ; ReferenceBinding [ ] itsInterfaces = currentType . superInterfaces ( ) ; if ( itsInterfaces != ( NoSuperInterfaces ) ) { if ( ( ++ lastPosition ) == ( interfacesToVisit . length ) ) System . arraycopy ( interfacesToVisit , 0 , ( interfacesToVisit = new ReferenceBinding [ lastPosition * 2 ] [ ] ) , 0 , lastPosition ) ; interfacesToVisit [ lastPosition ] = itsInterfaces ; } } } return null ; } public final int getAccessFlags ( ) { } public long getAnnotationTagBits ( ) { } public MethodBinding getExactConstructor ( TypeBinding [ ] argumentTypes ) { } public MethodBinding getExactMethod ( char [ ] selector , TypeBinding [ ] argumentTypes , CompilationUnitScope refScope ) { } public FieldBinding getField ( char [ ] fieldName , boolean needResolve ) { } public char [ ] getFileName ( ) { } public ReferenceBinding getMemberType ( char [ ] typeName ) { } public MethodBinding [ ] getMethods ( char [ ] selector ) { } public PackageBinding getPackage ( ) { } public boolean hasMemberTypes ( ) { } public TypeVariableBinding getTypeVariable ( char [ ] variableName ) { } public int hashCode ( ) { } public final boolean hasRestrictedAccess ( ) { } public boolean implementsInterface ( ReferenceBinding anInterface , boolean searchHierarchy ) { } boolean implementsMethod ( MethodBinding method ) { } public final boolean isAbstract ( ) { } public boolean isAnnotationType ( ) { } public final boolean isBinaryBinding ( ) { } public boolean isClass ( ) { } public boolean isHierarchyBeingConnected ( ) { } public boolean isCompatibleWith ( TypeBinding otherType ) { } public final boolean isDefault ( ) { } public final boolean isDeprecated ( ) { } public boolean isEnum ( ) { } public final boolean isFinal ( ) { } public boolean isInterface ( ) { } public final boolean isPrivate ( ) { } public final boolean isUsed ( ) { } public final boolean isProtected ( ) { } public final boolean isPublic ( ) { } public final boolean isStatic ( ) { } public final boolean isStrictfp ( ) { } public boolean isSuperclassOf ( ReferenceBinding otherType ) { } public boolean isUncheckedException ( boolean includeSupertype ) { } public final boolean isViewedAsDeprecated ( ) { } public ReferenceBinding [ ] memberTypes ( ) { } public MethodBinding [ ] methods ( ) { } public final ReferenceBinding outermostEnclosingType ( ) { } public char [ ] qualifiedSourceName ( ) { } public char [ ] readableName ( ) { } public char [ ] shortReadableName ( ) { } public char [ ] signature ( ) { } public char [ ] sourceName ( ) { } public ReferenceBinding superclass ( ) { }

Fix:
if ( ( itsInterfaces != ( NoSuperInterfaces ) ) && ( itsInterfaces != null ) ) {