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 5bb9ca1..2b01885 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -16,18 +16,18 @@
 import com.android.tools.r8.retrace.internal.RetraceAbortException;
 import com.android.tools.r8.retrace.internal.RetracerImpl;
 import com.android.tools.r8.retrace.internal.StackTraceRegularExpressionParser;
+import com.android.tools.r8.utils.Box;
 import com.android.tools.r8.utils.ExceptionDiagnostic;
 import com.android.tools.r8.utils.ListUtils;
 import com.android.tools.r8.utils.OptionsParsing;
 import com.android.tools.r8.utils.OptionsParsing.ParseContext;
+import com.android.tools.r8.utils.Pair;
 import com.android.tools.r8.utils.StringDiagnostic;
 import com.android.tools.r8.utils.StringUtils;
 import com.android.tools.r8.utils.Timing;
 import com.google.common.base.Charsets;
 import com.google.common.base.Equivalence;
 import com.google.common.base.Equivalence.Wrapper;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterators;
 import com.google.common.io.CharStreams;
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -39,17 +39,14 @@
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Scanner;
 import java.util.Set;
-import java.util.TreeMap;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -178,7 +175,7 @@
    * @param stackTrace the stack trace to be retrace
    * @return list of potentially ambiguous stack traces.
    */
-  public List<Iterator<T>> retraceStackTrace(List<T> stackTrace) {
+  public List<List<List<T>>> retraceStackTrace(List<T> stackTrace) {
     ListUtils.forEachWithIndex(
         stackTrace,
         (line, lineNumber) -> {
@@ -190,37 +187,43 @@
         });
     RetraceStackTraceElementProxyEquivalence<T, ST> equivalence =
         new RetraceStackTraceElementProxyEquivalence<>(isVerbose);
-    RetracedNodeState<T, ST> root = RetracedNodeState.initial(equivalence);
-    List<RetracedNodeState<T, ST>> allLeaves =
-        ListUtils.fold(
-            stackTrace,
-            (List<RetracedNodeState<T, ST>>) ImmutableList.of(root),
-            (acc, stackTraceLine) -> {
-              ST parsedLine = stackTraceLineParser.parse(stackTraceLine);
-              List<RetracedNodeState<T, ST>> newLeaves = new ArrayList<>();
-              for (RetracedNodeState<T, ST> previousNode : acc) {
-                RetraceStackTraceElementProxyResult<T, ST> result =
-                    proxyRetracer.retrace(parsedLine, previousNode.context);
-                result.stream()
-                    .forEach(
-                        retracedElement -> {
-                          if (retracedElement.isTopFrame() || !retracedElement.hasRetracedClass()) {
-                            previousNode.addChild(retracedElement, retracedElement.getContext());
-                          }
-                          previousNode.addFrameToCurrentChild(
-                              parsedLine.toRetracedItem(retracedElement, isVerbose));
-                        });
-                if (!previousNode.hasChildren()) {
-                  // This happens when there is nothing to retrace. Add the node to newLeaves to
-                  // ensure we keep retracing this path.
-                  previousNode.addChild(null, result.getResultContext());
-                }
-                newLeaves.addAll(previousNode.getChildren());
-              }
-              return newLeaves;
-            });
-    assert !allLeaves.isEmpty();
-    return ListUtils.map(allLeaves, RetracedNodeState::iterator);
+    List<List<List<T>>> finalResult = new ArrayList<>();
+    ListUtils.fold(
+        stackTrace,
+        RetraceStackTraceContext.empty(),
+        (context, stackTraceLine) -> {
+          ST parsedLine = stackTraceLineParser.parse(stackTraceLine);
+          List<Pair<RetraceStackTraceElementProxy<T, ST>, List<T>>> resultsForLine =
+              new ArrayList<>();
+          Box<List<T>> currentList = new Box<>();
+          Set<Wrapper<RetraceStackTraceElementProxy<T, ST>>> seen = new HashSet<>();
+          List<RetraceStackTraceContext> contexts = new ArrayList<>();
+          RetraceStackTraceElementProxyResult<T, ST> retraceResult =
+              proxyRetracer.retrace(parsedLine, context);
+          retraceResult.stream()
+              .forEach(
+                  retracedElement -> {
+                    if (retracedElement.isTopFrame() || !retracedElement.hasRetracedClass()) {
+                      if (seen.add(equivalence.wrap(retracedElement))) {
+                        currentList.set(new ArrayList<>());
+                        resultsForLine.add(Pair.create(retracedElement, currentList.get()));
+                        contexts.add(retracedElement.getContext());
+                      } else {
+                        currentList.empty();
+                      }
+                    }
+                    if (currentList.isSet()) {
+                      currentList.get().add(parsedLine.toRetracedItem(retracedElement, isVerbose));
+                    }
+                  });
+          resultsForLine.sort(Comparator.comparing(Pair::getFirst));
+          finalResult.add(ListUtils.map(resultsForLine, Pair::getSecond));
+          if (contexts.isEmpty()) {
+            return retraceResult.getResultContext();
+          }
+          return contexts.size() == 1 ? contexts.get(0) : RetraceStackTraceContext.empty();
+        });
+    return finalResult;
   }
 
   /**
@@ -598,63 +601,4 @@
       return new RetraceStackTraceElementProxyEquivalence<>(isVerbose);
     }
   }
-
-  private static class RetracedNodeState<T, ST extends StackTraceElementProxy<T, ST>>
-      implements Iterable<T> {
-
-    private final RetracedNodeState<T, ST> parent;
-    private final Set<Wrapper<RetraceStackTraceElementProxy<T, ST>>> seenSet = new HashSet<>();
-    private final Map<RetraceStackTraceElementProxy<T, ST>, RetracedNodeState<T, ST>> children =
-        new TreeMap<>(Comparator.nullsFirst(Comparator.naturalOrder()));
-    private RetracedNodeState<T, ST> currentChild;
-    private final RetraceStackTraceContext context;
-    private final List<T> frames = new ArrayList<>();
-    private final RetraceStackTraceElementProxyEquivalence<T, ST> equivalence;
-
-    private RetracedNodeState(
-        RetracedNodeState<T, ST> parent,
-        RetraceStackTraceContext context,
-        RetraceStackTraceElementProxyEquivalence<T, ST> equivalence) {
-      this.parent = parent;
-      this.context = context;
-      this.equivalence = equivalence;
-    }
-
-    private void addFrameToCurrentChild(T frame) {
-      if (currentChild != null) {
-        currentChild.frames.add(frame);
-      }
-    }
-
-    private void addChild(
-        RetraceStackTraceElementProxy<T, ST> element, RetraceStackTraceContext context) {
-      if (seenSet.add(equivalence.wrap(element))) {
-        RetracedNodeState<T, ST> newChild = new RetracedNodeState<>(this, context, equivalence);
-        this.currentChild = newChild;
-        children.put(element, newChild);
-      } else {
-        this.currentChild = null;
-      }
-    }
-
-    private static <T, ST extends StackTraceElementProxy<T, ST>> RetracedNodeState<T, ST> initial(
-        RetraceStackTraceElementProxyEquivalence<T, ST> equivalence) {
-      return new RetracedNodeState<>(null, RetraceStackTraceContext.empty(), equivalence);
-    }
-
-    @Override
-    public Iterator<T> iterator() {
-      return parent != null
-          ? Iterators.concat(parent.iterator(), frames.iterator())
-          : frames.iterator();
-    }
-
-    public boolean hasChildren() {
-      return !children.isEmpty();
-    }
-
-    public Collection<? extends RetracedNodeState<T, ST>> getChildren() {
-      return children.values();
-    }
-  }
 }
diff --git a/src/main/java/com/android/tools/r8/retrace/StringRetrace.java b/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
index e68c6f6..29ee4d2 100644
--- a/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
@@ -9,12 +9,10 @@
 import com.android.tools.r8.DiagnosticsHandler;
 import com.android.tools.r8.Keep;
 import com.android.tools.r8.retrace.internal.StackTraceElementStringProxy;
-import com.android.tools.r8.utils.BooleanBox;
 import com.android.tools.r8.utils.ListUtils;
 import com.android.tools.r8.utils.StringUtils;
 import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import java.util.function.Consumer;
@@ -79,31 +77,28 @@
    */
   public List<String> retrace(List<String> stackTrace) {
     List<String> retracedStrings = new ArrayList<>();
-    List<Iterator<String>> retracedStackTraces = retraceStackTrace(stackTrace);
-    if (retracedStackTraces.size() > 1 && isVerbose) {
-      retracedStrings.add("There are " + retracedStackTraces.size() + " ambiguous stack traces.");
-    }
-    for (int i = 0; i < retracedStackTraces.size(); i++) {
-      Iterator<String> result = retracedStackTraces.get(i);
-      BooleanBox insertOr = new BooleanBox(i > 0);
-      result.forEachRemaining(
-          stackTraceLine -> {
-            if (insertOr.get()) {
-              // We are reporting an ambiguous frame. To support retracing tools that retrace line
-              // by line we have to emit <OR> at the point of the first ' at ' if we can find it.
-              int indexToInsertOr = stackTraceLine.indexOf(" at ");
-              boolean hasSpace = indexToInsertOr >= 0;
-              if (indexToInsertOr < 0) {
-                indexToInsertOr =
-                    Math.max(StringUtils.firstNonWhitespaceCharacter(stackTraceLine), 0);
+    List<List<List<String>>> lists = retraceStackTrace(stackTrace);
+    for (List<List<String>> newLines : lists) {
+      ListUtils.forEachWithIndex(
+          newLines,
+          (inlineFrames, ambiguousIndex) -> {
+            for (int i = 0; i < inlineFrames.size(); i++) {
+              String stackTraceLine = inlineFrames.get(i);
+              if (i == 0 && ambiguousIndex > 0) {
+                // We are reporting an ambiguous frame. To support retracing tools that retrace line
+                // by line we have to emit <OR> at the point of the first 'at ' if we can find it.
+                int indexToInsertOr = stackTraceLine.indexOf("at ");
+                if (indexToInsertOr < 0) {
+                  indexToInsertOr =
+                      Math.max(StringUtils.firstNonWhitespaceCharacter(stackTraceLine), 0);
+                }
+                retracedStrings.add(
+                    stackTraceLine.substring(0, indexToInsertOr)
+                        + "<OR> "
+                        + stackTraceLine.substring(indexToInsertOr));
+              } else {
+                retracedStrings.add(stackTraceLine);
               }
-              retracedStrings.add(
-                  stackTraceLine.substring(0, indexToInsertOr)
-                      + (hasSpace ? "<OR>" : "<OR> ")
-                      + stackTraceLine.substring(indexToInsertOr));
-              insertOr.set(false);
-            } else {
-              retracedStrings.add(stackTraceLine);
             }
           });
     }
diff --git a/src/main/java/com/android/tools/r8/utils/Box.java b/src/main/java/com/android/tools/r8/utils/Box.java
index de67cf6..2e6f17c 100644
--- a/src/main/java/com/android/tools/r8/utils/Box.java
+++ b/src/main/java/com/android/tools/r8/utils/Box.java
@@ -62,4 +62,8 @@
   public int hashCode() {
     return Objects.hashCode(value);
   }
+
+  public void empty() {
+    value = null;
+  }
 }
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 39b8239..9a95fa7 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -201,24 +201,6 @@
           .put(
               "145-alloc-tracking-stress",
               TestCondition.match(TestCondition.runtimes(DexVm.Version.V12_0_0)))
-          // Art in 12.0.0 beta4 will hang on this test when running on dx input.
-          // D8 will never generate the code introducing this (goto32 0)
-          // See: b/200660605
-          .put(
-              "083-compiler-regressions",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.DX),
-                  TestCondition.compilers(CompilerUnderTest.D8),
-                  TestCondition.runtimes(DexVm.Version.V12_0_0)))
-          // Art in 12.0.0 beta4 will hang on this test when running on dx input.
-          // D8 will never generate the code introducing this (goto32 0)
-          // See: b/200660605
-          .put(
-              "121-simple-suspend-check",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.DX),
-                  TestCondition.compilers(CompilerUnderTest.D8),
-                  TestCondition.runtimes(DexVm.Version.V12_0_0)))
           .build();
 
   // Tests that are flaky with the Art version we currently use.
@@ -666,15 +648,6 @@
   // Tests where the output of R8 fails when run with Art.
   private static final Multimap<String, TestCondition> failingRunWithArt =
       new ImmutableListMultimap.Builder<String, TestCondition>()
-          // The itf cache issue is hit on dx inputs on the runtime with the issue as we no longer
-          // desugar.
-          // TODO(b/198306901): Investigate this behavior change fully. Do we need a workaround?
-          .put(
-              "666-dex-cache-itf",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.DX),
-                  TestCondition.compilers(CompilerUnderTest.R8),
-                  TestCondition.runtimes(DexVm.Version.DEFAULT)))
           // The growth limit test fails after processing by R8 because R8 will eliminate an
           // "unneeded" const store. The following reflective call to the VM's GC will then see the
           // large array as still live and the subsequent allocations will fail to reach the desired
