Use generic for HashCode return type

Change-Id: I8de338751e02efbc601299c459645377920f54ad
diff --git a/src/main/java/com/android/tools/r8/utils/structural/HasherWrapper.java b/src/main/java/com/android/tools/r8/utils/structural/HasherWrapper.java
index 4f6bc83..8427cfe 100644
--- a/src/main/java/com/android/tools/r8/utils/structural/HasherWrapper.java
+++ b/src/main/java/com/android/tools/r8/utils/structural/HasherWrapper.java
@@ -4,7 +4,6 @@
 
 package com.android.tools.r8.utils.structural;
 
-import com.google.common.hash.HashCode;
 import com.google.common.hash.Hasher;
 import com.google.common.hash.Hashing;
 
@@ -26,11 +25,10 @@
 
   void putBytes(byte[] content);
 
-  /** Do not use from tests */
-  HashCode hash();
-
   String hashCodeAsString();
 
+  <T> T hash();
+
   static HasherWrapper sha256Hasher() {
     return new HasherWrapped(Hashing.sha256().newHasher());
   }
@@ -78,8 +76,8 @@
     }
 
     @Override
-    public HashCode hash() {
-      return hasher.hash();
+    public <T> T hash() {
+      return (T) hasher.hash();
     }
 
     @Override