Canonicalize return and parameter types with generics.

Previous canonicalization only worked for items with a single extends
parameter, and didn't handle super parameters at all. This makes it
handle parameter and return types in the same way it already handled
reflection types so that they're comparable with string equality.

Bug: 31858628
Test: run android.signature.cts.SignatureTest#testSignature
Change-Id: I9a7232312a72ad806376877746ae9f5393928f5d
diff --git a/tests/signature/src/android/signature/cts/JDiffClassDescription.java b/tests/signature/src/android/signature/cts/JDiffClassDescription.java
index 2e13650..92f56bd 100644
--- a/tests/signature/src/android/signature/cts/JDiffClassDescription.java
+++ b/tests/signature/src/android/signature/cts/JDiffClassDescription.java
@@ -1213,7 +1213,9 @@
     private static String scrubJdiffParamType(String paramType) {
         // <? extends java.lang.Object and <?> are the same, so
         // canonicalize them to one form.
-        return paramType.replace("<? extends java.lang.Object>", "<?>");
+        return paramType
+            .replace("? extends java.lang.Object", "?")
+            .replace("? super java.lang.Object", "? super ?");
     }
 
     /**