[Retrace] Ensure we keep kept interface in retrace jar

Change-Id: Ifb424f2cffc783b34555850f5e06e3bd96a27259
diff --git a/src/main/java/com/android/tools/r8/references/ArrayReference.java b/src/main/java/com/android/tools/r8/references/ArrayReference.java
index 919bbd7..a54d694 100644
--- a/src/main/java/com/android/tools/r8/references/ArrayReference.java
+++ b/src/main/java/com/android/tools/r8/references/ArrayReference.java
@@ -6,10 +6,12 @@
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
 import java.util.Objects;
 
 /** Reference to an array type. */
 @Keep
+@KeepForRetraceApi
 public final class ArrayReference implements TypeReference {
 
   private final int dimensions;
diff --git a/src/main/java/com/android/tools/r8/references/ClassReference.java b/src/main/java/com/android/tools/r8/references/ClassReference.java
index 3e30319..b8da051 100644
--- a/src/main/java/com/android/tools/r8/references/ClassReference.java
+++ b/src/main/java/com/android/tools/r8/references/ClassReference.java
@@ -5,9 +5,11 @@
 
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
 
 /** Reference to a class type or interface type. */
 @Keep
+@KeepForRetraceApi
 public final class ClassReference implements TypeReference {
 
   private final String descriptor;
diff --git a/src/main/java/com/android/tools/r8/references/FieldReference.java b/src/main/java/com/android/tools/r8/references/FieldReference.java
index d4d74fd..089ee84 100644
--- a/src/main/java/com/android/tools/r8/references/FieldReference.java
+++ b/src/main/java/com/android/tools/r8/references/FieldReference.java
@@ -4,6 +4,7 @@
 package com.android.tools.r8.references;
 
 import com.android.tools.r8.Keep;
+import com.android.tools.r8.utils.KeepForRetraceApi;
 import java.util.Objects;
 
 /**
@@ -13,6 +14,7 @@
  * type of the field.
  */
 @Keep
+@KeepForRetraceApi
 public final class FieldReference {
   private final ClassReference holderClass;
   private final String fieldName;
diff --git a/src/main/java/com/android/tools/r8/references/MethodReference.java b/src/main/java/com/android/tools/r8/references/MethodReference.java
index fc8f183..2624dde 100644
--- a/src/main/java/com/android/tools/r8/references/MethodReference.java
+++ b/src/main/java/com/android/tools/r8/references/MethodReference.java
@@ -4,6 +4,7 @@
 package com.android.tools.r8.references;
 
 import com.android.tools.r8.Keep;
+import com.android.tools.r8.utils.KeepForRetraceApi;
 import com.android.tools.r8.utils.ListUtils;
 import com.android.tools.r8.utils.StringUtils;
 import com.android.tools.r8.utils.StringUtils.BraceType;
@@ -17,6 +18,7 @@
  * full list of formal parameters.
  */
 @Keep
+@KeepForRetraceApi
 public final class MethodReference {
   private final ClassReference holderClass;
   private final String methodName;
diff --git a/src/main/java/com/android/tools/r8/references/PackageReference.java b/src/main/java/com/android/tools/r8/references/PackageReference.java
index b2474fe..b964e6d 100644
--- a/src/main/java/com/android/tools/r8/references/PackageReference.java
+++ b/src/main/java/com/android/tools/r8/references/PackageReference.java
@@ -6,10 +6,12 @@
 
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
 import java.util.Objects;
 
 /** Reference to a package. */
 @Keep
+@KeepForRetraceApi
 public class PackageReference {
 
   private final String packageName;
diff --git a/src/main/java/com/android/tools/r8/references/PrimitiveReference.java b/src/main/java/com/android/tools/r8/references/PrimitiveReference.java
index eb4ae72..da0fc0f 100644
--- a/src/main/java/com/android/tools/r8/references/PrimitiveReference.java
+++ b/src/main/java/com/android/tools/r8/references/PrimitiveReference.java
@@ -5,8 +5,10 @@
 
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.errors.Unreachable;
+import com.android.tools.r8.utils.KeepForRetraceApi;
 
 @Keep
+@KeepForRetraceApi
 public abstract class PrimitiveReference implements TypeReference {
 
   static final PrimitiveReference BOOL =
diff --git a/src/main/java/com/android/tools/r8/references/Reference.java b/src/main/java/com/android/tools/r8/references/Reference.java
index e6a829b..2faddb6 100644
--- a/src/main/java/com/android/tools/r8/references/Reference.java
+++ b/src/main/java/com/android/tools/r8/references/Reference.java
@@ -5,6 +5,7 @@
 
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
 import com.google.common.collect.ImmutableList;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -22,6 +23,7 @@
  * <p>No guarantees are made on identity and all references must be compared by {@code equals}.
  */
 @Keep
+@KeepForRetraceApi
 public final class Reference {
 
   public static PrimitiveReference BOOL = PrimitiveReference.BOOL;
diff --git a/src/main/java/com/android/tools/r8/references/TypeReference.java b/src/main/java/com/android/tools/r8/references/TypeReference.java
index bfef3f6..43d4dc7 100644
--- a/src/main/java/com/android/tools/r8/references/TypeReference.java
+++ b/src/main/java/com/android/tools/r8/references/TypeReference.java
@@ -5,8 +5,10 @@
 
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.KeepForRetraceApi;
 
 @Keep
+@KeepForRetraceApi
 public interface TypeReference {
 
   /**
diff --git a/src/main/java/com/android/tools/r8/utils/KeepForRetraceApi.java b/src/main/java/com/android/tools/r8/utils/KeepForRetraceApi.java
new file mode 100644
index 0000000..3f59392
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/utils/KeepForRetraceApi.java
@@ -0,0 +1,8 @@
+// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.utils;
+
+@KeepForRetraceApi
+public @interface KeepForRetraceApi {}