Remove unused methods.

This enables the errorprone check to disallow unused methods.

Bug: b/270534077
Change-Id: I6bc77875af06ab4fcea09589cd4cb6a7048ddf48
diff --git a/build.gradle b/build.gradle
index 231349e..a9990d7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -701,7 +701,6 @@
 
         // TODO(b/270534077): These should likely be fixed/suppressed and become hard failures.
         options.errorprone.check('JdkObsolete', CheckSeverity.OFF)
-        options.errorprone.check('UnusedMethod', CheckSeverity.OFF)
         options.errorprone.check('UnusedVariable', CheckSeverity.OFF)
         options.errorprone.check('EqualsUnsafeCast', CheckSeverity.OFF)
         options.errorprone.check('TypeParameterUnusedInFormals', CheckSeverity.OFF)
diff --git a/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeReader.java b/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeReader.java
index 73ec688..c8894fc 100644
--- a/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeReader.java
+++ b/src/keepanno/java/com/android/tools/r8/keepanno/asm/KeepEdgeReader.java
@@ -624,7 +624,7 @@
     }
   }
 
-  private abstract static class Declaration<T> {
+  abstract static class Declaration<T> {
     abstract String kind();
 
     abstract boolean isDefault();
diff --git a/src/keepanno/java/com/android/tools/r8/keepanno/keeprules/RulePrintingUtils.java b/src/keepanno/java/com/android/tools/r8/keepanno/keeprules/RulePrintingUtils.java
index 8084164..bf8136e 100644
--- a/src/keepanno/java/com/android/tools/r8/keepanno/keeprules/RulePrintingUtils.java
+++ b/src/keepanno/java/com/android/tools/r8/keepanno/keeprules/RulePrintingUtils.java
@@ -294,13 +294,6 @@
     }
   }
 
-  private static String getTypePatternString(KeepTypePattern typePattern) {
-    if (typePattern.isAny()) {
-      return "***";
-    }
-    return descriptorToJavaType(typePattern.getDescriptor());
-  }
-
   private static String descriptorToJavaType(String descriptor) {
     if (descriptor.isEmpty()) {
       throw new KeepEdgeException("Invalid empty type descriptor");
diff --git a/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java b/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
index 954f595..e16115e 100644
--- a/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
+++ b/src/main/java/com/android/tools/r8/cf/CfCodePrinter.java
@@ -209,10 +209,6 @@
     return r8Type("FrameType", ImmutableList.of("cf", "code", "frame"));
   }
 
-  private String asmOpcodesType() {
-    return type("Opcodes", ImmutableList.of("org", "objectweb", "asm"));
-  }
-
   private String dexItemFactoryType() {
     return r8Type("DexItemFactory", "graph");
   }
diff --git a/src/main/java/com/android/tools/r8/cf/CfPrinter.java b/src/main/java/com/android/tools/r8/cf/CfPrinter.java
index 5bab5e9..e03dc38 100644
--- a/src/main/java/com/android/tools/r8/cf/CfPrinter.java
+++ b/src/main/java/com/android/tools/r8/cf/CfPrinter.java
@@ -759,11 +759,6 @@
     builder.append(indent);
   }
 
-  private void comment(String comment) {
-    indent();
-    builder.append("; ").append(comment);
-  }
-
   private void appendComment(String comment) {
     builder.append(" ; ").append(comment);
   }
diff --git a/src/main/java/com/android/tools/r8/dex/DexParser.java b/src/main/java/com/android/tools/r8/dex/DexParser.java
index 4bc53ab..0d9fac5 100644
--- a/src/main/java/com/android/tools/r8/dex/DexParser.java
+++ b/src/main/java/com/android/tools/r8/dex/DexParser.java
@@ -1467,10 +1467,6 @@
       return enclosingMethodAttribute;
     }
 
-    public ClassSignature getClassSignature() {
-      return classSignature;
-    }
-
     public AttributesAndAnnotations(
         DexType type, Origin origin, DexAnnotationSet annotations, InternalOptions options) {
       this.originalAnnotations = annotations;
diff --git a/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java b/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java
index c78eaac..5a62bfb 100644
--- a/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java
+++ b/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java
@@ -669,16 +669,6 @@
     return false;
   }
 
