[Retrace] Use OptionalInt instead of Optional<Integer>

Change-Id: Ibc0e9cfb6096af96e98fb66ff4d91bd048621127
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceClassElement.java b/src/main/java/com/android/tools/r8/retrace/RetraceClassElement.java
index 978962e..f7830c3 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceClassElement.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceClassElement.java
@@ -7,7 +7,7 @@
 import com.android.tools.r8.references.MethodReference;
 import com.android.tools.r8.references.TypeReference;
 import java.util.List;
-import java.util.Optional;
+import java.util.OptionalInt;
 
 @Keep
 public interface RetraceClassElement extends RetraceElement<RetraceClassResult> {
@@ -21,19 +21,17 @@
   RetraceMethodResult lookupMethod(String methodName);
 
   RetraceFrameResult lookupFrame(
-      RetraceStackTraceContext context, Optional<Integer> position, String methodName);
+      RetraceStackTraceContext context, OptionalInt position, String methodName);
 
   RetraceFrameResult lookupFrame(
       RetraceStackTraceContext context,
-      Optional<Integer> position,
+      OptionalInt position,
       String methodName,
       List<TypeReference> formalTypes,
       TypeReference returnType);
 
   RetraceFrameResult lookupFrame(
-      RetraceStackTraceContext context,
-      Optional<Integer> position,
-      MethodReference methodReference);
+      RetraceStackTraceContext context, OptionalInt position, MethodReference methodReference);
 
   RetraceUnknownJsonMappingInformationResult getUnknownJsonMappingInformation();
 }
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
index e74c8ac..9f5bc71 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceClassResult.java
@@ -7,7 +7,7 @@
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.references.TypeReference;
 import java.util.List;
-import java.util.Optional;
+import java.util.OptionalInt;
 
 @Keep
 public interface RetraceClassResult extends RetraceResult<RetraceClassElement> {
@@ -24,11 +24,11 @@
       String methodName, List<TypeReference> formalTypes, TypeReference returnType);
 
   RetraceFrameResult lookupFrame(
-      RetraceStackTraceContext context, Optional<Integer> position, String methodName);
+      RetraceStackTraceContext context, OptionalInt position, String methodName);
 
   RetraceFrameResult lookupFrame(
       RetraceStackTraceContext context,
-      Optional<Integer> position,
+      OptionalInt position,
       String methodName,
       List<TypeReference> formalTypes,
       TypeReference returnType);
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
index efafa67..f94035b 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceClassResultImpl.java
@@ -25,7 +25,7 @@
 import com.google.common.collect.ImmutableList;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
+import java.util.OptionalInt;
 import java.util.function.BiFunction;
 import java.util.stream.Stream;
 
