Keep original interface method forwarding bridge

When using put we override the DexEncodedMethod which no longer
contains information about it being a library override.

Bug: 177207079
Change-Id: I99af0a8d15a311ae52d31e52350377c9d4810768
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 55837f3..0f4aa9c 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -3672,24 +3672,21 @@
     if (rootSet.noShrinking.containsMethod(singleTarget.getReference())) {
       return;
     }
-    if (methodToKeep != singleTarget) {
+    if (methodToKeep != singleTarget
+        && !syntheticInterfaceMethodBridges.containsKey(methodToKeep.getDefinition().method)) {
       assert null == methodToKeep.getHolder().lookupMethod(methodToKeep.getDefinition().method);
-      ProgramMethod old =
-          syntheticInterfaceMethodBridges.put(methodToKeep.getDefinition().method, methodToKeep);
-      if (old == null) {
-        if (singleTargetMethod.isLibraryMethodOverride().isTrue()) {
-          methodToKeep.getDefinition().setLibraryMethodOverride(OptionalBool.TRUE);
-        }
-        DexProgramClass singleTargetHolder = singleTarget.getHolder();
-        assert singleTargetHolder.isInterface();
-        markVirtualMethodAsReachable(
-            singleTargetMethod.method,
-            singleTargetHolder.isInterface(),
-            singleTarget,
-            graphReporter.fakeReportShouldNotBeUsed());
-        enqueueMarkMethodLiveAction(
-            singleTarget, singleTarget, graphReporter.fakeReportShouldNotBeUsed());
+      if (singleTargetMethod.isLibraryMethodOverride().isTrue()) {
+        methodToKeep.getDefinition().setLibraryMethodOverride(OptionalBool.TRUE);
       }
+      DexProgramClass singleTargetHolder = singleTarget.getHolder();
+      assert singleTargetHolder.isInterface();
+      markVirtualMethodAsReachable(
+          singleTargetMethod.method,
+          singleTargetHolder.isInterface(),
+          singleTarget,
+          graphReporter.fakeReportShouldNotBeUsed());
+      enqueueMarkMethodLiveAction(
+          singleTarget, singleTarget, graphReporter.fakeReportShouldNotBeUsed());
     }
     action.getAction().accept(builder);
   }