-  private boolean hasDirectSubclassInCollection(DexProgramClass clazz,
-      Set<DexProgramClass> collection) {
-    for (DexProgramClass subClass : directSubClasses.getDirectSubClasses(clazz)) {
-      if (collection.contains(subClass)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
   private static List<DexProgramClass> getSortedCopy(Collection<DexProgramClass> collection) {
     List<DexProgramClass> sorted = new ArrayList<>(collection);
     Collections.sort(sorted, DEX_PROGRAM_CLASS_COMPARATOR);
diff --git a/src/main/java/com/android/tools/r8/dex/VirtualFile.java b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
index 16c5a73..6d1af5d 100644
--- a/src/main/java/com/android/tools/r8/dex/VirtualFile.java
+++ b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
@@ -261,10 +261,6 @@
             hasMainDexList, transaction.getNumberOfMethods(), transaction.getNumberOfFields()));
   }
 
-  private boolean isFilledEnough() {
-    return isFull(MAX_ENTRIES);
-  }
-
   public void abortTransaction() {
     transaction.abort();
   }
@@ -957,10 +953,6 @@
               : new EmptyIndexedItemUsedByClasses();
     }
 
-    private NamingLens getNamingLens() {
-      return appView.getNamingLens();
-    }
-
     private <T extends DexItem> boolean maybeInsert(T item, Set<T> set, Set<T> baseSet) {
       return maybeInsert(item, set, baseSet, true);
     }
diff --git a/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java b/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
index 45d4be7..dba763b 100644
--- a/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
+++ b/src/main/java/com/android/tools/r8/graph/ClassAccessFlags.java
@@ -136,10 +136,6 @@
     }
   }
 
-  private boolean isClass() {
-    return !isInterface() && !isAnnotation() && !isEnum();
-  }
-
   public boolean isInterface() {
     return isSet(Constants.ACC_INTERFACE);
   }
diff --git a/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java b/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java
index 1c99b6c..7a6a5fc 100644
--- a/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java
+++ b/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java
@@ -301,29 +301,6 @@
     return result;
   }
 
-  // Should remain private as its correctness relies on the setup of 'newProgramClasses'.
-  private Collection<DexProgramClass> fixupSynthesizedFrom(
-      Collection<DexProgramClass> synthesizedFrom) {
-    if (synthesizedFrom.isEmpty()) {
-      return synthesizedFrom;
-    }
-    boolean changed = false;
-    List<DexProgramClass> newSynthesizedFrom = new ArrayList<>(synthesizedFrom.size());
-    for (DexProgramClass clazz : synthesizedFrom) {
-      // TODO(b/165783399): What do we want to put here if the class that this was synthesized from
-      //  is no longer in the application?
-      Map<DexType, DexProgramClass> classes =
-          appView.appInfo().definitionForWithoutExistenceAssert(clazz.getType()) != null
-              ? programClassCache
-              : synthesizedFromClasses;
-      DexProgramClass newClass =
-          classes.computeIfAbsent(clazz.getType(), ignore -> fixupClass(clazz));
-      newSynthesizedFrom.add(newClass);
-      changed |= newClass != clazz;
-    }
-    return changed ? newSynthesizedFrom : synthesizedFrom;
-  }
-
   private DexType fixupTypeOrNull(DexType type) {
     return type != null ? fixupType(type) : null;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/CfSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/CfSourceCode.java
index 602effc..4e95364 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/CfSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/CfSourceCode.java
@@ -182,27 +182,6 @@
       return startOffset <= instructionOffset && instructionOffset < endOffset;
     }
 
-    public DebugLocalInfo getLocal(int register) {
-      return locals.get(register);
-    }
-
-    public Int2ReferenceOpenHashMap<DebugLocalInfo> merge(LocalVariableList other) {
-      return merge(this, other);
-    }
-
-    private static Int2ReferenceOpenHashMap<DebugLocalInfo> merge(
-        LocalVariableList a, LocalVariableList b) {
-      if (a.locals.size() > b.locals.size()) {
-        return merge(b, a);
-      }
-      Int2ReferenceOpenHashMap<DebugLocalInfo> result = new Int2ReferenceOpenHashMap<>();
-      for (Entry<DebugLocalInfo> local : a.locals.int2ReferenceEntrySet()) {
-        if (local.getValue().equals(b.getLocal(local.getIntKey()))) {
-          result.put(local.getIntKey(), local.getValue());
-        }
-      }
-      return result;
-    }
   }
 
   private CfState state;
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
index a7aa00b..35c6667 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
@@ -122,7 +122,6 @@
 import com.android.tools.r8.ir.conversion.MethodConversionOptions.MutableMethodConversionOptions;
 import com.android.tools.r8.naming.dexitembasedstring.NameComputationInfo;
 import com.android.tools.r8.origin.Origin;