@@ -703,14 +676,6 @@
               "111-unresolvable-exception",
               TestCondition.match(
                   TestCondition.D8_COMPILER, TestCondition.runtimesUpTo(DexVm.Version.V4_4_4)))
-          // Fails because the code has to be desugared to run on art <= 6.0.1
-          // When running from dx code we don't desugar.
-          .put(
-              "530-checker-lse2",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.DX),
-                  TestCondition.compilers(CompilerUnderTest.R8, CompilerUnderTest.D8),
-                  TestCondition.runtimesUpTo(DexVm.Version.V6_0_1)))
           .put(
               "534-checker-bce-deoptimization",
               TestCondition.match(
@@ -771,17 +736,6 @@
               "550-new-instance-clinit",
               TestCondition.match(
                   TestCondition.D8_COMPILER, TestCondition.runtimes(DexVm.Version.V6_0_1)))
-          // Regression test for an issue that is not fixed on version 5.1.1. Throws an Exception
-          // instance instead of the expected NullPointerException. This bug is only tickled when
-          // running the R8 generated code when starting from jar or from dex code generated with
-          // dx. However, the code that R8 generates is valid and there is nothing we can do for
-          // this one.
-          .put(
-              "551-implicit-null-checks",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.NONE, DexTool.DX),
-                  TestCondition.R8DEX_COMPILER,
-                  TestCondition.runtimes(DexVm.Version.V5_1_1)))
           // Contains a method (B.<init>) which pass too few arguments to invoke. Also, contains an
           // iput on a static field.
           .put(
@@ -804,14 +758,6 @@
               TestCondition.match(TestCondition.runtimes(DexVm.Version.V4_0_4)))
           // Illegal class flags in Dalvik 4.0.4.
           .put("121-modifiers", TestCondition.match(TestCondition.runtimes(DexVm.Version.V4_0_4)))
