[Retrace] Account for nullable field when testing equivalence

Bug: 216359244
Change-Id: I54483e37593bfb223809a3d5d27e8dec23b9d085
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 14b393c..b4467ea 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -602,7 +602,10 @@
         RetraceStackTraceElementProxy<T, ST> other,
         Function<RetraceStackTraceElementProxy<T, ST>, Boolean> predicate,
         Function<RetraceStackTraceElementProxy<T, ST>, V> getter) {
-      return Comparator.comparing(predicate).thenComparing(getter).compare(one, other) != 0;
+      return Comparator.comparing(predicate)
+              .thenComparing(getter, Comparator.nullsFirst(V::compareTo))
+              .compare(one, other)
+          != 0;
     }
 
     public static <T, ST extends StackTraceElementProxy<T, ST>>
diff --git a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
index fe8cd5b..6c19c5f 100644
--- a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
@@ -945,8 +945,7 @@
   }
 
   /* This is a regression test for b/216359244 */
-  // TODO(b/216359244): Should not fail with an NPE.
-  @Test(expected = NullPointerException.class)
+  @Test
   public void testMissingSourceFile() {
     runRetraceTest(
         ".*FOO\\s+:\\s+\\[\\d+\\]\\s+%c\\.%m\\(%l\\):.*",