-import com.android.tools.r8.position.MethodPosition;
 import com.android.tools.r8.utils.Pair;
 import com.google.common.collect.Sets;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceAVLTreeMap;
@@ -481,14 +480,6 @@
     this.basicBlockNumberGenerator = new NumberGenerator();
   }
 
-  private Origin getOrigin() {
-    return origin;
-  }
-
-  private MethodPosition getPosition() {
-    return MethodPosition.create(method);
-  }
-
   public DexItemFactory dexItemFactory() {
     return appView.dexItemFactory();
   }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java
index df5c8d0..d502339 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java
@@ -77,11 +77,6 @@
       return this;
     }
 
-    StringBuilderWithIndent emptyLine() {
-      builder.append(NL);
-      return this;
-    }
-
     @Override
     public String toString() {
       return builder.toString();
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
index 6a74cf3..85b530e 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/ClassProcessor.java
@@ -254,13 +254,6 @@
       this.emulatedInterfaceInfo = emulatedInterfaceInfo;
     }
 
-    public static SignaturesInfo create(MethodSignatures signatures) {
-      if (signatures.isEmpty()) {
-        return EMPTY;
-      }
-      return new SignaturesInfo(signatures, EmulatedInterfaceInfo.EMPTY);
-    }
-
     public SignaturesInfo merge(SignaturesInfo other) {
       if (isEmpty()) {
         return other;
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/stringconcat/StringConcatInstructionDesugaring.java b/src/main/java/com/android/tools/r8/ir/desugar/stringconcat/StringConcatInstructionDesugaring.java
index 158c97d..0b29d7e 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/stringconcat/StringConcatInstructionDesugaring.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/stringconcat/StringConcatInstructionDesugaring.java
@@ -355,10 +355,6 @@
       this.method = method;
     }
 
-    public DexMethod getMethod() {
-      return method;
-    }
-
     public ValueType getValueType() {
       assert method.getProto().getArity() == 1;
       return ValueType.fromDexType(method.getParameter(0));
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
index d19fa89..5bdde13 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
@@ -24,7 +24,6 @@
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.ir.analysis.ClassInitializationAnalysis;
 import com.android.tools.r8.ir.analysis.proto.ProtoInliningReasonStrategy;
-import com.android.tools.r8.ir.analysis.type.ClassTypeElement;
 import com.android.tools.r8.ir.analysis.type.Nullability;
 import com.android.tools.r8.ir.analysis.type.TypeAnalysis;
 import com.android.tools.r8.ir.analysis.type.TypeElement;
@@ -1143,27 +1142,6 @@
     return false;
   }
 
-  private DexProgramClass getDowncastTypeIfNeeded(
-      InliningStrategy strategy, InvokeMethod invoke, ProgramMethod target) {
-    if (invoke.isInvokeMethodWithReceiver()) {
-      // If the invoke has a receiver but the actual type of the receiver is different from the
-      // computed target holder, inlining requires a downcast of the receiver. In case we don't know
-      // the exact type of the receiver we use the static type of the receiver.
-      Value receiver = invoke.asInvokeMethodWithReceiver().getReceiver();
-      if (!receiver.getType().isClassType()) {
-        return target.getHolder();
-      }
-
-      ClassTypeElement receiverType =
-          strategy.getReceiverTypeOrDefault(invoke, receiver.getType().asClassType());
-      ClassTypeElement targetType = target.getHolderType().toTypeElement(appView).asClassType();
-      if (!receiverType.lessThanOrEqualUpToNullability(targetType, appView)) {
-        return target.getHolder();
-      }
-    }
-    return null;
-  }
-
   /** Applies member rebinding to the inlinee and inserts assume instructions. */
   private void postProcessInlineeBlocks(
       IRCode code,
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java
index 2e760d1..8ee971e 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java
@@ -187,14 +187,6 @@
     return this;
   }
 
-  private void setFlag(int flag, boolean value) {
-    if (value) {
-      setFlag(flag);
-    } else {
-      clearFlag(flag);
-    }
-  }
-
   private void setFlag(int flag) {
     flags |= flag;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java b/src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java
index af6cf62..2148519 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/OptimizationFeedbackDelayed.java
@@ -8,7 +8,6 @@
 import com.android.tools.r8.graph.DexEncodedField;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexType;
-import com.android.tools.r8.graph.ProgramField;
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.ir.analysis.inlining.SimpleInliningConstraint;
 import com.android.tools.r8.ir.analysis.type.DynamicType;
@@ -41,10 +40,6 @@
       new IdentityHashMap<>();
   private final Map<DexEncodedMethod, ConstraintWithTarget> processed = new IdentityHashMap<>();
 
-  private MutableFieldOptimizationInfo getFieldOptimizationInfoForUpdating(ProgramField field) {
-    return getFieldOptimizationInfoForUpdating(field.getDefinition());
-  }
-
   private synchronized MutableFieldOptimizationInfo getFieldOptimizationInfoForUpdating(
       DexEncodedField field) {
     MutableFieldOptimizationInfo info = fieldOptimizationInfos.get(field);
diff --git a/src/main/java/com/android/tools/r8/lightir/LirBuilder.java b/src/main/java/com/android/tools/r8/lightir/LirBuilder.java
index 0f78a4e..b2fe3ba 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirBuilder.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirBuilder.java
@@ -134,18 +134,10 @@
     return strategy.getEncodedValueIndexForReference(value, referencingValueIndex);
   }
 
-  private int valueIndexSize(EV value, int referencingInstructionIndex) {
-    return encodedValueIndexSize(getEncodedValueIndex(value, referencingInstructionIndex));
-  }
-
   private int encodedValueIndexSize(int encodedValueIndex) {
     return ByteUtils.intEncodingSize(encodedValueIndex);
   }
 
-  private void writeValueIndex(EV value, int referencingInstructionIndex) {
-    writeEncodedValueIndex(getEncodedValueIndex(value, referencingInstructionIndex));
-  }
-
   private void writeEncodedValueIndex(int encodedValueIndex) {
     ByteUtils.writeEncodedInt(encodedValueIndex, writer::writeOperand);
   }
diff --git a/src/main/java/com/android/tools/r8/lightir/LirSsaValueStrategy.java b/src/main/java/com/android/tools/r8/lightir/LirSsaValueStrategy.java
index 78642e8..83b5a66 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirSsaValueStrategy.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirSsaValueStrategy.java
@@ -22,20 +22,6 @@
 
   public abstract EV decodeValueIndex(int encodedValueIndex, int currentValueIndex);
 
-  private static class AbsoluteStrategy extends LirSsaValueStrategy<Integer> {
-
-    @Override
-    public int encodeValueIndex(Integer value, int currentValueIndex) {
-      assert value != null;
-      return value;
-    }
-
-    @Override
-    public Integer decodeValueIndex(int encodedValueIndex, int currentValueIndex) {
-      return encodedValueIndex;
-    }
-  }
-
   private static class RelativeStrategy extends LirSsaValueStrategy<Integer> {
 
     @Override
diff --git a/src/main/java/com/android/tools/r8/naming/ComposingBuilder.java b/src/main/java/com/android/tools/r8/naming/ComposingBuilder.java
index 5086ebe..22cf5e4 100644
--- a/src/main/java/com/android/tools/r8/naming/ComposingBuilder.java
+++ b/src/main/java/com/android/tools/r8/naming/ComposingBuilder.java
@@ -361,10 +361,6 @@
       this.methodName = methodName;
     }
 
-    public String getHolderTypeName() {
-      return holderTypeName;
-    }
-
     public String getMethodName() {
       return methodName;
     }
@@ -1218,9 +1214,6 @@
         return hasValue() ? end : NO_RANGE_FROM;
       }
 
-      private boolean isPreamble() {
-        return hasValue() && start == end && start == 0;
-      }
     }
 
     private static class ComputedOutlineInformation {
diff --git a/src/main/java/com/android/tools/r8/retrace/Retrace.java b/src/main/java/com/android/tools/r8/retrace/Retrace.java
index aebad6d..8f619ac 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -700,10 +700,5 @@
               .compare(one, other)
           != 0;
     }
