Simplify lenses using DefaultNonIdentityGraphLens

Bug: b/217665738
Change-Id: Idb1a26bf5f7bd8f079c7b0713d9ea8592f24f613
diff --git a/src/main/java/com/android/tools/r8/graph/lens/AppliedGraphLens.java b/src/main/java/com/android/tools/r8/graph/lens/AppliedGraphLens.java
index d5c02df..0e85802 100644
--- a/src/main/java/com/android/tools/r8/graph/lens/AppliedGraphLens.java
+++ b/src/main/java/com/android/tools/r8/graph/lens/AppliedGraphLens.java
@@ -32,7 +32,7 @@
  *
  * <p>The mappings from the original program to the generated program are kept, though.
  */
-public final class AppliedGraphLens extends NonIdentityGraphLens {
+public final class AppliedGraphLens extends DefaultNonIdentityGraphLens {
 
   private final MutableBidirectionalManyToOneRepresentativeMap<DexType, DexType> renamedTypeNames =
       BidirectionalManyToOneRepresentativeHashMap.newIdentityHashMap();
@@ -154,17 +154,6 @@
   }
 
   @Override
-  protected FieldLookupResult internalDescribeLookupField(FieldLookupResult previous) {
-    return previous;
-  }
-
-  @Override
-  public MethodLookupResult internalDescribeLookupMethod(
-      MethodLookupResult previous, DexMethod context) {
-    return previous;
-  }
-
-  @Override
   public DexMethod getPreviousMethodSignature(DexMethod method) {
     if (extraOriginalMethodSignatures.containsKey(method)) {
       return extraOriginalMethodSignatures.get(method);
diff --git a/src/main/java/com/android/tools/r8/graph/lens/ClearCodeRewritingGraphLens.java b/src/main/java/com/android/tools/r8/graph/lens/ClearCodeRewritingGraphLens.java
index 029ccdd..f63985a 100644
--- a/src/main/java/com/android/tools/r8/graph/lens/ClearCodeRewritingGraphLens.java
+++ b/src/main/java/com/android/tools/r8/graph/lens/ClearCodeRewritingGraphLens.java
@@ -8,34 +8,18 @@
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
 import com.android.tools.r8.ir.code.InvokeType;
 
 // This lens clears all code rewriting (lookup methods mimics identity lens behavior) but still
 // relies on the previous lens for names (getRenamed/Original methods).
-public class ClearCodeRewritingGraphLens extends NonIdentityGraphLens {
+public class ClearCodeRewritingGraphLens extends DefaultNonIdentityGraphLens {
 
   public ClearCodeRewritingGraphLens(DexItemFactory dexItemFactory, GraphLens previousLens) {
     super(dexItemFactory, previousLens);
   }
 
   @Override
-  public DexType getOriginalType(DexType type) {
-    return getPrevious().getOriginalType(type);
-  }
-
-  @Override
-  public Iterable<DexType> getOriginalTypes(DexType type) {
-    return getPrevious().getOriginalTypes(type);
-  }
-
-  @Override
-  public DexField getOriginalFieldSignature(DexField field) {
-    return getPrevious().getOriginalFieldSignature(field);
-  }
-
-  @Override
   public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
     return this != codeLens ? getPrevious().getRenamedFieldSignature(originalField) : originalField;
   }
@@ -59,11 +43,6 @@
   }
 
   @Override
-  public final DexType internalDescribeLookupClassType(DexType previous) {
-    return previous;
-  }
-
-  @Override
   protected FieldLookupResult internalLookupField(
       DexField reference, GraphLens codeLens, LookupFieldContinuation continuation) {
     return getIdentityLens().internalLookupField(reference, codeLens, continuation);
@@ -93,16 +72,6 @@
   }
 
   @Override
-  public DexMethod getPreviousMethodSignature(DexMethod method) {
-    return method;
-  }
-
-  @Override
-  public DexMethod getNextMethodSignature(DexMethod method) {
-    return method;
-  }
-
-  @Override
   public boolean isContextFreeForMethods() {
     return getIdentityLens().isContextFreeForMethods();
   }
diff --git a/src/main/java/com/android/tools/r8/optimize/FieldRebindingIdentityLens.java b/src/main/java/com/android/tools/r8/optimize/FieldRebindingIdentityLens.java
index 4e542e2..2e641f6 100644
--- a/src/main/java/com/android/tools/r8/optimize/FieldRebindingIdentityLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/FieldRebindingIdentityLens.java
@@ -6,13 +6,9 @@
 
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexItemFactory;
-import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
 import com.android.tools.r8.graph.lens.FieldLookupResult;
 import com.android.tools.r8.graph.lens.GraphLens;
-import com.android.tools.r8.graph.lens.MethodLookupResult;
-import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
 import java.util.IdentityHashMap;
 import java.util.Map;
 
@@ -22,7 +18,7 @@
  *
  * <p>TODO(b/157616970): All uses of this should be replaced by {@link MemberRebindingIdentityLens}.
  */
-public class FieldRebindingIdentityLens extends NonIdentityGraphLens {
+public class FieldRebindingIdentityLens extends DefaultNonIdentityGraphLens {
 
   private final Map<DexField, DexField> nonReboundFieldReferenceToDefinitionMap;
 
@@ -57,69 +53,6 @@
     return nonReboundFieldReferenceToDefinitionMap.getOrDefault(field, field);
   }
 
-  @Override
-  public DexType getOriginalType(DexType type) {
-    return getPrevious().getOriginalType(type);
-  }
-
-  @Override
-  public Iterable<DexType> getOriginalTypes(DexType type) {
-    return getPrevious().getOriginalTypes(type);
-  }
-
-  @Override
-  public DexField getOriginalFieldSignature(DexField field) {
-    return getPrevious().getOriginalFieldSignature(field);
-  }
-
-  @Override
-  public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
-    if (this == codeLens) {
-      return originalField;
-    }
-    return getPrevious().getRenamedFieldSignature(originalField);
-  }
-
-  @Override
-  public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLens applied) {
-    return getPrevious().getRenamedMethodSignature(originalMethod, applied);
-  }
-
-  @Override
-  public final DexType internalDescribeLookupClassType(DexType previous) {
-    return previous;
-  }
-
-  @Override
-  public MethodLookupResult internalDescribeLookupMethod(
-      MethodLookupResult previous, DexMethod context) {
-    return previous;
-  }
-
-  @Override
-  public DexMethod getPreviousMethodSignature(DexMethod method) {
-    return method;
-  }
-
-  @Override
-  public DexMethod getNextMethodSignature(DexMethod method) {
-    return method;
-  }
-
-  @Override
-  public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
-      DexMethod method, GraphLens codeLens) {
-    if (this == codeLens) {
-      return getIdentityLens().lookupPrototypeChangesForMethodDefinition(method, codeLens);
-    }
-    return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
-  }
-
-  @Override
-  public boolean isContextFreeForMethods() {
-    return getPrevious().isContextFreeForMethods();
-  }
-
   public static class Builder {
 
     private final Map<DexField, DexField> nonReboundFieldReferenceToDefinitionMap =
diff --git a/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLens.java b/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLens.java
index 6f99cd5..0c6a75a 100644
--- a/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLens.java
@@ -10,14 +10,13 @@
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.FieldAccessInfo;
 import com.android.tools.r8.graph.MethodResolutionResult.SingleResolutionResult;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
 import com.android.tools.r8.graph.lens.FieldLookupResult;
 import com.android.tools.r8.graph.lens.GraphLens;
 import com.android.tools.r8.graph.lens.MethodLookupResult;
 import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
 import java.util.IdentityHashMap;
 import java.util.Map;
 
@@ -26,7 +25,7 @@
  * both the non-rebound and rebound field and method references are available to all descendants of
  * this lens.
  */
-public class MemberRebindingIdentityLens extends NonIdentityGraphLens {
+public class MemberRebindingIdentityLens extends DefaultNonIdentityGraphLens {
 
   private final Map<DexField, DexField> nonReboundFieldReferenceToDefinitionMap;
   private final Map<DexMethod, DexMethod> nonReboundMethodReferenceToDefinitionMap;
@@ -98,66 +97,6 @@
   }
 
   @Override
-  public DexType getOriginalType(DexType type) {
-    return getPrevious().getOriginalType(type);
-  }
-
-  @Override
-  public Iterable<DexType> getOriginalTypes(DexType type) {
-    return getPrevious().getOriginalTypes(type);
-  }
-
-  @Override
-  public DexField getOriginalFieldSignature(DexField field) {
-    return getPrevious().getOriginalFieldSignature(field);
-  }
-
-  @Override
-  public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
-    if (this == codeLens) {
-      return originalField;
-    }
-    return getPrevious().getRenamedFieldSignature(originalField);
-  }
-
-  @Override
-  public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLens applied) {
-    if (this == applied) {
-      return originalMethod;
-    }
-    return getPrevious().getRenamedMethodSignature(originalMethod, applied);
-  }
-
-  @Override
-  public final DexType internalDescribeLookupClassType(DexType previous) {
-    return previous;
-  }
-
-  @Override
-  public DexMethod getPreviousMethodSignature(DexMethod method) {
-    return method;
-  }
-
-  @Override
-  public DexMethod getNextMethodSignature(DexMethod method) {
-    return method;
-  }
-
-  @Override
-  public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
-      DexMethod method, GraphLens codeLens) {
-    if (this == codeLens) {
-      return getIdentityLens().lookupPrototypeChangesForMethodDefinition(method, codeLens);
-    }
-    return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
-  }
-
-  @Override
-  public boolean isContextFreeForMethods() {
-    return getPrevious().isContextFreeForMethods();
-  }
-
-  @Override
   public boolean isMemberRebindingIdentityLens() {
     return true;
   }
