diff --git a/src/main/java/com/android/tools/r8/naming/ComposingBuilder.java b/src/main/java/com/android/tools/r8/naming/ComposingBuilder.java
index e4fc96d..8be5e9a 100644
--- a/src/main/java/com/android/tools/r8/naming/ComposingBuilder.java
+++ b/src/main/java/com/android/tools/r8/naming/ComposingBuilder.java
@@ -865,38 +865,40 @@
         assert verifyAllOutlineCallSitesAreEqualTo(outlineCallSite, computedMappedRangeForOutlines);
         ComputedMappedRangeForOutline computedMappedRangeForOutline =
             ListUtils.first(computedMappedRangeForOutlines);
-          Int2IntSortedMap newPositionMap =
-              new Int2IntLinkedOpenHashMap(outlineCallSite.getPositions().size());
-          visitOutlineMappedPositions(
-              outlineCallSite,
-              computedMappedRangeForOutline.current.getOriginalSignature(),
-              positionInfo -> {
-                int newIndex = firstAvailableRange.getAndIncrement();
-                Range newMinifiedRange = new Range(newIndex, newIndex);
-                MappedRange outerMostOutlineCallsiteFrame =
-                    ListUtils.last(positionInfo.mappedRanges());
-                for (MappedRange inlineMappedRangeInOutlinePosition : positionInfo.mappedRanges()) {
-                  if (inlineMappedRangeInOutlinePosition != outerMostOutlineCallsiteFrame) {
-                    composedRanges.add(
-                        inlineMappedRangeInOutlinePosition.withMinifiedRange(newMinifiedRange));
-                  }
-                }
+        Int2IntSortedMap newPositionMap =
+            new Int2IntLinkedOpenHashMap(outlineCallSite.getPositions().size());
+        visitOutlineMappedPositions(
+            outlineCallSite,
+            computedMappedRangeForOutline.current.getOriginalSignature(),
+            positionInfo -> {
+              int newIndex = firstAvailableRange.getAndIncrement();
+              Range newMinifiedRange = new Range(newIndex, newIndex);
+              boolean isCaller = false;
+              for (MappedRange existingMappedRange : positionInfo.mappedRanges()) {
                 int originalPosition =
-                    outerMostOutlineCallsiteFrame.getOriginalLineNumber(
+                    existingMappedRange.getOriginalLineNumber(
                         positionInfo.outlineCallsitePosition());
-                boolean hasInlineFrames = positionInfo.mappedRanges().size() > 1;
-                composedRanges.add(
+                Range newOriginalRange =
+                    isCaller
+                        ? new Range(originalPosition)
+                        : new Range(originalPosition, originalPosition);
+                MappedRange newMappedRange =
                     new MappedRange(
                         newMinifiedRange,
-                        lastComposedRange.signature,
-                        hasInlineFrames
-                            ? new Range(originalPosition)
-                            : new Range(originalPosition, originalPosition),
-                        lastComposedRange.getRenamedName()));
-                newPositionMap.put(positionInfo.outlinePosition(), newIndex);
-                outlineCallSite.setPositionsInternal(newPositionMap);
-              });
-        }
+                        existingMappedRange.getOriginalSignature(),
+                        newOriginalRange,
+                        lastComposedRange.getRenamedName());
+                if (!existingMappedRange.getAdditionalMappingInformation().isEmpty()) {
+                  newMappedRange.setAdditionalMappingInformationInternal(
+                      existingMappedRange.getAdditionalMappingInformation());
+                }
+                composedRanges.add(newMappedRange);
+                isCaller = true;
+              }
+              newPositionMap.put(positionInfo.outlinePosition(), newIndex);
+            });
+        outlineCallSite.setPositionsInternal(newPositionMap);
+      }
     }
 
     private boolean verifyAllOutlineCallSitesAreEqualTo(
diff --git a/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineCallSiteInlinedTest.java b/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineCallSiteInlinedTest.java
index 2e55faf..df61bf9 100644
--- a/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineCallSiteInlinedTest.java
+++ b/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineCallSiteInlinedTest.java
@@ -55,52 +55,48 @@
           "com.android.tools.r8.D8Command -> com.android.tools.r8.D8Command:",
           "# {'id':'sourceFile','fileName':'SourceFile'}",
           "    1:724:foo.internal.MapConsumer lambda$bar$0(foo.StringConsumer):0:723"
-              + " -> lambda$bar$0$com-android-tools-r8-D8Command",
+              + " -> lambda$bar$0$new",
           "    1:724:foo.internal.MapConsumer"
-              + " lambda$bar$0$com-android-tools-r8-D8Command(foo.StringConsumer):0"
-              + " -> lambda$bar$0$com-android-tools-r8-D8Command",
+              + " lambda$bar$0$new(foo.StringConsumer):0"
+              + " -> lambda$bar$0$new",
           "      # {'id':'com.android.tools.r8.synthesized'}");
   private static final String mappingResult =
       StringUtils.unixLines(
           "# {'id':'com.android.tools.r8.mapping','version':'2.2'}",
           "com.android.tools.r8.D8Command -> com.android.tools.r8.D8Command:",
           "# {'id':'sourceFile','fileName':'D8Command.java'}",
-          // TODO(b/288117378): This 1:1 range corresponds to position 0 in the residual of R8. This
-          //  should probably not have the `getParseFlagsInformation` inline frame.
           "    1:1:java.util.List getParseFlagsInformation():592:592 -> getParseFlagsInformation",
+          // The following two frames is the preamble it is mapping to position 0. There is no
+          // positional information in mappingFoo, so the right thing here is to use the original
+          // signature from mappingBar/residual signature from mappingFoo.
           "    1:1:foo.internal.MapConsumer lambda$bar$0(foo.StringConsumer):0:0 ->"
-              + " lambda$bar$0$com-android-tools-r8-D8Command",
+              + " lambda$bar$0$new",
           "    1:1:foo.internal.MapConsumer"
-              + " lambda$bar$0$com-android-tools-r8-D8Command(foo.StringConsumer):0:0 ->"
-              + " lambda$bar$0$com-android-tools-r8-D8Command",
+              + " lambda$bar$0$new(foo.StringConsumer):0:0 -> lambda$bar$0$new",
           "    # {'id':'com.android.tools.r8.synthesized'}",
-          "    2:2:foo.MapConsumer lambda$bar$0(foo.StringConsumer):0:0 ->"
-              + " lambda$bar$0$com-android-tools-r8-D8Command",
+          // This frame is the outline position in mappingFoo.
+          "    2:2:foo.MapConsumer lambda$bar$0(foo.StringConsumer):0:0 -> lambda$bar$0$new",
           "    # {'id':'com.android.tools.r8.residualsignature',"
               + "'signature':'(Lfoo/StringConsumer;)Lfoo/internal/MapConsumer;'}",
           "    # {'id':'com.android.tools.r8.outlineCallsite',"
               + "'positions':{'23':725,'24':726,'25':727},"
               + "'outline':'Lfoo/SomeClass;outline(JJJ)V'}",
           "    2:2:foo.internal.MapConsumer"
-              + " lambda$bar$0$com-android-tools-r8-D8Command(foo.StringConsumer):0:0 ->"
-              + " lambda$bar$0$com-android-tools-r8-D8Command",
-          "    3:724:foo.internal.MapConsumer lambda$bar$0(foo.StringConsumer) ->"
-              + " lambda$bar$0$com-android-tools-r8-D8Command",
-          "    3:724:foo.internal.MapConsumer"
-              + " lambda$bar$0$com-android-tools-r8-D8Command(foo.StringConsumer):0:0 ->"
-              + " lambda$bar$0$com-android-tools-r8-D8Command",
-          "    725:725:foo.internal.MapConsumer"
-              + " lambda$bar$0$com-android-tools-r8-D8Command(foo.StringConsumer):720:720 ->"
-              + " lambda$bar$0$com-android-tools-r8-D8Command",
-          "    726:726:foo.PGMapConsumer foo.PGMapConsumer.builder():52:52 -> lambda$bar$0",
-          "    726:726:foo.internal.MapConsumer"
-              + " lambda$bar$0$com-android-tools-r8-D8Command(foo.StringConsumer):720 ->"
-              + " lambda$bar$0$com-android-tools-r8-D8Command",
-          "    727:727:void foo.PGMapConsumer.<init>():55:55 -> lambda$bar$0",
-          "    727:727:foo.PGMapConsumer foo.PGMapConsumer.builder():52 -> lambda$bar$0",
-          "    727:727:foo.internal.MapConsumer"
-              + " lambda$bar$0$com-android-tools-r8-D8Command(foo.StringConsumer):720 ->"
-              + " lambda$bar$0$com-android-tools-r8-D8Command");
+              + " lambda$bar$0$new(foo.StringConsumer):0:0 -> lambda$bar$0$new",
+          // This is the tail before any synthetic outline positions where the only information
+          // is in mappingBar.
+          "    3:724:foo.internal.MapConsumer lambda$bar$0(foo.StringConsumer) -> lambda$bar$0$new",
+          "    3:724:foo.internal.MapConsumer lambda$bar$0$new(foo.StringConsumer):0:0 "
+              + "-> lambda$bar$0$new",
+          // The remaining positions are the synthetic outline positions needed for correct
+          // retracing.
+          "    725:725:foo.MapConsumer lambda$bar$0(foo.StringConsumer):720:720 "
+              + "-> lambda$bar$0$new",
+          "    726:726:foo.PGMapConsumer foo.PGMapConsumer.builder():52:52 -> lambda$bar$0$new",
+          "    726:726:foo.MapConsumer lambda$bar$0(foo.StringConsumer):720 -> lambda$bar$0$new",
+          "    727:727:void foo.PGMapConsumer.<init>():55:55 -> lambda$bar$0$new",
+          "    727:727:foo.PGMapConsumer foo.PGMapConsumer.builder():52 -> lambda$bar$0$new",
+          "    727:727:foo.MapConsumer lambda$bar$0(foo.StringConsumer):720 -> lambda$bar$0$new");
 
   @Test
   public void testCompose() throws Exception {
diff --git a/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlinePositionRangeTest.java b/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlinePositionRangeTest.java
index e55a18f..753f3d7 100644
--- a/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlinePositionRangeTest.java
+++ b/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlinePositionRangeTest.java
@@ -42,7 +42,7 @@
               + "'positions': { '1': 10, '2': 11 },"
               + "'outline':'La;a()I' }",
           "    10:11:int some.inlinee(int):23:24 -> s",
-          "    10:11:int outlineCaller(int):42 -> s");
+          "    10:11:int outlineCaller(int):1337 -> s");
   private static final String mappingBar =
       StringUtils.unixLines(
           "# {'id':'com.android.tools.r8.mapping','version':'2.2'}",
@@ -58,11 +58,10 @@
           "    # {'id':'com.android.tools.r8.outlineCallsite',"
               + "'positions':{'4':43,'5':44},"
               + "'outline':'Lb;m()I'}",
-          // TODO(b/280564959): We should not introduce ambiguity here.
-          "    43:43:int some.inlinee(int):23:24 -> s",
-          "    43:43:int outlineCaller(int):42 -> o",
-          "    44:44:int some.inlinee(int):23:24 -> s",
-          "    44:44:int outlineCaller(int):42 -> o",
+          "    43:43:int some.inlinee(int):23:23 -> o",
+          "    43:43:int outlineCaller(int):1337 -> o",
+          "    44:44:int some.inlinee(int):24:24 -> o",
+          "    44:44:int outlineCaller(int):1337 -> o",
           "outline.Class -> b:",
           "    4:5:int outline():11:12 -> m",
           "    # {'id':'com.android.tools.r8.outline'}");