-
-    public static <T, ST extends StackTraceElementProxy<T, ST>>
-        RetraceStackTraceElementProxyEquivalence<T, ST> getInstance(boolean isVerbose) {
-      return new RetraceStackTraceElementProxyEquivalence<>(isVerbose);
-    }
   }
 }
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 f0e4959..811ddc9 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
@@ -438,34 +438,6 @@
     return pruneMap(map, prunedItems.getRemovedClasses(), executorService, futures);
   }
 
-  private static <V> Map<DexMember<?, ?>, V> pruneMapFromMembers(
-      Map<DexMember<?, ?>, V> map,
-      PrunedItems prunedItems,
-      ExecutorService executorService,
-      List<Future<?>> futures) {
-    if (prunedItems.hasRemovedMembers()) {
-      futures.add(
-          ThreadUtils.processAsynchronously(
-              () -> {
-                Set<DexField> removedFields = prunedItems.getRemovedFields();
-                Set<DexMethod> removedMethods = prunedItems.getRemovedMethods();
-                if (map.size() <= removedFields.size() + removedMethods.size()) {
-                  map.keySet()
-                      .removeIf(
-                          member ->
-                              member.isDexField()
-                                  ? removedFields.contains(member.asDexField())
-                                  : removedMethods.contains(member.asDexMethod()));
-                } else {
-                  removedFields.forEach(map::remove);
-                  removedMethods.forEach(map::remove);
-                }
-              },
-              executorService));
-    }
-    return map;
-  }
-
   private static Object2BooleanMap<DexMember<?, ?>> pruneMapFromMembers(
       Object2BooleanMap<DexMember<?, ?>> map,
       PrunedItems prunedItems,
diff --git a/src/main/java/com/android/tools/r8/shaking/MainDexInfo.java b/src/main/java/com/android/tools/r8/shaking/MainDexInfo.java
index 30f4bc2..14d0dba 100644
--- a/src/main/java/com/android/tools/r8/shaking/MainDexInfo.java
+++ b/src/main/java/com/android/tools/r8/shaking/MainDexInfo.java
@@ -122,10 +122,6 @@
     return items.contains(type);
   }
 
