Buggy code:
public class FieldReference extends Reference implements InvocationSite { public Expression receiver ; public char [ ] token ; public FieldBinding binding ; protected FieldBinding codegenBinding ; public MethodBinding [ ] syntheticAccessors ; public static final int READ = 0 ; public static final int WRITE = 1 ; public long nameSourcePosition ; public TypeBinding receiverType ; public TypeBinding genericCast ; public FieldReference ( char [ ] source , long pos ) { } public FlowInfo analyseAssignment ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo , Assignment assignment , boolean isCompound ) { } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo ) { } public FlowInfo analyseCode ( BlockScope currentScope , FlowContext flowContext , FlowInfo flowInfo , boolean valueRequired ) { } public void computeConversion ( Scope scope , TypeBinding runtimeTimeType , TypeBinding compileTimeType ) { } public FieldBinding fieldBinding ( ) { } public void generateAssignment ( BlockScope currentScope , CodeStream codeStream , Assignment assignment , boolean valueRequired ) { } public void generateCode ( BlockScope currentScope , CodeStream codeStream , boolean valueRequired ) { } public void generateCompoundAssignment ( BlockScope currentScope , CodeStream codeStream , Expression expression , int operator , int assignmentImplicitConversion , boolean valueRequired ) { } public void generatePostIncrement ( BlockScope currentScope , CodeStream codeStream , CompoundAssignment postIncrement , boolean valueRequired ) { } public TypeBinding [ ] genericTypeArguments ( ) { } public static final Constant getConstantFor ( FieldBinding binding , Reference reference , boolean isImplicit , Scope referenceScope ) { } public boolean isSuperAccess ( ) { } public boolean isTypeAccess ( ) { } public void manageSyntheticAccessIfNecessary ( BlockScope currentScope , FlowInfo flowInfo , boolean isReadAccess ) { if ( ! ( flowInfo . isReachable ( ) ) ) return ; this . codegenBinding = this . binding . original ( ) ; if ( binding . isPrivate ( ) ) { if ( ( ( currentScope . enclosingSourceType ( ) ) != ( this . codegenBinding . declaringClass ) ) && ( ! ( binding . isConstantValue ( ) ) ) ) { if ( ( syntheticAccessors ) == null ) syntheticAccessors = new MethodBinding [ 2 ] ; syntheticAccessors [ ( isReadAccess ? FieldReference . READ : FieldReference . WRITE ) ] = ( ( SourceTypeBinding ) ( this . codegenBinding . declaringClass ) ) . addSyntheticMethod ( this . codegenBinding , isReadAccess ) ; currentScope . problemReporter ( ) . needToEmulateFieldAccess ( this . codegenBinding , this , isReadAccess ) ; return ; } } else if ( ( receiver ) instanceof QualifiedSuperReference ) { SourceTypeBinding destinationType = ( ( SourceTypeBinding ) ( ( ( QualifiedSuperReference ) ( receiver ) ) . currentCompatibleType ) ) ; if ( ( syntheticAccessors ) == null ) syntheticAccessors = new MethodBinding [ 2 ] ; syntheticAccessors [ ( isReadAccess ? FieldReference . READ : FieldReference . WRITE ) ] = destinationType . addSyntheticMethod ( this . codegenBinding , isReadAccess ) ; currentScope . problemReporter ( ) . needToEmulateFieldAccess ( this . codegenBinding , this , isReadAccess ) ; return ; } else if ( binding . isProtected ( ) ) { SourceTypeBinding enclosingSourceType ; if ( ( ( ( bits ) & ( ASTNode . DepthMASK ) ) != 0 ) && ( ( binding . declaringClass . getPackage ( ) ) != ( ( enclosingSourceType = currentScope . enclosingSourceType ( ) ) . getPackage ( ) ) ) ) { SourceTypeBinding currentCompatibleType = ( ( SourceTypeBinding ) ( enclosingSourceType . enclosingTypeAt ( ( ( ( bits ) & ( ASTNode . DepthMASK ) ) > > ( ASTNode . DepthSHIFT ) ) ) ) ) ; if ( ( syntheticAccessors ) == null ) syntheticAccessors = new MethodBinding [ 2 ] ; syntheticAccessors [ ( isReadAccess ? FieldReference . READ : FieldReference . WRITE ) ] = currentCompatibleType . addSyntheticMethod ( this . codegenBinding , isReadAccess ) ; currentScope . problemReporter ( ) . needToEmulateFieldAccess ( this . codegenBinding , this , isReadAccess ) ; return ; } } if ( ( ( ( ( this . binding . declaringClass ) != ( this . receiverType ) ) && ( ! ( this . receiverType . isArrayType ( ) ) ) ) && ( ( this . binding . declaringClass ) != null ) ) && ( ! ( this . binding . isConstantValue ( ) ) ) ) { CompilerOptions options = currentScope . compilerOptions ( ) ; <START_BUG> if ( ( ( ( ( options . targetJDK ) >= ( ClassFileConstants . JDK1_2 ) ) && ( ( ( ( options . complianceLevel ) >= ( ClassFileConstants . JDK1_4 ) ) || ( ! ( receiver . isImplicitThis ( ) ) ) ) || ( ! ( this . codegenBinding . isStatic ( ) ) ) ) ) && ( ( this . binding . declaringClass . id ) != ( TypeIds . T_JavaLangObject ) ) ) || ( ! ( this . binding . declaringClass . canBeSeenBy ( currentScope ) ) ) ) { <END_BUG> this . codegenBinding = currentScope . enclosingSourceType ( ) . getUpdatedFieldBinding ( this . codegenBinding , ( ( ReferenceBinding ) ( this . receiverType . erasure ( ) ) ) ) ; } } } public Constant optimizedBooleanConstant ( ) { } public StringBuffer printExpression ( int indent , StringBuffer output ) { } public TypeBinding resolveType ( BlockScope scope ) { } public void setActualReceiverType ( ReferenceBinding receiverType ) { } public void setDepth ( int depth ) { } public void setFieldIndex ( int index ) { } public void traverse ( ASTVisitor visitor , BlockScope scope ) { } }

Fix:
if ( ( ( ( ( options . targetJDK ) >= ( ClassFileConstants . JDK1_2 ) ) && ( ( ( options . complianceLevel ) >= ( ClassFileConstants . JDK1_4 ) ) || ( ! ( ( receiver . isImplicitThis ( ) ) && ( this . codegenBinding . isStatic ( ) ) ) ) ) ) && ( ( this . binding . declaringClass . id ) != ( TypeIds . T_JavaLangObject ) ) ) || ( ! ( this . binding . declaringClass . canBeSeenBy ( currentScope ) ) ) ) {