diff --git a/src/main/java/com/android/tools/r8/optimize/MemberRebindingLens.java b/src/main/java/com/android/tools/r8/optimize/MemberRebindingLens.java
index 247940f..21796c5 100644
--- a/src/main/java/com/android/tools/r8/optimize/MemberRebindingLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/MemberRebindingLens.java
@@ -11,20 +11,19 @@
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.FieldAccessInfo;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
 import com.android.tools.r8.graph.lens.FieldLookupResult;
 import com.android.tools.r8.graph.lens.GraphLens;
 import com.android.tools.r8.graph.lens.MethodLookupResult;
 import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
 import com.android.tools.r8.ir.code.InvokeType;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import java.util.Collections;
 import java.util.IdentityHashMap;
 import java.util.Map;
 
-public class MemberRebindingLens extends NonIdentityGraphLens {
+public class MemberRebindingLens extends DefaultNonIdentityGraphLens {
 
   private final AppView<AppInfoWithLiveness> appView;
   private final Map<InvokeType, Map<DexMethod, DexMethod>> methodMaps;
@@ -55,55 +54,6 @@
   }
 
   @Override
-  public DexType getOriginalType(DexType type) {
-    return getPrevious().getOriginalType(type);
-  }
-
-  @Override
-  public Iterable<DexType> getOriginalTypes(DexType type) {
-    return getPrevious().getOriginalTypes(type);
-  }
-
-  @Override
-  public DexField getOriginalFieldSignature(DexField field) {
-    return getPrevious().getOriginalFieldSignature(field);
-  }
-
-  @Override
-  public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
-    if (this == codeLens) {
-      return originalField;
-    }
-    return getPrevious().getRenamedFieldSignature(originalField);
-  }
-
-  @Override
-  public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLens applied) {
-    return this != applied
-        ? getPrevious().getRenamedMethodSignature(originalMethod, applied)
-        : originalMethod;
-  }
-
-  @Override
-  public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
-      DexMethod method, GraphLens codeLens) {
-    if (this == codeLens) {
-      return getIdentityLens().lookupPrototypeChangesForMethodDefinition(method, codeLens);
-    }
-    return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
-  }
-
-  @Override
-  public boolean isContextFreeForMethods() {
-    return getPrevious().isContextFreeForMethods();
-  }
-
-  @Override
-  protected DexType internalDescribeLookupClassType(DexType previous) {
-    return previous;
-  }
-
-  @Override
   protected FieldLookupResult internalDescribeLookupField(FieldLookupResult previous) {
     assert !previous.hasReadCastType();
     assert !previous.hasReboundReference();
@@ -135,16 +85,6 @@
         .build();
   }
 