-  private boolean isDependency(ProgramDefinition definition) {
-    return isDependency(definition.getContextType());
-  }
-
   private boolean isDependency(DexReference reference) {
     return tracedDependencies.contains(reference.getContextType());
   }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index cde2c21..37cad6b 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -766,10 +766,6 @@
       return false;
     }
 
-    private boolean skipReturnValueAttribute(String name) {
-      return acceptString(name);
-    }
-
     private boolean parseOptimizationOption(TextPosition optionStart)
         throws ProguardRuleParserException {
       if (!acceptString("optimizations")) {
@@ -980,28 +976,6 @@
           "Expecting '-keep' option after '-if' option.", origin, getPosition(optionStart)));
     }
 
-    private KeepConstantArgumentRule parseConstantArgumentRule(Position start)
-        throws ProguardRuleParserException {
-      KeepConstantArgumentRule.Builder keepRuleBuilder =
-          KeepConstantArgumentRule.builder().setOrigin(origin).setStart(start);
-      parseClassSpec(keepRuleBuilder);
-      Position end = getPosition();
-      keepRuleBuilder.setSource(getSourceSnippet(contents, start, end));
-      keepRuleBuilder.setEnd(end);
-      return keepRuleBuilder.build();
-    }
-
-    private KeepUnusedArgumentRule parseUnusedArgumentRule(Position start)
-        throws ProguardRuleParserException {
-      KeepUnusedArgumentRule.Builder keepRuleBuilder =
-          KeepUnusedArgumentRule.builder().setOrigin(origin).setStart(start);
-      parseClassSpec(keepRuleBuilder);
-      Position end = getPosition();
-      keepRuleBuilder.setSource(getSourceSnippet(contents, start, end));
-      keepRuleBuilder.setEnd(end);
-      return keepRuleBuilder.build();
-    }
-
     private ReprocessClassInitializerRule parseReprocessClassInitializerRule(
         ReprocessClassInitializerRule.Type type, Position start)
         throws ProguardRuleParserException {
@@ -1771,15 +1745,6 @@
       }
     }
 
