Report single target as lookup disregarding implementation method
diff --git a/src/main/java/com/android/tools/r8/graph/LookupResult.java b/src/main/java/com/android/tools/r8/graph/LookupResult.java
index e5c9381..9351618 100644
--- a/src/main/java/com/android/tools/r8/graph/LookupResult.java
+++ b/src/main/java/com/android/tools/r8/graph/LookupResult.java
@@ -118,26 +118,18 @@
       state = LookupResultCollectionState.Incomplete;
     }
 
-    public DexEncodedMethod getSingleLookupTarget() {
-      if (isIncomplete() || methodTargets.size() > 1) {
+    public LookupTarget getSingleLookupTarget() {
+      if (isIncomplete() || methodTargets.size() + lambdaTargets.size() > 1) {
         return null;
       }
       if (methodTargets.size() == 0 && lambdaTargets.size() == 0) {
         return null;
       }
-      DexEncodedMethod singleTarget = DexEncodedMethod.SENTINEL;
       if (methodTargets.size() == 1) {
-        singleTarget = methodTargets.keySet().iterator().next();
+        return methodTargets.values().iterator().next();
+      } else {
+        return lambdaTargets.get(0);
       }
-      for (LookupLambdaTarget lambdaTarget : lambdaTargets) {
-        DexEncodedMethod implementationMethod = lambdaTarget.getImplementationMethod().getMethod();
-        if (singleTarget != DexEncodedMethod.SENTINEL && implementationMethod != singleTarget) {
-          return null;
-        }
-        singleTarget = implementationMethod;
-      }
-      assert singleTarget != DexEncodedMethod.SENTINEL;
-      return singleTarget;
     }
 
     public enum LookupResultCollectionState {
diff --git a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
index 4234043..087f88c 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
@@ -31,6 +31,7 @@
 import com.android.tools.r8.graph.GraphLense.NestedGraphLense;
 import com.android.tools.r8.graph.InstantiatedSubTypeInfo;
 import com.android.tools.r8.graph.LookupResult.LookupResultSuccess;
+import com.android.tools.r8.graph.LookupTarget;
 import com.android.tools.r8.graph.ObjectAllocationInfoCollection;
 import com.android.tools.r8.graph.ObjectAllocationInfoCollectionImpl;
 import com.android.tools.r8.graph.PresortedComparable;
@@ -1229,9 +1230,13 @@
       return null;
     }
 
-    DexEncodedMethod singleTargetMethod = lookupResult.getSingleLookupTarget();
-    method.setSingleVirtualMethodCache(refinedReceiverType, singleTargetMethod);
-    return singleTargetMethod;
+    LookupTarget singleTarget = lookupResult.getSingleLookupTarget();
+    DexEncodedMethod singleMethodTarget = null;
+    if (singleTarget.isMethodTarget()) {
+      singleMethodTarget = singleTarget.asMethodTarget().getMethod();
+    }
+    method.setSingleVirtualMethodCache(refinedReceiverType, singleMethodTarget);
+    return singleMethodTarget;
   }
 
   public AppInfoWithLiveness withSwitchMaps(Map<DexField, Int2ReferenceMap<DexField>> switchMaps) {