// for runtime compatibility on 1.2 VMs : change the declaring class of the binding
// NOTE: from target 1.2 on, field's declaring class is touched if any different from receiver type
// and not from Object or implicit static field access.
if (fieldBinding.declaringClass != this.delegateThis.type
&& fieldBinding.declaringClass != null // array.length
&& fieldBinding.constant() == Constant.NotAConstant) {
CompilerOptions options = currentScope.compilerOptions();
if ((options.targetJDK >= ClassFileConstants.JDK1_2
&& (options.complianceLevel >= ClassFileConstants.JDK1_4 || !fieldBinding.isStatic())
&& fieldBinding.declaringClass.id != T_JavaLangObject) // no change for Object fields
|| !fieldBinding.declaringClass.canBeSeenBy(currentScope)) {