-          // Switch regression still present in the DEX code produced by DX on Dalvik 4.0.4.
-          // The fix for b/177790310 is not applied for DEX input (when merging).
-          .put(
-              "095-switch-MAX_INT",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.DX),
-                  TestCondition.compilers(CompilerUnderTest.D8),
-                  TestCondition.runtimes(DexVm.Version.V4_0_4)))
           .build();
 
   // Tests where the output of R8/D8 runs in Art but produces different output than the expected.txt
@@ -901,17 +847,6 @@
                           CompilerUnderTest.R8,
                           CompilerUnderTest.R8CF,
                           CompilerUnderTest.R8_AFTER_D8))))
-          // Uses dex file version 37 and therefore only runs on Android N and above.
-          .put(
-              "370-dex-v37",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.DX),
-                  TestCondition.compilers(CompilerUnderTest.D8),
-                  TestCondition.runtimes(
-                      DexVm.Version.V4_0_4,
-                      DexVm.Version.V4_4_4,
-                      DexVm.Version.V5_1_1,
-                      DexVm.Version.V6_0_1)))
           // Class.forName() that fails due to verification error is removed.
           .put(
               "412-new-array",
@@ -1001,36 +936,6 @@
           .put("973-default-multidex", beforeAndroidN) // --min-sdk = 24
           .put("974-verify-interface-super", beforeAndroidN) // --min-sdk = 24
           .put("975-iface-private", beforeAndroidN) // --min-sdk = 24
-          // Uses dex file version 37 and therefore only runs on Android N and above.
-          .put(
-              "972-iface-super-multidex",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.DX),
-                  TestCondition.runtimes(
-                      DexVm.Version.V4_0_4,
-                      DexVm.Version.V4_4_4,
-                      DexVm.Version.V5_1_1,
-                      DexVm.Version.V6_0_1)))
-          // Uses dex file version 37 and therefore only runs on Android N and above.
-          .put(
-              "978-virtual-interface",
-              TestCondition.or(
-                  TestCondition.match(
-                      TestCondition.tools(DexTool.DX),
-                      TestCondition.compilers(CompilerUnderTest.D8),
-                      TestCondition.runtimes(
-                          DexVm.Version.V4_0_4,
-                          DexVm.Version.V4_4_4,
-                          DexVm.Version.V5_1_1,
-                          DexVm.Version.V6_0_1)),
-                  // On V4_0_4 and V4_4_4 the test will throw a verification error.
-                  TestCondition.match(
-                      TestCondition.tools(DexTool.DX),
-                      TestCondition.compilers(
-                          CompilerUnderTest.R8,
-                          CompilerUnderTest.R8_AFTER_D8,
-                          CompilerUnderTest.D8_AFTER_R8CF),
-                      TestCondition.runtimes(DexVm.Version.V4_0_4, DexVm.Version.V4_4_4))))
           .put("979-const-method-handle", beforeAndroidP)
           // Missing class junit.framework.Assert (see JunitAvailabilityInHostArtTest).
           // TODO(120884788): Add this again.