-  @Override
-  public DexMethod getPreviousMethodSignature(DexMethod method) {
-    return method;
-  }
-
-  @Override
-  public DexMethod getNextMethodSignature(DexMethod method) {
-    return method;
-  }
-
   public FieldRebindingIdentityLens toRewrittenFieldRebindingLens(
       AppView<? extends AppInfoWithClassHierarchy> appView,
       GraphLens lens,
diff --git a/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoistingLens.java b/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoistingLens.java
index 2c3af38..69f9248 100644
--- a/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoistingLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/bridgehoisting/BridgeHoistingLens.java
@@ -5,18 +5,13 @@
 package com.android.tools.r8.optimize.bridgehoisting;
 
 import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.lens.FieldLookupResult;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
 import com.android.tools.r8.graph.lens.GraphLens;
-import com.android.tools.r8.graph.lens.MethodLookupResult;
-import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
 import com.android.tools.r8.utils.collections.BidirectionalManyToOneMap;
 import java.util.Set;
 
-class BridgeHoistingLens extends NonIdentityGraphLens {
+class BridgeHoistingLens extends DefaultNonIdentityGraphLens {
 
   // Mapping from non-hoisted bridge methods to hoisted bridge methods.
   private final BidirectionalManyToOneMap<DexMethod, DexMethod> bridgeToHoistedBridgeMap;
@@ -46,60 +41,7 @@
   }
 
   @Override
-  public DexType getOriginalType(DexType type) {
-    return getPrevious().getOriginalType(type);
-  }
-
-  @Override
-  public Iterable<DexType> getOriginalTypes(DexType type) {
-    return getPrevious().getOriginalTypes(type);
-  }
-
-  @Override
-  public DexField getOriginalFieldSignature(DexField field) {
-    return getPrevious().getOriginalFieldSignature(field);
-  }
-
-  @Override
-  public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
-    if (this == codeLens) {
-      return originalField;
-    }
-    return getPrevious().getRenamedFieldSignature(originalField);
-  }
-
-  @Override
-  public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
-      DexMethod method, GraphLens codeLens) {
-    if (this == codeLens) {
-      return getIdentityLens().lookupPrototypeChangesForMethodDefinition(method, codeLens);
-    }
-    return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
-  }
-
-  @Override
-  public boolean isContextFreeForMethods() {
-    return getPrevious().isContextFreeForMethods();
-  }
-
-  @Override
   public boolean hasCodeRewritings() {
     return getPrevious().hasCodeRewritings();
   }