diff --git a/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineTest.java b/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineTest.java
index 48bfdfd..98ba4d5 100644
--- a/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineTest.java
+++ b/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineTest.java
@@ -62,7 +62,7 @@
               + "'positions':{'4':43,'5':44},"
               + "'outline':'Lc;m()I'}",
           "    43:43:int outlineCaller(int):23:23 -> o",
-          "    44:44:int foo.bar.baz.outlineCaller(int):98:98 -> s",
+          "    44:44:int foo.bar.baz.outlineCaller(int):98:98 -> o",
           "    44:44:int outlineCaller(int):24 -> o",
           "outline.Class -> c:",
           "    4:5:int some.inlinee():75:76 -> m",
diff --git a/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineWithIdRangeTest.java b/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineWithIdRangeTest.java
index 20b1cb8..e79ad2c 100644
--- a/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineWithIdRangeTest.java
+++ b/src/test/java/com/android/tools/r8/mappingcompose/ComposeOutlineWithIdRangeTest.java
@@ -66,7 +66,7 @@
               + "'positions':{'1':9,'2':10},"
               + "'outline':'Lpackage/new_internal/X;b(JJJ)J'}",
           "    8:8:void foo():38:38 -> b",
-          "    9:9:void inlineeInOutline():1337:1337 -> a",
+          "    9:9:void inlineeInOutline():1337:1337 -> b",
           "    9:9:void foo():42 -> b",
           "    10:10:void foo():44:44 -> b",
           "package.Class$$ExternalSyntheticOutline0 -> package.new_internal.X:",