@@ -1068,16 +973,6 @@
           // Dex code contains a method (B.<init>) which pass too few arguments to invoke, and it
           // also contains an iput on a static field.
           .put("600-verifier-fails", TestCondition.match(TestCondition.R8DEX_COMPILER))
-          // Contains a method that falls off the end without a return.
-          .put(
-              "606-erroneous-class",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.DX),
-                  TestCondition.R8_NOT_AFTER_D8_COMPILER,
-                  LEGACY_RUNTIME))
-          // Dex input contains an illegal InvokeSuper in Z.foo() to Y.foo()
-          // that R8 will fail to compile.
-          .put("974-verify-interface-super", TestCondition.match(TestCondition.R8DEX_COMPILER))
           // R8 generates too large code in Goto.bigGoto(). b/74327727
           .put("003-omnibus-opcodes", TestCondition.match(TestCondition.D8_AFTER_R8CF_COMPILER))
           .build();
@@ -1102,8 +997,6 @@
           .put("506-verify-aput", TestCondition.match(TestCondition.R8DEX_COMPILER))
           // Test with invalid register usage: returns a register of either long or double.
           .put("510-checker-try-catch", TestCondition.match(TestCondition.R8DEX_COMPILER))
-          // Test with backport method which is still present in DX input.
-          .put("530-checker-lse2", TestCondition.match(TestCondition.tools(DexTool.DX)))
           // Test with invalid register usage: contains an int-to-byte on the result of aget-object.
           .put("518-null-array-get", TestCondition.match(TestCondition.R8DEX_COMPILER))
           // Test with invalid register usage: phi of int and float.
