[KeepAnno] Clean up a few places after checks have bindings

Change-Id: Idd1f6615f412dac946af4546c95c877bdd5c54b8
diff --git a/src/keepanno/java/com/android/tools/r8/keepanno/ast/KeepCheck.java b/src/keepanno/java/com/android/tools/r8/keepanno/ast/KeepCheck.java
index c7d6d84..1a39181 100644
--- a/src/keepanno/java/com/android/tools/r8/keepanno/ast/KeepCheck.java
+++ b/src/keepanno/java/com/android/tools/r8/keepanno/ast/KeepCheck.java
@@ -118,8 +118,8 @@
     return bindings;
   }
 
-  public KeepItemPattern getItemPattern() {
-    return bindings.get(itemReference).getItem();
+  public KeepBindingReference getItemReference() {
+    return itemReference;
   }
 
   @Override
diff --git a/src/keepanno/java/com/android/tools/r8/keepanno/keeprules/KeepRuleExtractor.java b/src/keepanno/java/com/android/tools/r8/keepanno/keeprules/KeepRuleExtractor.java
index 585eee6..168ff22 100644
--- a/src/keepanno/java/com/android/tools/r8/keepanno/keeprules/KeepRuleExtractor.java
+++ b/src/keepanno/java/com/android/tools/r8/keepanno/keeprules/KeepRuleExtractor.java
@@ -6,7 +6,6 @@
 import com.android.tools.r8.keepanno.ast.KeepAttribute;
 import com.android.tools.r8.keepanno.ast.KeepBindingReference;
 import com.android.tools.r8.keepanno.ast.KeepBindings;
-import com.android.tools.r8.keepanno.ast.KeepBindings.Binding;
 import com.android.tools.r8.keepanno.ast.KeepBindings.KeepBindingSymbol;
 import com.android.tools.r8.keepanno.ast.KeepCheck;
 import com.android.tools.r8.keepanno.ast.KeepCheck.KeepCheckKind;
@@ -81,32 +80,31 @@
     if (!extractorOptions.hasCheckDiscardSupport()) {
       return Collections.emptyList();
     }
-    KeepItemPattern itemPattern = check.getItemPattern();
+    KeepBindingReference itemReference = check.getItemReference();
+    KeepBindings bindings = check.getBindings();
+
     boolean isRemovedPattern = check.getKind() == KeepCheckKind.REMOVED;
     List<PgRule> rules = new ArrayList<>(isRemovedPattern ? 2 : 1);
     Holder holder;
     Map<KeepBindingSymbol, KeepMemberPattern> memberPatterns;
     List<KeepBindingSymbol> targetMembers;
-    KeepBindings.Builder builder = KeepBindings.builder();
     KeepBindingSymbol symbol;
-    if (itemPattern.isClassItemPattern()) {
-      symbol = builder.generateFreshSymbol("CLASS");
-      builder.addBinding(symbol, itemPattern);
+    if (itemReference.isClassType()) {
+      symbol = itemReference.getName();
       memberPatterns = Collections.emptyMap();
       targetMembers = Collections.emptyList();
     } else {
-      KeepMemberItemPattern memberItemPattern = itemPattern.asMemberItemPattern();
+      KeepMemberItemPattern memberItemPattern =
+          bindings.getMemberItem(itemReference.asMemberBindingReference());
       KeepClassBindingReference classReference = memberItemPattern.getClassReference();
-      Binding binding = check.getBindings().get(classReference);
       symbol = classReference.getName();
-      builder.addBinding(symbol, binding.getItem());
       KeepMemberPattern memberPattern = memberItemPattern.getMemberPattern();
       // This does not actually allocate a binding as the mapping is maintained in 'memberPatterns'.
-      KeepBindingSymbol memberSymbol = new KeepBindingSymbol("MEMBERS");
+      KeepBindingSymbol memberSymbol = itemReference.getName();
       memberPatterns = Collections.singletonMap(memberSymbol, memberPattern);
       targetMembers = Collections.singletonList(memberSymbol);
     }
-    holder = Holder.create(symbol, builder.build());
+    holder = Holder.create(symbol, bindings);
     // Add a -checkdiscard rule for the class or members.
     rules.add(
         new PgUnconditionalRule(
@@ -121,7 +119,7 @@
     // moving/inlining the items.
     if (isRemovedPattern) {
       KeepOptions allowShrinking = KeepOptions.allow(KeepOption.SHRINKING);
-      if (itemPattern.isClassItemPattern()) {
+      if (itemReference.isClassType()) {
         // A check removal on a class means that the entire class is removed, thus soft-pin the
         // class and *all* of its members.
         KeepBindingSymbol memberSymbol = new KeepBindingSymbol("MEMBERS");
diff --git a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java
index 052c9ad..c45a64d 100644
--- a/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java
+++ b/src/main/java/com/android/tools/r8/shaking/rules/KeepAnnotationMatcher.java
@@ -472,7 +472,7 @@
           check -> {
             preconditionClassesCount = 0;
             preconditionMembersCount = 0;
-            consequences.add(defineItemPattern(check.getItemPattern()));
+            consequences.add(defineBindingReference(check.getItemReference()));
           });
     }