-
-  @Override
-  protected FieldLookupResult internalDescribeLookupField(FieldLookupResult previous) {
-    return previous;
-  }
-
-  @Override
-  protected MethodLookupResult internalDescribeLookupMethod(
-      MethodLookupResult previous, DexMethod context) {
-    return previous;
-  }
-
-  @Override
-  protected DexType internalDescribeLookupClassType(DexType previous) {
-    return previous;
-  }
 }
diff --git a/src/main/java/com/android/tools/r8/optimize/redundantbridgeremoval/RedundantBridgeRemovalLens.java b/src/main/java/com/android/tools/r8/optimize/redundantbridgeremoval/RedundantBridgeRemovalLens.java
index f7fc31e..427b37e 100644
--- a/src/main/java/com/android/tools/r8/optimize/redundantbridgeremoval/RedundantBridgeRemovalLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/redundantbridgeremoval/RedundantBridgeRemovalLens.java
@@ -6,22 +6,19 @@
 
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexClassAndMethod;
-import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexMethod;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.ProgramMethod;
-import com.android.tools.r8.graph.lens.FieldLookupResult;
+import com.android.tools.r8.graph.lens.DefaultNonIdentityGraphLens;
 import com.android.tools.r8.graph.lens.GraphLens;
 import com.android.tools.r8.graph.lens.MethodLookupResult;
-import com.android.tools.r8.graph.lens.NonIdentityGraphLens;
-import com.android.tools.r8.graph.proto.RewrittenPrototypeDescription;
 import com.android.tools.r8.ir.code.InvokeType;
 import com.google.common.collect.Sets;
 import java.util.IdentityHashMap;
 import java.util.Map;
 import java.util.Set;
 
-public class RedundantBridgeRemovalLens extends NonIdentityGraphLens {
+public class RedundantBridgeRemovalLens extends DefaultNonIdentityGraphLens {
 
   private final Set<DexType> interfaces;
   private final Map<DexMethod, DexMethod> methodMap;
@@ -33,26 +30,6 @@
     this.methodMap = methodMap;
   }
 
-  // Fields.
-
-  @Override
-  public DexField getOriginalFieldSignature(DexField field) {
-    return getPrevious().getOriginalFieldSignature(field);
-  }
-
-  @Override
-  public DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens) {
-    if (this == codeLens) {
-      return originalField;
-    }
-    return getPrevious().getRenamedFieldSignature(originalField, codeLens);
-  }
-
-  @Override
-  protected FieldLookupResult internalDescribeLookupField(FieldLookupResult previous) {
-    return previous;
-  }
-
   // Methods.
 
   @Override
@@ -66,16 +43,6 @@
   }
 
   @Override
-  public DexMethod getNextMethodSignature(DexMethod method) {
-    return method;
-  }
-
-  @Override
-  public DexMethod getPreviousMethodSignature(DexMethod method) {
-    return method;
-  }
-
-  @Override
   protected MethodLookupResult internalDescribeLookupMethod(
       MethodLookupResult previous, DexMethod context) {
     if (methodMap.containsKey(previous.getReference())) {
@@ -100,39 +67,6 @@
     return previous;
   }
 
-  @Override
-  public RewrittenPrototypeDescription lookupPrototypeChangesForMethodDefinition(
-      DexMethod method, GraphLens codeLens) {
-    if (this == codeLens) {
-      return RewrittenPrototypeDescription.none();
-    }
-    return getPrevious().lookupPrototypeChangesForMethodDefinition(method, codeLens);
-  }
-
-  // Types.
-
-  @Override
-  public DexType getOriginalType(DexType type) {
-    return getPrevious().getOriginalType(type);
-  }
-
-  @Override
-  public Iterable<DexType> getOriginalTypes(DexType type) {
-    return getPrevious().getOriginalTypes(type);
-  }
-
-  @Override
-  protected DexType internalDescribeLookupClassType(DexType previous) {
-    return previous;
-  }
-
-  // Misc.
-
-  @Override
-  public boolean isContextFreeForMethods() {
-    return getPrevious().isContextFreeForMethods();
-  }
-
   public static class Builder {
 
     private final Set<DexType> interfaces = Sets.newIdentityHashSet();