@@ -1112,21 +1005,11 @@
           .put("552-checker-primitive-typeprop", TestCondition.match(TestCondition.R8DEX_COMPILER))
           // Test with invalid register usage: invoke-static {v0,v0}, foo(IL)V
           .put("557-checker-ref-equivalent", TestCondition.match(TestCondition.R8DEX_COMPILER))
-          // Test with smali code that calls a method that needs to be desugared.
-          // The smali code is only present in the non-legacy test distrubution, so this only fails
-          // when running the "default" runtime.
-          .put(
-              "567-checker-compare",
-              TestCondition.or(
-                  TestCondition.match(TestCondition.runtimes(Runtime.ART_DEFAULT)),
-                  TestCondition.match(TestCondition.tools(DexTool.DX))))
           // This test is starting from invalid dex code. It splits up a double value and uses
           // the first register of a double with the second register of another double.
           .put("800-smali", TestCondition.match(TestCondition.R8DEX_COMPILER))
           // Contains a loop in the class hierarchy.
           .put("804-class-extends-itself", TestCondition.any())
-          // Test with backport method which is still present in DX input.
-          .put("912-classes", TestCondition.match(TestCondition.tools(DexTool.DX)))
           // These tests have illegal class flag combinations, so we reject them.
           .put("161-final-abstract-class", TestCondition.any())
           .build();
@@ -1227,14 +1110,6 @@
                   TestCondition.tools(DexTool.DX, DexTool.NONE), TestCondition.R8_COMPILER))
           // Produces wrong output when compiled in release mode, which we cannot express.
           .put("015-switch", TestCondition.match(TestCondition.runtimes(DexVm.Version.V4_0_4)))
