Add annotation lens to annotation rewriter

Change-Id: Ie111b351f5bf3b3e80a2c20c850ce696de8e9898
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/TreeFixer.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/TreeFixer.java
index 55aad86d..a12baa2 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/TreeFixer.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/TreeFixer.java
@@ -139,7 +139,7 @@
       for (DexProgramClass root : subtypingForrest.getProgramRoots()) {
         subtypingForrest.traverseNodeDepthFirst(root, HashBiMap.create(), this::fixupProgramClass);
       }
-      new AnnotationFixer(lens).run(appView.appInfo().classes());
+      new AnnotationFixer(lens, appView.graphLens()).run(appView.appInfo().classes());
     }
     return lens;
   }
diff --git a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
index 00e55a7..cffb1cf 100644
--- a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
+++ b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
@@ -151,7 +151,7 @@
             repackagingTreeFixer.fixupClasses(appView.appInfo().classesWithDeterministicOrder()));
     appBuilder.replaceProgramClasses(newProgramClasses);
     RepackagingLens lens = lensBuilder.build(appView, packageMappings);
-    new AnnotationFixer(lens).run(appBuilder.getProgramClasses());
+    new AnnotationFixer(lens, appView.graphLens()).run(appBuilder.getProgramClasses());
     return lens;
   }
 
diff --git a/src/main/java/com/android/tools/r8/shaking/AnnotationFixer.java b/src/main/java/com/android/tools/r8/shaking/AnnotationFixer.java
index c1a8677..dc9c163 100644
--- a/src/main/java/com/android/tools/r8/shaking/AnnotationFixer.java
+++ b/src/main/java/com/android/tools/r8/shaking/AnnotationFixer.java
@@ -26,9 +26,15 @@
 public class AnnotationFixer {
 
   private final GraphLens lens;
+  private final GraphLens annotationLens;
 
-  public AnnotationFixer(GraphLens lens) {
+  public AnnotationFixer(GraphLens lens, GraphLens annotationLens) {
     this.lens = lens;
+    this.annotationLens = annotationLens;
+  }
+
+  private DexType lookupType(DexType type) {
+    return lens.lookupType(type, annotationLens);
   }
 
   public void run(Iterable<DexProgramClass> classes) {
@@ -54,7 +60,7 @@
 
   private DexEncodedAnnotation rewriteEncodedAnnotation(DexEncodedAnnotation original) {
     DexEncodedAnnotation rewritten =
-        original.rewrite(lens::lookupType, this::rewriteAnnotationElement);
+        original.rewrite(this::lookupType, this::rewriteAnnotationElement);
     assert rewritten != null;
     return rewritten;
   }
@@ -96,7 +102,7 @@
       }
     } else if (value.isDexValueEnum()) {
       DexField original = value.asDexValueEnum().value;
-      DexField rewritten = lens.lookupField(original);
+      DexField rewritten = lens.lookupField(original, annotationLens);
       if (original != rewritten) {
         return new DexValueEnum(rewritten);
       }
@@ -112,7 +118,7 @@
       // If we identified references in the string it would be a DexItemBasedValueString.
     } else if (value.isDexValueType()) {
       DexType originalType = value.asDexValueType().value;
-      DexType rewrittenType = lens.lookupType(originalType);
+      DexType rewrittenType = lookupType(originalType);
       if (rewrittenType != originalType) {
         return new DexValueType(rewrittenType);
       }
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index 91c86e3..2397d02 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -1690,7 +1690,7 @@
       }
       VerticalClassMergerGraphLens lens = lensBuilder.build(appView, mergedClasses);
       if (lens != null) {
-        new AnnotationFixer(lens).run(appView.appInfo().classes());
+        new AnnotationFixer(lens, appView.graphLens()).run(appView.appInfo().classes());
       }
       return lens;
     }