Buggy code:
public class SourceTypeBinding extends ReferenceBinding { public ReferenceBinding superclass ; public ReferenceBinding [ ] superInterfaces ; public FieldBinding [ ] fields ; public MethodBinding [ ] methods ; public ReferenceBinding [ ] memberTypes ; public ClassScope scope ; public static final int METHOD = 0 ; public static final int FIELD = 1 ; public static final int CLASS_LITERAL = 2 ; public static final int CHANGED_DECLARING_CLASS = 3 ; Hashtable [ ] synthetics ; protected SourceTypeBinding ( ) { } public SourceTypeBinding ( char [ ] [ ] compoundName , PackageBinding fPackage , ClassScope scope ) { } private void addDefaultAbstractMethod ( MethodBinding abstractMethod ) { } public void addDefaultAbstractMethods ( ) { if ( ( ( tagBits ) & ( KnowsDefaultAbstractMethods ) ) != 0 ) return ; tagBits |= KnowsDefaultAbstractMethods ; if ( ( isClass ( ) ) && ( isAbstract ( ) ) ) { <START_BUG> if ( ( fPackage . environment . options . complianceLevel ) >= ( JDK1_4 ) ) <END_BUG> return ; ReferenceBinding [ ] [ ] interfacesToVisit = new ReferenceBinding [ 5 ] [ ] ; int lastPosition = 0 ; interfacesToVisit [ lastPosition ] = superInterfaces ( ) ; for ( int i = 0 ; i <= lastPosition ; i ++ ) { ReferenceBinding [ ] interfaces = interfacesToVisit [ i ] ; for ( int j = 0 , length = interfaces . length ; j < length ; j ++ ) { ReferenceBinding superType = interfaces [ j ] ; if ( superType . isValidBinding ( ) ) { MethodBinding [ ] methods = superType . methods ( ) ; for ( int m = methods . length ; ( -- m ) >= 0 ; ) { MethodBinding method = methods [ m ] ; if ( ! ( implementsMethod ( method ) ) ) addDefaultAbstractMethod ( method ) ; } ReferenceBinding [ ] itsInterfaces = superType . superInterfaces ( ) ; if ( itsInterfaces != ( NoSuperInterfaces ) ) { if ( ( ++ lastPosition ) == ( interfacesToVisit . length ) ) System . arraycopy ( interfacesToVisit , 0 , ( interfacesToVisit = new ReferenceBinding [ lastPosition * 2 ] [ ] ) , 0 , lastPosition ) ; interfacesToVisit [ lastPosition ] = itsInterfaces ; } } } } } } public FieldBinding addSyntheticField ( LocalVariableBinding actualOuterLocalVariable ) { } public FieldBinding addSyntheticField ( ReferenceBinding enclosingType ) { } public FieldBinding addSyntheticField ( TypeBinding targetType , BlockScope blockScope ) { } public FieldBinding addSyntheticField ( AssertStatement assertStatement , BlockScope blockScope ) { } public SyntheticAccessMethodBinding addSyntheticMethod ( FieldBinding targetField , boolean isReadAccess ) { } public SyntheticAccessMethodBinding addSyntheticMethod ( MethodBinding targetMethod ) { } public FieldBinding [ ] availableFields ( ) { } public MethodBinding [ ] availableMethods ( ) { } void faultInTypesForFieldsAndMethods ( ) { } public FieldBinding [ ] fields ( ) { } public MethodBinding [ ] getDefaultAbstractMethods ( ) { } public MethodBinding getExactConstructor ( TypeBinding [ ] argumentTypes ) { } public MethodBinding getExactMethod ( char [ ] selector , TypeBinding [ ] argumentTypes ) { } public FieldBinding getField ( char [ ] fieldName ) { } public MethodBinding [ ] getMethods ( char [ ] selector ) { } public FieldBinding getSyntheticField ( LocalVariableBinding actualOuterLocalVariable ) { } public ReferenceBinding [ ] memberTypes ( ) { } public FieldBinding getUpdatedFieldBinding ( FieldBinding targetField , ReferenceBinding newDeclaringClass ) { } public MethodBinding getUpdatedMethodBinding ( MethodBinding targetMethod , ReferenceBinding newDeclaringClass ) { } public MethodBinding [ ] methods ( ) { } private FieldBinding resolveTypeFor ( FieldBinding field ) { } private MethodBinding resolveTypesFor ( MethodBinding method ) { } public final int sourceEnd ( ) { } public final int sourceStart ( ) { } public ReferenceBinding superclass ( ) { } public ReferenceBinding [ ] superInterfaces ( ) { } public SyntheticAccessMethodBinding [ ] syntheticAccessMethods ( ) { } public FieldBinding [ ] syntheticFields ( ) { } public String toString ( ) { } void verifyMethods ( MethodVerifier verifier ) { } public FieldBinding getSyntheticField ( ReferenceBinding targetEnclosingType , BlockScope scope , boolean onlyExactMatch ) { } }

Fix:
if ( ( fPackage . environment . options . targetJDK ) >= ( JDK1_2 ) )