Buggy code:
public class SourceTypeBinding extends ReferenceBinding { public ReferenceBinding superclass ; public ReferenceBinding [ ] superInterfaces ; public FieldBinding [ ] fields ; public MethodBinding [ ] methods ; public ReferenceBinding [ ] memberTypes ; public TypeVariableBinding [ ] typeVariables ; public ClassScope scope ; public static final int METHOD_EMUL = 0 ; public static final int FIELD_EMUL = 1 ; public static final int CLASS_LITERAL_EMUL = 2 ; public static final int RECEIVER_TYPE_EMUL = 3 ; HashMap [ ] synthetics ; char [ ] genericReferenceTypeSignature ; public SourceTypeBinding ( char [ ] [ ] compoundName , PackageBinding fPackage , ClassScope scope ) { } private void addDefaultAbstractMethod ( MethodBinding abstractMethod ) { } public void addDefaultAbstractMethods ( ) { } 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 , boolean isSuperAccess ) { } public SyntheticAccessMethodBinding addSyntheticBridgeMethod ( MethodBinding inheritedMethodToBridge , MethodBinding localTargetMethod ) { } void faultInTypesForFieldsAndMethods ( ) { } public FieldBinding [ ] fields ( ) { } public char [ ] genericTypeSignature ( ) { } public char [ ] genericSignature ( ) { } public MethodBinding [ ] getDefaultAbstractMethods ( ) { } public MethodBinding getExactConstructor ( TypeBinding [ ] argumentTypes ) { } public MethodBinding getExactMethod ( char [ ] selector , TypeBinding [ ] argumentTypes ) { } public FieldBinding getField ( char [ ] fieldName , boolean needResolve ) { } public MethodBinding [ ] getMethods ( char [ ] selector ) { } public FieldBinding getSyntheticField ( LocalVariableBinding actualOuterLocalVariable ) { } public SyntheticAccessMethodBinding getSyntheticBridgeMethod ( MethodBinding inheritedMethodToBridge ) { } public boolean isEquivalentTo ( TypeBinding otherType ) { } public boolean isGenericType ( ) { } public ReferenceBinding [ ] memberTypes ( ) { } public FieldBinding getUpdatedFieldBinding ( FieldBinding targetField , ReferenceBinding newDeclaringClass ) { } public MethodBinding getUpdatedMethodBinding ( MethodBinding targetMethod , ReferenceBinding newDeclaringClass ) { } public boolean hasMemberTypes ( ) { } 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 ( ) { } public TypeVariableBinding [ ] typeVariables ( ) { } void verifyMethods ( MethodVerifier verifier ) { } public FieldBinding getSyntheticField ( ReferenceBinding targetEnclosingType , boolean onlyExactMatch ) { if ( ( ( synthetics ) == null ) || ( ( synthetics [ SourceTypeBinding . FIELD_EMUL ] ) == null ) ) return null ; FieldBinding field = ( ( FieldBinding ) ( synthetics [ SourceTypeBinding . FIELD_EMUL ] . get ( targetEnclosingType ) ) ) ; if ( field != null ) return field ; if ( ! onlyExactMatch ) { Iterator accessFields = synthetics [ SourceTypeBinding . FIELD_EMUL ] . values ( ) . iterator ( ) ; while ( accessFields . hasNext ( ) ) { field = ( ( FieldBinding ) ( accessFields . next ( ) ) ) ; <START_BUG> if ( ( CharOperation . prefixEquals ( EnclosingInstancePrefix , field . name ) ) && ( targetEnclosingType . isSuperclassOf ( ( ( ReferenceBinding ) ( field . type ) ) ) ) ) <END_BUG> return field ; } } return null ; } }

Fix:
if ( ( CharOperation . prefixEquals ( EnclosingInstancePrefix , field . name ) ) && ( ( ( ( ReferenceBinding ) ( field . type ) ) . findSuperTypeErasingTo ( targetEnclosingType ) ) != null ) )