-          // To prevent "Dex file with version '37' cannot be used with min sdk level '21'", which
-          // would otherwise happen because D8 passes through the DEX code from DX.
-          .put(
-              "800-smali",
-              TestCondition.match(
-                  TestCondition.tools(DexTool.DX),
-                  TestCondition.D8_COMPILER,
-                  TestCondition.runtimesFrom(DexVm.Version.V5_1_1)))
           .build();
 
   public static List<String> requireInliningToBeDisabled =
@@ -2548,8 +2423,7 @@
         expectException(CompilationError.class);
         throw new CompilationError(e.getMessage(), e);
       }
-      System.err.println("Should have failed R8/D8 compilation with a CompilationError.");
-      return;
+      throw new RuntimeException("Should have failed R8/D8 compilation with a CompilationError.");
     } else if (specification.failsWithX8) {
       expectException(Throwable.class);
       executeCompilerUnderTest(
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java
index 3facf5f..51acd54 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java
@@ -40,16 +40,11 @@
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 2 ambiguous stack traces.",
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.c(Main.java)",
         "\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo"
             + " main(java.lang.String[])(Main.java)",
-        "\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo"
-            + " main(java.lang.String[],com.android.Bar)(Main.java)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.c(Main.java)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void main(com.android.Bar)(Main.java)",
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void main(com.android.Bar)(Main.java)",
         "\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo"
             + " main(java.lang.String[],com.android.Bar)(Main.java)");
   }
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java
index 484fb5f..2e2a527 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java
@@ -27,121 +27,28 @@
     return Arrays.asList(
         "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.bar(R8.java:7)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java:7)",
         "    at com.android.tools.r8.R8.bar(R8.java:8)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java:8)",
         "    at com.android.tools.r8.R8.main(Unknown Source)",
         "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.bar(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java:7)",
-        "    at com.android.tools.r8.R8.bar(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java:7)",
-        "    at com.android.tools.r8.R8.foo(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java:7)",
-        "    at com.android.tools.r8.R8.foo(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java:7)",
-        "    at com.android.tools.r8.R8.bar(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java:7)",
-        "    at com.android.tools.r8.R8.bar(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java:7)",
-        "    at com.android.tools.r8.R8.foo(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java:7)",
-        "    at com.android.tools.r8.R8.foo(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java:9)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java:9)",
         "    ... 42 more");
   }
 
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 8 ambiguous stack traces.",
         "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
         "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:8)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
         "    at com.android.tools.r8.R8.main(Unknown Source)",
         "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
         "    ... 42 more");
   }
 
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java
index f6704a4..a5241a8 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java
@@ -27,121 +27,28 @@
     return Arrays.asList(
         "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.bar(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java)",
         "    at com.android.tools.r8.R8.bar(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java)",
         "    at com.android.tools.r8.R8.main(Unknown Source)",
         "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java)",
         "    ... 42 more");
   }
 
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 8 ambiguous stack traces.",
         "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
         "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
         "    at com.android.tools.r8.R8.main(Unknown Source)",
         "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
         "    ... 42 more");
   }
 
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
index 4015e0e..51a9249 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
@@ -38,16 +38,11 @@
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 3 ambiguous stack traces.",
         "java.lang.IndexOutOfBoundsException",
         "\tat java.util.ArrayList.get(ArrayList.java:411)",
         "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:10)",
-        "<OR> java.lang.IndexOutOfBoundsException",
-        "\tat java.util.ArrayList.get(ArrayList.java:411)",
-        "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:11)",
-        "<OR> java.lang.IndexOutOfBoundsException",
-        "\tat java.util.ArrayList.get(ArrayList.java:411)",
-        "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:12)");
+        "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java:11)",
+        "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java:12)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java
index 212976f..c9ed69c 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java
@@ -39,19 +39,12 @@
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 4 ambiguous stack traces.",
         "java.lang.IndexOutOfBoundsException",
         "\tat java.util.ArrayList.get(ArrayList.java:411)",
         "\tat com.android.tools.r8.Internal.boolean foo(int,int)(Internal.java:13)",
