Fix build warnings from unchecked casts and unsafe varargs

Change-Id: Ib9c3e25b9b86361dbc25abab6ccd375d328f0411
diff --git a/src/main/java/com/android/tools/r8/graph/GenericSignatureCorrectnessHelper.java b/src/main/java/com/android/tools/r8/graph/GenericSignatureCorrectnessHelper.java
index a7979f6..3401560 100644
--- a/src/main/java/com/android/tools/r8/graph/GenericSignatureCorrectnessHelper.java
+++ b/src/main/java/com/android/tools/r8/graph/GenericSignatureCorrectnessHelper.java
@@ -110,6 +110,7 @@
     return result;
   }
 
+  @SuppressWarnings("unchecked")
   private <T extends DexDefinitionSignature<?>> SignatureEvaluationResult evaluate(
       Supplier<T> getter, Function<T, SignatureEvaluationResult> evaluate, Consumer<T> setter) {
     T signature = getter.get();
diff --git a/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java b/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java
index 3de0abd..9d085af 100644
--- a/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java
+++ b/src/test/java/com/android/tools/r8/TestDiagnosticMessages.java
@@ -13,126 +13,131 @@
 import java.util.List;
 import org.hamcrest.Matcher;
 
-public interface TestDiagnosticMessages {
+public abstract class TestDiagnosticMessages {
 
-  List<Diagnostic> getInfos();
+  public abstract List<Diagnostic> getInfos();
 
-  List<Diagnostic> getWarnings();
+  public abstract List<Diagnostic> getWarnings();
 
-  default <D extends Diagnostic> D getWarning(int index) {
+  @SuppressWarnings("unchecked")
+  public final <D extends Diagnostic> D getWarning(int index) {
     return (D) getWarnings().get(index);
   }
 
-  List<Diagnostic> getErrors();
+  public abstract List<Diagnostic> getErrors();
 
-  default <D extends Diagnostic> D getError(int index) {
+  @SuppressWarnings("unchecked")
+  public final <D extends Diagnostic> D getError(int index) {
     return (D) getErrors().get(index);
   }
 
-  TestDiagnosticMessages assertNoMessages();
+  public abstract TestDiagnosticMessages assertNoMessages();
 
-  TestDiagnosticMessages assertHasWarnings();
+  public abstract TestDiagnosticMessages assertHasWarnings();
 
-  TestDiagnosticMessages assertOnlyInfos();
+  public abstract TestDiagnosticMessages assertOnlyInfos();
 
-  TestDiagnosticMessages assertOnlyWarnings();
+  public abstract TestDiagnosticMessages assertOnlyWarnings();
 
-  TestDiagnosticMessages assertOnlyErrors();
+  public abstract TestDiagnosticMessages assertOnlyErrors();
 
-  TestDiagnosticMessages assertInfosCount(int count);
+  public abstract TestDiagnosticMessages assertInfosCount(int count);
 
-  TestDiagnosticMessages assertWarningsCount(int count);
+  public abstract TestDiagnosticMessages assertWarningsCount(int count);
 
-  TestDiagnosticMessages assertErrorsCount(int count);
+  public abstract TestDiagnosticMessages assertErrorsCount(int count);
 
-  default TestDiagnosticMessages assertNoInfos() {
+  public final TestDiagnosticMessages assertNoInfos() {
     return assertInfosCount(0);
   }
 
-  default TestDiagnosticMessages assertNoWarnings() {
+  public final TestDiagnosticMessages assertNoWarnings() {
     return assertWarningsCount(0);
   }
 
-  default TestDiagnosticMessages assertNoErrors() {
+  public final TestDiagnosticMessages assertNoErrors() {
     return assertErrorsCount(0);
   }
 
   // Match exact.
 
-  default TestDiagnosticMessages assertDiagnosticsMatch(Matcher<Diagnostic> matcher) {
+  public final TestDiagnosticMessages assertDiagnosticsMatch(Matcher<Diagnostic> matcher) {
     return assertDiagnosticsMatch(Collections.singletonList(matcher));
   }
 
-  TestDiagnosticMessages assertDiagnosticsMatch(Collection<Matcher<Diagnostic>> matchers);
+  public abstract TestDiagnosticMessages assertDiagnosticsMatch(
+      Collection<Matcher<Diagnostic>> matchers);
 
-  default TestDiagnosticMessages assertInfosMatch(Matcher<Diagnostic> matcher) {
+  public final TestDiagnosticMessages assertInfosMatch(Matcher<Diagnostic> matcher) {
     return assertInfosMatch(Collections.singletonList(matcher));
   }
 
-  TestDiagnosticMessages assertInfosMatch(Collection<Matcher<Diagnostic>> matchers);
+  public abstract TestDiagnosticMessages assertInfosMatch(Collection<Matcher<Diagnostic>> matchers);
 
-  default TestDiagnosticMessages assertWarningsMatch(Matcher<Diagnostic> matcher) {
+  public final TestDiagnosticMessages assertWarningsMatch(Matcher<Diagnostic> matcher) {
     return assertWarningsMatch(Collections.singletonList(matcher));
   }
 
-  @SuppressWarnings("unchecked")
-  default TestDiagnosticMessages assertWarningsMatch(Matcher<Diagnostic>... matchers) {
+  @SafeVarargs
+  public final TestDiagnosticMessages assertWarningsMatch(Matcher<Diagnostic>... matchers) {
     return assertWarningsMatch(Arrays.asList(matchers));
   }
 
-  TestDiagnosticMessages assertWarningsMatch(Collection<Matcher<Diagnostic>> matchers);
+  public abstract TestDiagnosticMessages assertWarningsMatch(
+      Collection<Matcher<Diagnostic>> matchers);
 
-  default TestDiagnosticMessages assertErrorsMatch(Matcher<Diagnostic> matcher) {
+  public final TestDiagnosticMessages assertErrorsMatch(Matcher<Diagnostic> matcher) {
     return assertErrorsMatch(Collections.singletonList(matcher));
   }
 
-  TestDiagnosticMessages assertErrorsMatch(Collection<Matcher<Diagnostic>> matchers);
+  public abstract TestDiagnosticMessages assertErrorsMatch(
+      Collection<Matcher<Diagnostic>> matchers);
 
   // Match one.
 
-  TestDiagnosticMessages assertDiagnosticThatMatches(Matcher<Diagnostic> matcher);
+  public abstract TestDiagnosticMessages assertDiagnosticThatMatches(Matcher<Diagnostic> matcher);
 
-  TestDiagnosticMessages assertInfoThatMatches(Matcher<Diagnostic> matcher);
+  public abstract TestDiagnosticMessages assertInfoThatMatches(Matcher<Diagnostic> matcher);
 
-  TestDiagnosticMessages assertWarningThatMatches(Matcher<Diagnostic> matcher);
+  public abstract TestDiagnosticMessages assertWarningThatMatches(Matcher<Diagnostic> matcher);
 
-  TestDiagnosticMessages assertErrorThatMatches(Matcher<Diagnostic> matcher);
+  public abstract TestDiagnosticMessages assertErrorThatMatches(Matcher<Diagnostic> matcher);
 
   // Consider removing this helper.
-  default TestDiagnosticMessages assertWarningMessageThatMatches(Matcher<String> matcher) {
+  public final TestDiagnosticMessages assertWarningMessageThatMatches(Matcher<String> matcher) {
     return assertWarningThatMatches(diagnosticMessage(matcher));
   }
 
   // Consider removing this helper.
-  default TestDiagnosticMessages assertErrorMessageThatMatches(Matcher<String> matcher) {
+  public final TestDiagnosticMessages assertErrorMessageThatMatches(Matcher<String> matcher) {
     return assertErrorThatMatches(diagnosticMessage(matcher));
   }
 
   // Match all.
 
-  TestDiagnosticMessages assertAllDiagnosticsMatch(Matcher<Diagnostic> matcher);
+  public abstract TestDiagnosticMessages assertAllDiagnosticsMatch(Matcher<Diagnostic> matcher);
 
-  TestDiagnosticMessages assertAllInfosMatch(Matcher<Diagnostic> matcher);
+  public abstract TestDiagnosticMessages assertAllInfosMatch(Matcher<Diagnostic> matcher);
 
-  TestDiagnosticMessages assertAllWarningsMatch(Matcher<Diagnostic> matcher);
+  public abstract TestDiagnosticMessages assertAllWarningsMatch(Matcher<Diagnostic> matcher);
 
-  TestDiagnosticMessages assertAllErrorsMatch(Matcher<Diagnostic> matcher);
+  public abstract TestDiagnosticMessages assertAllErrorsMatch(Matcher<Diagnostic> matcher);
 
   // Match none.
 
-  default TestDiagnosticMessages assertNoDiagnosticsMatch(Matcher<Diagnostic> matcher) {
+  public final TestDiagnosticMessages assertNoDiagnosticsMatch(Matcher<Diagnostic> matcher) {
     return assertAllDiagnosticsMatch(not(matcher));
   }
 
-  default TestDiagnosticMessages assertNoInfosMatch(Matcher<Diagnostic> matcher) {
+  public final TestDiagnosticMessages assertNoInfosMatch(Matcher<Diagnostic> matcher) {
     return assertAllInfosMatch(not(matcher));
   }
 
-  default TestDiagnosticMessages assertNoWarningsMatch(Matcher<Diagnostic> matcher) {
+  public final TestDiagnosticMessages assertNoWarningsMatch(Matcher<Diagnostic> matcher) {
     return assertAllWarningsMatch(not(matcher));
   }
 
-  default TestDiagnosticMessages assertNoErrorsMatch(Matcher<Diagnostic> matcher) {
+  public final TestDiagnosticMessages assertNoErrorsMatch(Matcher<Diagnostic> matcher) {
     return assertAllErrorsMatch(not(matcher));
   }
 }
diff --git a/src/test/java/com/android/tools/r8/TestDiagnosticMessagesImpl.java b/src/test/java/com/android/tools/r8/TestDiagnosticMessagesImpl.java
index 9dae093..b52db8d 100644
--- a/src/test/java/com/android/tools/r8/TestDiagnosticMessagesImpl.java
+++ b/src/test/java/com/android/tools/r8/TestDiagnosticMessagesImpl.java
@@ -20,7 +20,8 @@
 import java.util.function.BiFunction;
 import org.hamcrest.Matcher;
 
-public class TestDiagnosticMessagesImpl implements DiagnosticsHandler, TestDiagnosticMessages {
+public class TestDiagnosticMessagesImpl extends TestDiagnosticMessages
+    implements DiagnosticsHandler {
   private final List<Diagnostic> infos = new ArrayList<>();
   private final List<Diagnostic> warnings = new ArrayList<>();
   private final List<Diagnostic> errors = new ArrayList<>();
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/ConcurrentHashMapFileSerializationTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/ConcurrentHashMapFileSerializationTest.java
index b38eac1..db361d4 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/ConcurrentHashMapFileSerializationTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/ConcurrentHashMapFileSerializationTest.java
@@ -94,6 +94,7 @@
       chmTest();
     }
 
+    @SuppressWarnings("unchecked")
     private static void chmTest() throws IOException, ClassNotFoundException {
       ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
       map.put("k1", "v1");
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/MyMapFileSerializationTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/MyMapFileSerializationTest.java
index 623cfd0..42844c1 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/MyMapFileSerializationTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/MyMapFileSerializationTest.java
@@ -88,6 +88,8 @@
 
   @SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
   static class Executor {
+
+    @SuppressWarnings("unchecked")
     public static void main(String[] args) throws Exception {
       MyMap<String, String> map = new MyMap<>();
       map.put("k1", "v1");