Check equality on referenced items excluding context in synthetic rewrite.

Change-Id: I5a8955dfd4e03debbaaa09960e71df3546c93eae
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
index 6a5e9a3..b200c0a 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
@@ -309,12 +309,12 @@
     for (SyntheticReference reference : nonLecacySyntheticItems.values()) {
       SyntheticReference rewritten = reference.rewrite(lens);
       // If the reference has been rewritten the compiler has changed it and we drop it from the
-      // set of synthetics.
-      if (reference == rewritten) {
+      // set of synthetics. The context may or may not have changed.
+      if (reference.getReference() == rewritten.getReference()) {
         rewrittenItems.put(rewritten.getHolder(), rewritten);
       } else {
-        // If the item is rewritten, it should be moved to another holder as the synthetic holder
-        // is no longer part of the synthetic collection.
+        // If the referenced item is rewritten, it should be moved to another holder as the
+        // synthetic holder is no longer part of the synthetic collection.
         assert reference.getHolder() != rewritten.getHolder();
       }
     }
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodReference.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodReference.java
index 571331b..5470d53 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodReference.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodReference.java
@@ -5,6 +5,7 @@
 
 import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexMethod;
+import com.android.tools.r8.graph.DexReference;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.GraphLens.NonIdentityGraphLens;
 import com.android.tools.r8.graph.ProgramMethod;
@@ -24,6 +25,11 @@
   }
 
   @Override
+  DexReference getReference() {
+    return method;
+  }
+
+  @Override
   DexType getHolder() {
     return method.holder;
   }
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticReference.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticReference.java
index 408324e..6618378 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticReference.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticReference.java
@@ -4,6 +4,7 @@
 package com.android.tools.r8.synthesis;
 
 import com.android.tools.r8.graph.DexClass;
+import com.android.tools.r8.graph.DexReference;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.GraphLens.NonIdentityGraphLens;
 import java.util.function.Function;
@@ -22,6 +23,8 @@
 
   abstract SyntheticDefinition lookupDefinition(Function<DexType, DexClass> definitions);
 
+  abstract DexReference getReference();
+
   final SynthesizingContext getContext() {
     return context;
   }