-        "<OR> java.lang.IndexOutOfBoundsException",
-        "\tat java.util.ArrayList.get(ArrayList.java:411)",
-        "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:10)",
-        "<OR> java.lang.IndexOutOfBoundsException",
-        "\tat java.util.ArrayList.get(ArrayList.java:411)",
-        "\tat com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java:12)",
-        "<OR> java.lang.IndexOutOfBoundsException",
-        "\tat java.util.ArrayList.get(ArrayList.java:411)",
-        "\tat com.android.tools.r8.Internal.void foo(int,int)(Internal.java:11)");
+        "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java:10)",
+        "\t<OR> at com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java:12)",
+        "\t<OR> at com.android.tools.r8.Internal.void foo(int,int)(Internal.java:11)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/DifferentLineNumberSpanStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/DifferentLineNumberSpanStackTrace.java
index b4efedd..ef9853e 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/DifferentLineNumberSpanStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/DifferentLineNumberSpanStackTrace.java
@@ -29,24 +29,19 @@
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:42)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:43)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:44)");
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.method1(Main.java:43)",
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.method1(Main.java:44)");
   }
 
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 3 ambiguous stack traces.",
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " method1(java.lang.String)(Main.java:42)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " method1(java.lang.String)(Main.java:43)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " method1(java.lang.String)(Main.java:44)");
   }
 
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
index a961d7b..b1a31db 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
@@ -31,20 +31,17 @@
     return Arrays.asList(
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java)",
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.method1(Main.java)",
         "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)");
   }
 
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 2 ambiguous stack traces.",
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " main(java.lang.String[])(Main.java:153)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " method1(java.lang.String)(Main.java:42)",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " main(java.lang.String[])(Main.java:28)");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleOriginalLinesNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleOriginalLinesNoLineNumberStackTrace.java
index a4b4fa3..93a3567 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleOriginalLinesNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleOriginalLinesNoLineNumberStackTrace.java
@@ -33,12 +33,10 @@
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 2 ambiguous stack traces.",
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " method1(java.lang.String)(Main.java:42)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " method1(java.lang.String)(Main.java:43)");
   }
 
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java
index 273b002..d444bcf 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java
@@ -38,11 +38,7 @@
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:3)",
         "\tat com.android.tools.r8.naming.retrace.Main.overload1(Main.java)",
-        "\tat com.android.tools.r8.naming.retrace.Main.definedOverload(Main.java)",
-        "\tat com.android.tools.r8.naming.retrace.Main.mainPC(Main.java:42)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:3)",
-        "\tat com.android.tools.r8.naming.retrace.Main.overload2(Main.java)",
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.overload2(Main.java)",
         "\tat com.android.tools.r8.naming.retrace.Main.definedOverload(Main.java)",
         "\tat com.android.tools.r8.naming.retrace.Main.mainPC(Main.java:42)");
   }
@@ -50,32 +46,13 @@
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 4 ambiguous stack traces.",
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String)(Main.java:3)",
         "\tat com.android.tools.r8.naming.retrace.Main.void overload1()(Main.java:7)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void definedOverload()(Main.java:7)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " mainPC(java.lang.String[])(Main.java:42)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String)(Main.java:3)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void overload1()(Main.java:7)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " definedOverload(java.lang.String)(Main.java:11)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " mainPC(java.lang.String[])(Main.java:42)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String)(Main.java:3)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " overload2(java.lang.String)(Main.java:11)",
         "\tat com.android.tools.r8.naming.retrace.Main.void definedOverload()(Main.java:7)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " mainPC(java.lang.String[])(Main.java:42)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String)(Main.java:3)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " overload2(java.lang.String)(Main.java:11)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " definedOverload(java.lang.String)(Main.java:11)",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " mainPC(java.lang.String[])(Main.java:42)");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java
index 81587cf..ea9ada4 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java
@@ -43,18 +43,12 @@
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 2 ambiguous stack traces.",
         "java.io.IOException: INVALID_SENDER",
         "\tat some.other.Class.void method1()(Class.java:42)",
         "\tat some.other.Class.void method1()(Class.java:42)",
         "\tat some.Class.a(Class.java:27)",
-        // TODO(b/202055473): Could emit range 11-13.
         "\tat some.Class.void method2()(Class.java)",
-        "<OR> java.io.IOException: INVALID_SENDER",
-        "\tat some.other.Class.void method1()(Class.java:42)",
-        "\tat some.other.Class.void method1()(Class.java:42)",
-        "\tat some.Class.a(Class.java:27)",
-        "\tat some.Class.void method2()(Class.java:10)");
+        "\t<OR> at some.Class.void method2()(Class.java:10)");
   }
 
   @Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java