-    private boolean isInteger(String s) {
-      for (int i = 0; i < s.length(); i++) {
-        if (!Character.isDigit(s.charAt(i))) {
-          return false;
-        }
-      }
-      return true;
-    }
-
     private boolean eof() {
       return position == contents.length();
     }
@@ -2138,25 +2103,6 @@
       }
     }
 
-    private void parsePackageFilter(BiConsumer<Boolean, ProguardPackageMatcher> consumer)
-        throws ProguardRuleParserException {
-      skipWhitespace();
-      if (isOptionalArgumentGiven()) {
-        do {
-          IdentifierPatternWithWildcardsAndNegation name =
-              acceptIdentifierWithBackreference(IdentifierType.PACKAGE_NAME, true);
-          if (name == null) {
-            throw parseError("Package name expected");
-          }
-          consumer.accept(
-              name.negated, new ProguardPackageMatcher(name.patternWithWildcards.pattern));
-          skipWhitespace();
-        } while (acceptChar(','));
-      } else {
-        consumer.accept(false, new ProguardPackageMatcher("**"));
-      }
-    }
-
     private void parseClassFilter(Consumer<ProguardClassNameList> consumer)
         throws ProguardRuleParserException {
       skipWhitespace();
@@ -2274,11 +2220,6 @@
       return new ProguardRuleParserException(message, snippetForPosition(), origin, getPosition());
     }
 
-    private ProguardRuleParserException parseError(String message, Throwable cause) {
-      return new ProguardRuleParserException(message, snippetForPosition(), origin, getPosition(),
-          cause);
-    }
-
     private ProguardRuleParserException parseError(String message, TextPosition start,
         Throwable cause) {
       return new ProguardRuleParserException(message, snippetForPosition(start),
diff --git a/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java b/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
index 1099f62..d4f127a 100644
--- a/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
+++ b/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
@@ -120,11 +120,6 @@
     out.println(getNodeString(node));
   }
 
-  private void printNothingKeeping(ClassReference clazz, PrintStream out) {
-    out.print("Nothing is keeping ");
-    out.println(DescriptorUtils.descriptorToJavaType(clazz.getDescriptor()));
-  }
-
   private List<Pair<GraphNode, GraphEdgeInfo>> findShortestPathTo(final GraphNode node) {
     if (node == null) {
       return null;
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApp.java b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
index 0b9de96..8ea5c72 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApp.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
@@ -604,15 +604,6 @@
     };
   }
 
-  private Consumer<ProgramResource> createClassFileResourceConsumer(
-      Map<String, ProgramResource> classPathResources) {
-    return programResource -> {
-      assert programResource.getClassDescriptors().size() == 1;
-      String descriptor = programResource.getClassDescriptors().iterator().next();
-      classPathResources.put(descriptor, programResource);
-    };
-  }
-
   private int dumpProgramResources(
       String archiveName,
       FeatureSplitConfiguration featureSplitConfiguration,
diff --git a/src/main/java/com/android/tools/r8/utils/positions/DexPositionToPcMappedRangeMapper.java b/src/main/java/com/android/tools/r8/utils/positions/DexPositionToPcMappedRangeMapper.java
index 40f80b4..ecc6468 100644
--- a/src/main/java/com/android/tools/r8/utils/positions/DexPositionToPcMappedRangeMapper.java
+++ b/src/main/java/com/android/tools/r8/utils/positions/DexPositionToPcMappedRangeMapper.java
@@ -119,13 +119,4 @@
     return debugInfo;
   }
 
-  private static boolean verifyIdentityMapping(
-      EventBasedDebugInfo originalDebugInfo, EventBasedDebugInfo optimizedDebugInfo) {
-    assert optimizedDebugInfo.startLine == originalDebugInfo.startLine;
-    assert optimizedDebugInfo.events.length == originalDebugInfo.events.length;
-    for (int i = 0; i < originalDebugInfo.events.length; ++i) {
-      assert optimizedDebugInfo.events[i].equals(originalDebugInfo.events[i]);
-    }
-    return true;
-  }
 }