diff --git a/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java b/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
index 43ee151..c239b75 100644
--- a/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
+++ b/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
@@ -133,6 +133,9 @@
       writeAnnotations(null, field.annotations(), ps);
       ps.print(field.accessFlags + " ");
       ps.print(retracer.toSourceString(field.getReference()));
+      if (!retracer.isEmpty()) {
+        ps.println("# Residual: '" + field.getReference().toSourceString() + "'");
+      }
       if (field.isStatic() && field.hasExplicitStaticValue()) {
         ps.print(" = " + field.getStaticValue());
       }
@@ -153,7 +156,7 @@
     writeAnnotations(null, definition.annotations(), ps);
     ps.println("# " + definition.accessFlags);
     if (!retracer.isEmpty()) {
-      ps.println("# Residual: '" + definition.getReference().toSourceString());
+      ps.println("# Residual: '" + definition.getReference().toSourceString() + "'");
     }
     ps.println("#");
     ps.println();
diff --git a/src/main/java/com/android/tools/r8/utils/RetracerForCodePrinting.java b/src/main/java/com/android/tools/r8/utils/RetracerForCodePrinting.java
index 1c5f9b3..fe301df 100644
--- a/src/main/java/com/android/tools/r8/utils/RetracerForCodePrinting.java
+++ b/src/main/java/com/android/tools/r8/utils/RetracerForCodePrinting.java
@@ -11,8 +11,6 @@
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.IndexedDexItem;
 import com.android.tools.r8.naming.ClassNameMapper;
-import com.android.tools.r8.references.FieldReference;
-import com.android.tools.r8.references.MethodReference;
 import com.android.tools.r8.retrace.RetraceClassElement;
 import com.android.tools.r8.retrace.RetraceElement;
 import com.android.tools.r8.retrace.RetraceMethodResult;
@@ -81,12 +79,7 @@
     if (retracer == null) {
       return noRetraceString.apply(method);
     }
-    // TODO(b/169953605): Use retracer.retraceMethod() when we have enough information.
-    MethodReference methodReference = method.asMethodReference();
-    RetraceMethodResult retraceMethodResult =
-        retracer
-            .retraceClass(methodReference.getHolderClass())
-            .lookupMethod(methodReference.getMethodName());
+    RetraceMethodResult retraceMethodResult = retracer.retraceMethod(method.asMethodReference());
     return joinAmbiguousResults(
         retraceMethodResult,
         element -> {
@@ -124,12 +117,8 @@
     if (retracer == null) {
       return noRetraceString.apply(field);
     }
-    // TODO(b/169953605): Use retracer.retraceField() when we have enough information.
-    FieldReference fieldReference = field.asFieldReference();
     return joinAmbiguousResults(
-        retracer
-            .retraceClass(fieldReference.getHolderClass())
-            .lookupField(fieldReference.getFieldName()),
+        retracer.retraceField(field.asFieldReference()),
         element -> {
           if (element.isUnknown()) {
             return unknownToString.apply(element.getField());