@@ -120,14 +120,14 @@
 
   @Override
   public RetraceFrameResultImpl lookupFrame(
-      RetraceStackTraceContext context, Optional<Integer> position, String methodName) {
+      RetraceStackTraceContext context, OptionalInt position, String methodName) {
     return lookupFrame(context, position, MethodDefinition.create(obfuscatedReference, methodName));
   }
 
   @Override
   public RetraceFrameResultImpl lookupFrame(
       RetraceStackTraceContext context,
-      Optional<Integer> position,
+      OptionalInt position,
       String methodName,
       List<TypeReference> formalTypes,
       TypeReference returnType) {
@@ -145,7 +145,7 @@
   }
 
   private RetraceFrameResultImpl lookupFrame(
-      RetraceStackTraceContext context, Optional<Integer> position, MethodDefinition definition) {
+      RetraceStackTraceContext context, OptionalInt position, MethodDefinition definition) {
     List<Pair<RetraceClassElementImpl, List<MappedRange>>> mappings = new ArrayList<>();
     internalStream()
         .forEach(
@@ -161,7 +161,7 @@
   }
 
   private List<List<MappedRange>> getMappedRangesForFrame(
-      RetraceClassElementImpl element, MethodDefinition definition, Optional<Integer> position) {
+      RetraceClassElementImpl element, MethodDefinition definition, OptionalInt position) {
     List<List<MappedRange>> overloadedRanges = new ArrayList<>();
     if (mapper == null) {
       overloadedRanges.add(null);
@@ -174,8 +174,8 @@
       return overloadedRanges;
     }
     List<MappedRange> mappedRangesForPosition = null;
-    if (position.isPresent() && position.get() >= 0) {
-      mappedRangesForPosition = mappedRanges.allRangesForLine(position.get(), false);
+    if (position.isPresent() && position.getAsInt() >= 0) {
+      mappedRangesForPosition = mappedRanges.allRangesForLine(position.getAsInt(), false);
     }
     if (mappedRangesForPosition == null || mappedRangesForPosition.isEmpty()) {
       mappedRangesForPosition = mappedRanges.getMappedRanges();
@@ -330,7 +330,7 @@
 
     @Override
     public RetraceFrameResultImpl lookupFrame(
-        RetraceStackTraceContext context, Optional<Integer> position, String methodName) {
+        RetraceStackTraceContext context, OptionalInt position, String methodName) {
       return lookupFrame(
           context,
           position,
@@ -340,7 +340,7 @@
     @Override
     public RetraceFrameResult lookupFrame(
         RetraceStackTraceContext context,
-        Optional<Integer> position,
+        OptionalInt position,
         String methodName,
         List<TypeReference> formalTypes,
         TypeReference returnType) {
@@ -354,9 +354,7 @@
 
     @Override
     public RetraceFrameResult lookupFrame(
-        RetraceStackTraceContext context,
-        Optional<Integer> position,
-        MethodReference methodReference) {
+        RetraceStackTraceContext context, OptionalInt position, MethodReference methodReference) {
       return lookupFrame(context, position, MethodDefinition.create(methodReference));
     }
 
@@ -367,7 +365,7 @@
     }
 
     private RetraceFrameResultImpl lookupFrame(
-        RetraceStackTraceContext context, Optional<Integer> position, MethodDefinition definition) {
+        RetraceStackTraceContext context, OptionalInt position, MethodDefinition definition) {
       MethodDefinition methodDefinition =
           MethodDefinition.create(classReference.getClassReference(), definition.getName());
       ImmutableList.Builder<Pair<RetraceClassElementImpl, List<MappedRange>>> builder =
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java
index 2ed242c..21060dc 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceFrameResultImpl.java
@@ -26,7 +26,7 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.Optional;
+import java.util.OptionalInt;
 import java.util.function.BiConsumer;
 import java.util.stream.Stream;
 
@@ -34,7 +34,7 @@
 
   private final RetraceClassResultImpl classResult;
   private final MethodDefinition methodDefinition;
-  private final Optional<Integer> obfuscatedPosition;
+  private final OptionalInt obfuscatedPosition;
   private final List<Pair<RetraceClassElementImpl, List<MappedRange>>> mappedRanges;
   private final RetracerImpl retracer;
   private final RetraceStackTraceContextImpl context;
@@ -45,7 +45,7 @@
       RetraceClassResultImpl classResult,
       List<Pair<RetraceClassElementImpl, List<MappedRange>>> mappedRanges,
       MethodDefinition methodDefinition,
-      Optional<Integer> obfuscatedPosition,
+      OptionalInt obfuscatedPosition,
       RetracerImpl retracer,
       RetraceStackTraceContextImpl context) {
     this.classResult = classResult;
@@ -137,9 +137,7 @@
   }
 
   private RetracedMethodReferenceImpl getRetracedMethod(
-      MethodReference methodReference,
-      MappedRange mappedRange,
-      Optional<Integer> obfuscatedPosition) {
+      MethodReference methodReference, MappedRange mappedRange, OptionalInt obfuscatedPosition) {
     if (mappedRange.minifiedRange == null
         || (obfuscatedPosition.orElse(-1) == -1 && !isAmbiguous())) {
       int originalLineNumber = mappedRange.getFirstLineNumberOfOriginalRange();
@@ -150,11 +148,11 @@
       }
     }
     if (!obfuscatedPosition.isPresent()
-        || !mappedRange.minifiedRange.contains(obfuscatedPosition.get())) {
+        || !mappedRange.minifiedRange.contains(obfuscatedPosition.getAsInt())) {
       return RetracedMethodReferenceImpl.create(methodReference);
     }
     return RetracedMethodReferenceImpl.create(
-        methodReference, mappedRange.getOriginalLineNumber(obfuscatedPosition.get()));
+        methodReference, mappedRange.getOriginalLineNumber(obfuscatedPosition.getAsInt()));
   }
 
   public static class ElementImpl implements RetraceFrameElement {
@@ -163,7 +161,7 @@
     private final RetraceFrameResultImpl retraceFrameResult;
     private final RetraceClassElementImpl classElement;
     private final List<MappedRange> mappedRanges;
-    private final Optional<Integer> obfuscatedPosition;
+    private final OptionalInt obfuscatedPosition;
     private final RetracerImpl retracer;
     private final RetraceStackTraceContextImpl context;
 
@@ -172,7 +170,7 @@
         RetraceClassElementImpl classElement,
         RetracedMethodReferenceImpl methodReference,
         List<MappedRange> mappedRanges,
-        Optional<Integer> obfuscatedPosition,
+        OptionalInt obfuscatedPosition,
         RetracerImpl retracer,
         RetraceStackTraceContextImpl context) {
       this.methodReference = methodReference;
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java
index be2b14a..978a933 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetraceMethodResultImpl.java
@@ -18,7 +18,7 @@
 import com.google.common.collect.ImmutableList;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
+import java.util.OptionalInt;
 import java.util.stream.Stream;
 
 public class RetraceMethodResultImpl implements RetraceMethodResult {
@@ -93,7 +93,7 @@
         classResult,
         narrowedRanges.isEmpty() ? noMappingRanges : narrowedRanges,
         methodDefinition,
-        Optional.of(position),
+        OptionalInt.of(position),
         retracer,
         (RetraceStackTraceContextImpl) context);
   }
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementProxyRetracerImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementProxyRetracerImpl.java
index 80659ff..4db09aa 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementProxyRetracerImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/StackTraceElementProxyRetracerImpl.java
@@ -25,7 +25,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Optional;
+import java.util.OptionalInt;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -108,7 +108,9 @@
           RetraceFrameResult frameResult =
               classResult.lookupFrame(
                   proxy.context,
-                  element.hasLineNumber() ? Optional.of(element.getLineNumber()) : Optional.empty(),
+                  element.hasLineNumber()
+                      ? OptionalInt.of(element.getLineNumber())
+                      : OptionalInt.empty(),
                   element.getMethodName());
           return frameResult.stream()
               .flatMap(
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiRewriteFrameInlineNpeResidualTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiRewriteFrameInlineNpeResidualTest.java
index 7108c80..686f785 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiRewriteFrameInlineNpeResidualTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiRewriteFrameInlineNpeResidualTest.java
@@ -20,7 +20,7 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
+import java.util.OptionalInt;
 import java.util.stream.Collectors;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -110,7 +110,7 @@
           retracer.retraceClass(Reference.classFromTypeName(typeName)).stream()
               .flatMap(
                   element ->
-                      element.lookupFrame(throwingContext, Optional.of(4), methodName).stream())
+                      element.lookupFrame(throwingContext, OptionalInt.of(4), methodName).stream())
               .collect(Collectors.toList());
       assertEquals(1, retraceFrameElements.size());
 
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiRewriteFrameInlineNpeTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiRewriteFrameInlineNpeTest.java
index d1efa90..f581c1b 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiRewriteFrameInlineNpeTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiRewriteFrameInlineNpeTest.java
@@ -21,7 +21,7 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
+import java.util.OptionalInt;
 import java.util.stream.Collectors;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -75,7 +75,7 @@
       List<RetraceFrameElement> retraceFrameElements =
           retracer.retraceClass(Reference.classFromTypeName("a")).stream()
               .flatMap(
-                  element -> element.lookupFrame(throwingContext, Optional.of(4), "a").stream())
+                  element -> element.lookupFrame(throwingContext, OptionalInt.of(4), "a").stream())
               .collect(Collectors.toList());
       assertEquals(1, retraceFrameElements.size());
 
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiSynthesizedFrameTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiSynthesizedFrameTest.java
index e4faf03..c502dd7 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiSynthesizedFrameTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiSynthesizedFrameTest.java
@@ -16,7 +16,7 @@
 import com.android.tools.r8.retrace.Retracer;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
+import java.util.OptionalInt;
 import java.util.stream.Collectors;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -53,7 +53,7 @@
               .flatMap(
                   element ->
                       element
-                          .lookupFrame(RetraceStackTraceContext.empty(), Optional.of(3), "a")
+                          .lookupFrame(RetraceStackTraceContext.empty(), OptionalInt.of(3), "a")
                           .stream())
               .collect(Collectors.toList());
       assertEquals(1, frameResults.size());
diff --git a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiSynthesizedInnerFrameTest.java b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiSynthesizedInnerFrameTest.java
index c2c5f3c..f0f5631 100644
--- a/src/test/java/com/android/tools/r8/retrace/api/RetraceApiSynthesizedInnerFrameTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/api/RetraceApiSynthesizedInnerFrameTest.java
@@ -16,7 +16,7 @@
 import com.android.tools.r8.retrace.Retracer;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
+import java.util.OptionalInt;
 import java.util.stream.Collectors;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -53,7 +53,7 @@
               .flatMap(
                   element ->
                       element
-                          .lookupFrame(RetraceStackTraceContext.empty(), Optional.of(3), "a")
+                          .lookupFrame(RetraceStackTraceContext.empty(), OptionalInt.of(3), "a")
                           .stream())
               .collect(Collectors.toList());
       assertEquals(1, frameResults.size());
diff --git a/third_party/retrace/binary_compatibility.tar.gz.sha1 b/third_party/retrace/binary_compatibility.tar.gz.sha1
index cce1435..91fb6e2 100644
--- a/third_party/retrace/binary_compatibility.tar.gz.sha1
+++ b/third_party/retrace/binary_compatibility.tar.gz.sha1
@@ -1 +1 @@
-4f3dc9552168bb143e4873ef62d446525343f208
\ No newline at end of file
+2874b66e58b8d9f408ce37d85709fed11a3b94a7
\ No newline at end of file