diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceBase.java b/src/main/java/com/android/tools/r8/retrace/RetraceBase.java
index c5284ea..2874fc8 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceBase.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceBase.java
@@ -7,6 +7,7 @@
 import com.android.tools.r8.references.ClassReference;
 import com.android.tools.r8.references.FieldReference;
 import com.android.tools.r8.references.MethodReference;
+import com.android.tools.r8.references.TypeReference;
 
 public interface RetraceBase {
 
@@ -16,6 +17,8 @@
 
   RetraceClassResult retrace(ClassReference classReference);
 
+  RetraceTypeResult retrace(TypeReference typeReference);
+
   String retraceSourceFile(ClassReference classReference, String sourceFile);
 
   String retraceSourceFile(
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceBaseImpl.java b/src/main/java/com/android/tools/r8/retrace/RetraceBaseImpl.java
index ff196c1..c60cd91 100644
--- a/src/main/java/com/android/tools/r8/retrace/RetraceBaseImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceBaseImpl.java
@@ -8,6 +8,7 @@
 import com.android.tools.r8.references.ClassReference;
 import com.android.tools.r8.references.FieldReference;
 import com.android.tools.r8.references.MethodReference;
+import com.android.tools.r8.references.TypeReference;
 import com.android.tools.r8.utils.Box;
 import com.google.common.collect.Sets;
 import com.google.common.io.Files;
@@ -49,6 +50,11 @@
   }
 
   @Override
+  public RetraceTypeResult retrace(TypeReference typeReference) {
+    return new RetraceTypeResult(typeReference, this);
+  }
+
+  @Override
   public String retraceSourceFile(
       ClassReference obfuscatedClass,
       String sourceFile,
diff --git a/src/main/java/com/android/tools/r8/retrace/RetraceTypeResult.java b/src/main/java/com/android/tools/r8/retrace/RetraceTypeResult.java
new file mode 100644
index 0000000..b04d9a8
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/retrace/RetraceTypeResult.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.retrace;
+
+import com.android.tools.r8.references.Reference;
+import com.android.tools.r8.references.TypeReference;
+import com.android.tools.r8.retrace.RetraceTypeResult.Element;
+import java.util.function.Consumer;
+import java.util.stream.Stream;
+
+public class RetraceTypeResult extends Result<Element, RetraceTypeResult> {
+
+  private final TypeReference obfuscatedType;
+  private final RetraceBase retraceBase;
+
+  RetraceTypeResult(TypeReference obfuscatedType, RetraceBase retraceBase) {
+    this.obfuscatedType = obfuscatedType;
+    this.retraceBase = retraceBase;
+  }
+
+  public Stream<Element> stream() {
+    // Handle void and primitive types as single element results.
+    if (obfuscatedType == null || obfuscatedType.isPrimitive()) {
+      return Stream.of(new Element(obfuscatedType));
+    }
+    if (obfuscatedType.isArray()) {
+      int dimensions = obfuscatedType.asArray().getDimensions();
+      return retraceBase.retrace(obfuscatedType.asArray().getBaseType()).stream()
+          .map(base -> new Element(Reference.array(base.getTypeReference(), dimensions)));
+    }
+    return retraceBase.retrace(obfuscatedType.asClass()).stream()
+        .map(clazz -> new Element(clazz.getClassReference()));
+  }
+
+  @Override
+  public RetraceTypeResult forEach(Consumer<Element> resultConsumer) {
+    stream().forEach(resultConsumer);
+    return this;
+  }
+
+  public static class Element {
+
+    private final TypeReference typeReference;
+
+    public Element(TypeReference typeReference) {
+      this.typeReference = typeReference;
+    }
+
+    public TypeReference getTypeReference() {
+      return typeReference;
+    }
+  }
+}