index c30fdbf..914cc4b 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java
@@ -42,20 +42,13 @@
         "\tat com.android.tools.r8.naming.retrace.Main.method2(Main.java)",
         "\tat com.android.tools.r8.naming.retrace.Main.main2(Main.java)",
         "\tat com.android.tools.r8.naming.retrace.Main.main3(Main.java)",
-        "\tat com.android.tools.r8.naming.retrace.Main.main4(Main.java:153)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:42)",
-        "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:28)",
-        "\tat com.android.tools.r8.naming.retrace.Main.method2(Main.java)",
-        "\tat com.android.tools.r8.naming.retrace.Main.main2(Main.java)",
-        "\tat com.android.tools.r8.naming.retrace.Main.method3(Main.java)",
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.method3(Main.java)",
         "\tat com.android.tools.r8.naming.retrace.Main.main4(Main.java:153)");
   }
 
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 6 ambiguous stack traces.",
         "Exception in thread \"main\" java.lang.NullPointerException",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " method1(java.lang.String)(Main.java:42)",
@@ -64,67 +57,17 @@
             + " method2(java.lang.String)(Main.java:42)",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " main2(java.lang.String[])(Main.java:29)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main3(java.lang.String[])(Main.java:30)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main4(java.lang.String[])(Main.java:153)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method1(java.lang.String)(Main.java:42)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method2(java.lang.String)(Main.java:42)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main2(java.lang.String[])(Main.java:29)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method3(java.lang.String)(Main.java:72)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main4(java.lang.String[])(Main.java:153)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method1(java.lang.String)(Main.java:42)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " method2(java.lang.String)(Main.java:43)",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " main2(java.lang.String[])(Main.java:29)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main3(java.lang.String[])(Main.java:30)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main4(java.lang.String[])(Main.java:153)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method1(java.lang.String)(Main.java:42)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method2(java.lang.String)(Main.java:43)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main2(java.lang.String[])(Main.java:29)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method3(java.lang.String)(Main.java:72)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main4(java.lang.String[])(Main.java:153)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method1(java.lang.String)(Main.java:42)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " method2(java.lang.String)(Main.java:44)",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " main2(java.lang.String[])(Main.java:29)",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " main3(java.lang.String[])(Main.java:30)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main4(java.lang.String[])(Main.java:153)",
-        "<OR> Exception in thread \"main\" java.lang.NullPointerException",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method1(java.lang.String)(Main.java:42)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " method2(java.lang.String)(Main.java:44)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
-            + " main2(java.lang.String[])(Main.java:29)",
-        "\tat com.android.tools.r8.naming.retrace.Main.void"
+        "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
             + " method3(java.lang.String)(Main.java:72)",
         "\tat com.android.tools.r8.naming.retrace.Main.void"
             + " main4(java.lang.String[])(Main.java:153)");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java
index 3697b0c..a55423e 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java
@@ -27,121 +27,28 @@
     return Arrays.asList(
         "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.bar(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java)",
         "    at com.android.tools.r8.R8.bar(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java)",
         "    at com.android.tools.r8.R8.main(Unknown Source)",
         "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.bar(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.foo(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.foo(R8.java)",
         "    ... 42 more");
   }
 
   @Override
   public List<String> retraceVerboseStackTrace() {
     return Arrays.asList(
-        "There are 8 ambiguous stack traces.",
         "com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
         "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
         "    at com.android.tools.r8.R8.main(Unknown Source)",
         "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
         "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
-        "    ... 42 more",
-        "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
-        "    at com.android.tools.r8.R8.main(Unknown Source)",
-        "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
-        "    at com.android.tools.r8.R8.void foo(int)(R8.java)",
+        "    <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
         "    ... 42 more");
   }
 
diff --git a/tools/create_art_tests.py b/tools/create_art_tests.py
index 978b086..a64fe71 100755
--- a/tools/create_art_tests.py
+++ b/tools/create_art_tests.py
@@ -11,7 +11,6 @@
                           'android', 'tools', 'r8', 'art')
 TEST_DIR = os.path.join('tests', '2017-10-04', 'art')
 TOOLCHAINS = [
-    ("dx", os.path.join(TEST_DIR, "dx")),
     ("none", os.path.join(TEST_DIR, "dx")),
 ]
 TOOLS = ["r8", "d8", "r8cf"]
