Improve/fix r172 for the scenario of comparing null to null

diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
index bde4639..53562c0 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java
@@ -172,6 +172,14 @@
     public boolean isCallin() {
     	return (this.modifiers & ExtraCompilerModifiers.AccCallin) != 0 && !CharOperation.contains('$', this.selector);
     }
+    /** Has this method been (indirectly) copied from other? */
+    public boolean isCopiedFrom(MethodBinding other) {
+    	if (this.copyInheritanceSrc == null)
+    		return false;
+    	if (this.copyInheritanceSrc == other)
+    		return true;
+    	return this.copyInheritanceSrc == other.copyInheritanceSrc;
+    }
     /** Static role methods require synthetic arguments.
      *  Note: the actual values are produced by MessageSend.generateCode().
      */
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/copyinheritance/CopyInheritance.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/copyinheritance/CopyInheritance.java
index c17281e..31583f8 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/copyinheritance/CopyInheritance.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/copyinheritance/CopyInheritance.java
@@ -834,9 +834,8 @@
 						// implemented previously abstract method?
 						MethodBinding[] existingMethod = model.getBinding().methods();
 						for (int k = 0; k < existingMethod.length; k++) {
-							if (   (   existingMethod[k].copyInheritanceSrc == methods[j]
-							        || existingMethod[k].copyInheritanceSrc == methods[j].copyInheritanceSrc)
-								&& existingMethod[k].isAbstract() )
+							if (   existingMethod[k].isCopiedFrom(methods[j])
+								&& existingMethod[k].isAbstract())
 							{
 								// keep methods and update modifiers:
 								existingMethod[k].modifiers &= ~(AccAbstract|AccSemicolonBody);