Change specific scaffold roles to aliases of ThreePaneScaffoldRole

It gives us cleaner implementation and more flexibile APIs.

Relnote: change scaffold roles to aliases of ThreePaneScaffoldRole
Test: unit test
Change-Id: I65bd1795bf03c17f229d983f87c4ce20ee9ca93a
diff --git a/compose/material3/material3-adaptive/api/current.txt b/compose/material3/material3-adaptive/api/current.txt
index d8b8f18..9183d40 100644
--- a/compose/material3/material3-adaptive/api/current.txt
+++ b/compose/material3/material3-adaptive/api/current.txt
@@ -44,22 +44,19 @@
     field public static final androidx.compose.material3.adaptive.ListDetailPaneScaffoldDefaults INSTANCE;
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class ListDetailPaneScaffoldRole extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole {
-    field public static final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole.Companion Companion;
-  }
-
-  public static final class ListDetailPaneScaffoldRole.Companion {
-    method public androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole getDetail();
-    method public androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole getExtra();
-    method public androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole getList();
-    property public final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole Detail;
-    property public final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole Extra;
-    property public final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole List;
+  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class ListDetailPaneScaffoldRole {
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getDetail();
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getExtra();
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getList();
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Detail;
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Extra;
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole List;
+    field public static final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole INSTANCE;
   }
 
   public final class ListDetailPaneScaffold_androidKt {
     method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static void ListDetailPaneScaffold(kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> listPane, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.material3.adaptive.ThreePaneScaffoldState scaffoldState, optional kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit>? extraPane, kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> detailPane);
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldState calculateListDetailPaneScaffoldState(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole currentPaneDestination);
+    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldState calculateListDetailPaneScaffoldState(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional androidx.compose.material3.adaptive.ThreePaneScaffoldRole currentPaneDestination);
   }
 
   @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @kotlin.jvm.JvmInline public final value class PaneAdaptedValue {
@@ -121,22 +118,19 @@
     field public static final androidx.compose.material3.adaptive.SupportingPaneScaffoldDefaults INSTANCE;
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class SupportingPaneScaffoldRole extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole {
-    field public static final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole.Companion Companion;
-  }
-
-  public static final class SupportingPaneScaffoldRole.Companion {
-    method public androidx.compose.material3.adaptive.SupportingPaneScaffoldRole getExtra();
-    method public androidx.compose.material3.adaptive.SupportingPaneScaffoldRole getMain();
-    method public androidx.compose.material3.adaptive.SupportingPaneScaffoldRole getSupporting();
-    property public final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole Extra;
-    property public final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole Main;
-    property public final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole Supporting;
+  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class SupportingPaneScaffoldRole {
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getExtra();
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getMain();
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getSupporting();
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Extra;
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Main;
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Supporting;
+    field public static final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole INSTANCE;
   }
 
   public final class SupportingPaneScaffold_androidKt {
     method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static void SupportingPaneScaffold(kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> supportingPane, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.material3.adaptive.ThreePaneScaffoldState scaffoldState, optional kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit>? extraPane, kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> mainPane);
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldState calculateSupportingPaneScaffoldState(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional androidx.compose.material3.adaptive.SupportingPaneScaffoldRole currentPaneDestination);
+    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldState calculateSupportingPaneScaffoldState(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional androidx.compose.material3.adaptive.ThreePaneScaffoldRole currentPaneDestination);
   }
 
   @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class ThreePaneScaffoldAdaptStrategies {
@@ -148,20 +142,25 @@
     method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static void AnimatedPane(androidx.compose.material3.adaptive.ThreePaneScaffoldScope, androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> content);
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Stable public interface ThreePaneScaffoldNavigator<T extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole> {
+  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Stable public interface ThreePaneScaffoldNavigator {
     method public boolean canNavigateBack(optional boolean scaffoldValueMustChange);
     method public androidx.compose.material3.adaptive.ThreePaneScaffoldState getScaffoldState();
     method public boolean navigateBack(optional boolean popUntilScaffoldValueChange);
-    method public void navigateTo(T pane);
+    method public void navigateTo(androidx.compose.material3.adaptive.ThreePaneScaffoldRole pane);
     property public abstract androidx.compose.material3.adaptive.ThreePaneScaffoldState scaffoldState;
   }
 
   public final class ThreePaneScaffoldNavigator_androidKt {
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldNavigator<androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole> rememberListDetailPaneScaffoldNavigator(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional java.util.List<androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole> initialDestinationHistory);
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldNavigator<androidx.compose.material3.adaptive.SupportingPaneScaffoldRole> rememberSupportingPaneScaffoldNavigator(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional java.util.List<androidx.compose.material3.adaptive.SupportingPaneScaffoldRole> initialDestinationHistory);
+    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldNavigator rememberListDetailPaneScaffoldNavigator(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional java.util.List<? extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole> initialDestinationHistory);
+    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldNavigator rememberSupportingPaneScaffoldNavigator(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional java.util.List<? extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole> initialDestinationHistory);
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public abstract class ThreePaneScaffoldRole {
+  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public enum ThreePaneScaffoldRole {
+    method public static androidx.compose.material3.adaptive.ThreePaneScaffoldRole valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
+    method public static androidx.compose.material3.adaptive.ThreePaneScaffoldRole[] values();
+    enum_constant public static final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Primary;
+    enum_constant public static final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Secondary;
+    enum_constant public static final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Tertiary;
   }
 
   public interface ThreePaneScaffoldScope extends androidx.compose.material3.adaptive.PaneScaffoldScope {
diff --git a/compose/material3/material3-adaptive/api/restricted_current.txt b/compose/material3/material3-adaptive/api/restricted_current.txt
index d8b8f18..9183d40 100644
--- a/compose/material3/material3-adaptive/api/restricted_current.txt
+++ b/compose/material3/material3-adaptive/api/restricted_current.txt
@@ -44,22 +44,19 @@
     field public static final androidx.compose.material3.adaptive.ListDetailPaneScaffoldDefaults INSTANCE;
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class ListDetailPaneScaffoldRole extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole {
-    field public static final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole.Companion Companion;
-  }
-
-  public static final class ListDetailPaneScaffoldRole.Companion {
-    method public androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole getDetail();
-    method public androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole getExtra();
-    method public androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole getList();
-    property public final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole Detail;
-    property public final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole Extra;
-    property public final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole List;
+  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class ListDetailPaneScaffoldRole {
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getDetail();
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getExtra();
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getList();
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Detail;
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Extra;
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole List;
+    field public static final androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole INSTANCE;
   }
 
   public final class ListDetailPaneScaffold_androidKt {
     method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static void ListDetailPaneScaffold(kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> listPane, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.material3.adaptive.ThreePaneScaffoldState scaffoldState, optional kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit>? extraPane, kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> detailPane);
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldState calculateListDetailPaneScaffoldState(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole currentPaneDestination);
+    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldState calculateListDetailPaneScaffoldState(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional androidx.compose.material3.adaptive.ThreePaneScaffoldRole currentPaneDestination);
   }
 
   @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @kotlin.jvm.JvmInline public final value class PaneAdaptedValue {
@@ -121,22 +118,19 @@
     field public static final androidx.compose.material3.adaptive.SupportingPaneScaffoldDefaults INSTANCE;
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class SupportingPaneScaffoldRole extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole {
-    field public static final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole.Companion Companion;
-  }
-
-  public static final class SupportingPaneScaffoldRole.Companion {
-    method public androidx.compose.material3.adaptive.SupportingPaneScaffoldRole getExtra();
-    method public androidx.compose.material3.adaptive.SupportingPaneScaffoldRole getMain();
-    method public androidx.compose.material3.adaptive.SupportingPaneScaffoldRole getSupporting();
-    property public final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole Extra;
-    property public final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole Main;
-    property public final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole Supporting;
+  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class SupportingPaneScaffoldRole {
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getExtra();
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getMain();
+    method public androidx.compose.material3.adaptive.ThreePaneScaffoldRole getSupporting();
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Extra;
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Main;
+    property public final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Supporting;
+    field public static final androidx.compose.material3.adaptive.SupportingPaneScaffoldRole INSTANCE;
   }
 
   public final class SupportingPaneScaffold_androidKt {
     method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static void SupportingPaneScaffold(kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> supportingPane, optional androidx.compose.ui.Modifier modifier, optional androidx.compose.material3.adaptive.ThreePaneScaffoldState scaffoldState, optional kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit>? extraPane, kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> mainPane);
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldState calculateSupportingPaneScaffoldState(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional androidx.compose.material3.adaptive.SupportingPaneScaffoldRole currentPaneDestination);
+    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldState calculateSupportingPaneScaffoldState(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional androidx.compose.material3.adaptive.ThreePaneScaffoldRole currentPaneDestination);
   }
 
   @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public final class ThreePaneScaffoldAdaptStrategies {
@@ -148,20 +142,25 @@
     method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static void AnimatedPane(androidx.compose.material3.adaptive.ThreePaneScaffoldScope, androidx.compose.ui.Modifier modifier, kotlin.jvm.functions.Function1<? super androidx.compose.material3.adaptive.ThreePaneScaffoldScope,kotlin.Unit> content);
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Stable public interface ThreePaneScaffoldNavigator<T extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole> {
+  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Stable public interface ThreePaneScaffoldNavigator {
     method public boolean canNavigateBack(optional boolean scaffoldValueMustChange);
     method public androidx.compose.material3.adaptive.ThreePaneScaffoldState getScaffoldState();
     method public boolean navigateBack(optional boolean popUntilScaffoldValueChange);
-    method public void navigateTo(T pane);
+    method public void navigateTo(androidx.compose.material3.adaptive.ThreePaneScaffoldRole pane);
     property public abstract androidx.compose.material3.adaptive.ThreePaneScaffoldState scaffoldState;
   }
 
   public final class ThreePaneScaffoldNavigator_androidKt {
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldNavigator<androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole> rememberListDetailPaneScaffoldNavigator(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional java.util.List<androidx.compose.material3.adaptive.ListDetailPaneScaffoldRole> initialDestinationHistory);
-    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldNavigator<androidx.compose.material3.adaptive.SupportingPaneScaffoldRole> rememberSupportingPaneScaffoldNavigator(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional java.util.List<androidx.compose.material3.adaptive.SupportingPaneScaffoldRole> initialDestinationHistory);
+    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldNavigator rememberListDetailPaneScaffoldNavigator(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional java.util.List<? extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole> initialDestinationHistory);
+    method @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi @androidx.compose.runtime.Composable public static androidx.compose.material3.adaptive.ThreePaneScaffoldNavigator rememberSupportingPaneScaffoldNavigator(optional androidx.compose.material3.adaptive.PaneScaffoldDirective scaffoldDirective, optional androidx.compose.material3.adaptive.ThreePaneScaffoldAdaptStrategies adaptStrategies, optional java.util.List<? extends androidx.compose.material3.adaptive.ThreePaneScaffoldRole> initialDestinationHistory);
   }
 
-  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public abstract class ThreePaneScaffoldRole {
+  @SuppressCompatibility @androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi public enum ThreePaneScaffoldRole {
+    method public static androidx.compose.material3.adaptive.ThreePaneScaffoldRole valueOf(String value) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;
+    method public static androidx.compose.material3.adaptive.ThreePaneScaffoldRole[] values();
+    enum_constant public static final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Primary;
+    enum_constant public static final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Secondary;
+    enum_constant public static final androidx.compose.material3.adaptive.ThreePaneScaffoldRole Tertiary;
   }
 
   public interface ThreePaneScaffoldScope extends androidx.compose.material3.adaptive.PaneScaffoldScope {
diff --git a/compose/material3/material3-adaptive/src/androidInstrumentedTest/kotlin/androidx/compose/material3/adaptive/ListDetailPaneScaffoldNavigatorTest.kt b/compose/material3/material3-adaptive/src/androidInstrumentedTest/kotlin/androidx/compose/material3/adaptive/ListDetailPaneScaffoldNavigatorTest.kt
index 452f698..83c85bd 100644
--- a/compose/material3/material3-adaptive/src/androidInstrumentedTest/kotlin/androidx/compose/material3/adaptive/ListDetailPaneScaffoldNavigatorTest.kt
+++ b/compose/material3/material3-adaptive/src/androidInstrumentedTest/kotlin/androidx/compose/material3/adaptive/ListDetailPaneScaffoldNavigatorTest.kt
@@ -37,7 +37,7 @@
 
     @Test
     fun singlePaneLayout_navigateTo_makeFocusPaneExpanded() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<ListDetailPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
         var canNavigateBack by Delegates.notNull<Boolean>()
 
         composeRule.setContent {
@@ -64,7 +64,7 @@
 
     @Test
     fun dualPaneLayout_navigateTo_keepFocusPaneExpanded() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<ListDetailPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
         var canNavigateBack by Delegates.notNull<Boolean>()
 
         composeRule.setContent {
@@ -91,7 +91,7 @@
 
     @Test
     fun singlePaneLayout_navigateBack_makeFocusPaneHidden() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<ListDetailPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
         var canNavigateBack by Delegates.notNull<Boolean>()
 
         composeRule.setContent {
@@ -123,7 +123,7 @@
 
     @Test
     fun dualPaneLayout_enforceScaffoldValueChange_cannotNavigateBack() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<ListDetailPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
 
         composeRule.setContent {
             scaffoldNavigator = rememberListDetailPaneScaffoldNavigator(
@@ -142,7 +142,7 @@
 
     @Test
     fun dualPaneLayout_notEnforceScaffoldValueChange_canNavigateBack() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<ListDetailPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
 
         composeRule.setContent {
             scaffoldNavigator = rememberListDetailPaneScaffoldNavigator(
@@ -171,7 +171,7 @@
 
     @Test
     fun singlePaneToDualPaneLayout_enforceScaffoldValueChange_cannotNavigateBack() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<ListDetailPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
         val mockCurrentScaffoldDirective = mutableStateOf(MockSinglePaneScaffoldDirective)
 
         composeRule.setContent {
diff --git a/compose/material3/material3-adaptive/src/androidInstrumentedTest/kotlin/androidx/compose/material3/adaptive/SupportingPaneScaffoldNavigatorTest.kt b/compose/material3/material3-adaptive/src/androidInstrumentedTest/kotlin/androidx/compose/material3/adaptive/SupportingPaneScaffoldNavigatorTest.kt
index a3ad7b67..34d2315 100644
--- a/compose/material3/material3-adaptive/src/androidInstrumentedTest/kotlin/androidx/compose/material3/adaptive/SupportingPaneScaffoldNavigatorTest.kt
+++ b/compose/material3/material3-adaptive/src/androidInstrumentedTest/kotlin/androidx/compose/material3/adaptive/SupportingPaneScaffoldNavigatorTest.kt
@@ -37,7 +37,7 @@
 
     @Test
     fun singlePaneLayout_navigateTo_makeFocusPaneExpanded() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<SupportingPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
         var canNavigateBack by Delegates.notNull<Boolean>()
 
         composeRule.setContent {
@@ -64,7 +64,7 @@
 
     @Test
     fun dualPaneLayout_navigateTo_keepFocusPaneExpanded() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<SupportingPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
         var canNavigateBack by Delegates.notNull<Boolean>()
 
         composeRule.setContent {
@@ -91,7 +91,7 @@
 
     @Test
     fun singlePaneLayout_navigateBack_makeFocusPaneHidden() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<SupportingPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
         var canNavigateBack by Delegates.notNull<Boolean>()
 
         composeRule.setContent {
@@ -123,7 +123,7 @@
 
     @Test
     fun dualPaneLayout_enforceScaffoldChange_cannotNavigateBack() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<SupportingPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
 
         composeRule.setContent {
             scaffoldNavigator = rememberSupportingPaneScaffoldNavigator(
@@ -142,7 +142,7 @@
 
     @Test
     fun dualPaneLayout_notEnforceScaffoldValueChange_canNavigateBack() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<SupportingPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
 
         composeRule.setContent {
             scaffoldNavigator = rememberSupportingPaneScaffoldNavigator(
@@ -171,7 +171,7 @@
 
     @Test
     fun singlePaneToDualPaneLayout_enforceScaffoldValueChange_cannotNavigateBack() {
-        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator<SupportingPaneScaffoldRole>
+        lateinit var scaffoldNavigator: ThreePaneScaffoldNavigator
         val mockCurrentScaffoldDirective = mutableStateOf(MockSinglePaneScaffoldDirective)
 
         composeRule.setContent {
diff --git a/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/ListDetailPaneScaffold.android.kt b/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/ListDetailPaneScaffold.android.kt
index 30ef758..ef08697 100644
--- a/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/ListDetailPaneScaffold.android.kt
+++ b/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/ListDetailPaneScaffold.android.kt
@@ -71,7 +71,7 @@
         calculateStandardPaneScaffoldDirective(currentWindowAdaptiveInfo()),
     adaptStrategies: ThreePaneScaffoldAdaptStrategies =
         ListDetailPaneScaffoldDefaults.adaptStrategies(),
-    currentPaneDestination: ListDetailPaneScaffoldRole = ListDetailPaneScaffoldRole.List
+    currentPaneDestination: ThreePaneScaffoldRole = ListDetailPaneScaffoldRole.List
 ): ThreePaneScaffoldState = ThreePaneScaffoldStateImpl(
     scaffoldDirective,
     calculateThreePaneScaffoldValue(
@@ -106,37 +106,28 @@
 }
 
 /**
- * The set of the available pane roles of [ListDetailPaneScaffold].
+ * The set of the available pane roles of [ListDetailPaneScaffold]. Basically those values are
+ * aliases of [ThreePaneScaffoldRole]. We suggest you to use the values defined here instead of
+ * the raw [ThreePaneScaffoldRole] under the context of [ListDetailPaneScaffold] for better
+ * code clarity.
  */
 @ExperimentalMaterial3AdaptiveApi
-class ListDetailPaneScaffoldRole private constructor(
-    internalRole: ThreePaneScaffoldRoleInternal
-) : ThreePaneScaffoldRole(internalRole) {
-    companion object {
-        /**
-         * The list pane of [ListDetailPaneScaffold]. It is mapped to
-         * [ThreePaneScaffoldRoleInternal.Secondary].
-         */
-        val List = ListDetailPaneScaffoldRole(ThreePaneScaffoldRoleInternal.Secondary)
+object ListDetailPaneScaffoldRole {
+    /**
+     * The list pane of [ListDetailPaneScaffold]. It is an alias of
+     * [ThreePaneScaffoldRole.Secondary].
+     */
+    val List = ThreePaneScaffoldRole.Secondary
 
-        /**
-         * The detail pane of [ListDetailPaneScaffold]. It is mapped to
-         * [ThreePaneScaffoldRoleInternal.Primary].
-         */
-        val Detail = ListDetailPaneScaffoldRole(ThreePaneScaffoldRoleInternal.Primary)
+    /**
+     * The detail pane of [ListDetailPaneScaffold]. It is an alias of
+     * [ThreePaneScaffoldRole.Primary].
+     */
+    val Detail = ThreePaneScaffoldRole.Primary
 
-        /**
-         * The extra pane of [ListDetailPaneScaffold]. It is mapped to
-         * [ThreePaneScaffoldRoleInternal.Tertiary].
-         */
-        val Extra = ListDetailPaneScaffoldRole(ThreePaneScaffoldRoleInternal.Tertiary)
-    }
+    /**
+     * The extra pane of [ListDetailPaneScaffold]. It is an alias of
+     * [ThreePaneScaffoldRole.Tertiary].
+     */
+    val Extra = ThreePaneScaffoldRole.Tertiary
 }
-
-@OptIn(ExperimentalMaterial3AdaptiveApi::class)
-internal fun ThreePaneScaffoldRoleInternal.toListDetailPaneScaffoldRole():
-    ListDetailPaneScaffoldRole = when (this) {
-        ThreePaneScaffoldRoleInternal.Primary -> ListDetailPaneScaffoldRole.Detail
-        ThreePaneScaffoldRoleInternal.Secondary -> ListDetailPaneScaffoldRole.List
-        ThreePaneScaffoldRoleInternal.Tertiary -> ListDetailPaneScaffoldRole.Extra
-    }
diff --git a/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/SupportingPaneScaffold.android.kt b/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/SupportingPaneScaffold.android.kt
index 6405c57..b6020ce 100644
--- a/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/SupportingPaneScaffold.android.kt
+++ b/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/SupportingPaneScaffold.android.kt
@@ -56,7 +56,7 @@
         calculateStandardPaneScaffoldDirective(currentWindowAdaptiveInfo()),
     adaptStrategies: ThreePaneScaffoldAdaptStrategies =
         SupportingPaneScaffoldDefaults.adaptStrategies(),
-    currentPaneDestination: SupportingPaneScaffoldRole = SupportingPaneScaffoldRole.Main
+    currentPaneDestination: ThreePaneScaffoldRole = SupportingPaneScaffoldRole.Main
 ): ThreePaneScaffoldState = ThreePaneScaffoldStateImpl(
     scaffoldDirective,
     calculateThreePaneScaffoldValue(
@@ -91,37 +91,28 @@
 }
 
 /**
- * The set of the available pane roles of [SupportingPaneScaffold].
+ * The set of the available pane roles of [SupportingPaneScaffold]. Basically those values are
+ * aliases of [ThreePaneScaffoldRole]. We suggest you to use the values defined here instead of
+ * the raw [ThreePaneScaffoldRole] under the context of [SupportingPaneScaffold] for better
+ * code clarity.
  */
 @ExperimentalMaterial3AdaptiveApi
-class SupportingPaneScaffoldRole private constructor(
-    internalRole: ThreePaneScaffoldRoleInternal
-) : ThreePaneScaffoldRole(internalRole) {
-    companion object {
-        /**
-         * The main pane of [SupportingPaneScaffold]. It is mapped to
-         * [ThreePaneScaffoldRoleInternal.Primary].
-         */
-        val Main = SupportingPaneScaffoldRole(ThreePaneScaffoldRoleInternal.Primary)
+object SupportingPaneScaffoldRole {
+    /**
+     * The main pane of [SupportingPaneScaffold]. It is an alias of
+     * [ThreePaneScaffoldRole.Primary].
+     */
+    val Main = ThreePaneScaffoldRole.Primary
 
-        /**
-         * The supporting pane of [SupportingPaneScaffold]. It is mapped to
-         * [ThreePaneScaffoldRoleInternal.Secondary].
-         */
-        val Supporting = SupportingPaneScaffoldRole(ThreePaneScaffoldRoleInternal.Secondary)
+    /**
+     * The supporting pane of [SupportingPaneScaffold]. It is an alias of
+     * [ThreePaneScaffoldRole.Secondary].
+     */
+    val Supporting = ThreePaneScaffoldRole.Secondary
 
-        /**
-         * The extra pane of [SupportingPaneScaffold]. It is mapped to
-         * [ThreePaneScaffoldRoleInternal.Tertiary].
-         */
-        val Extra = SupportingPaneScaffoldRole(ThreePaneScaffoldRoleInternal.Tertiary)
-    }
+    /**
+     * The extra pane of [SupportingPaneScaffold]. It is an alias of
+     * [ThreePaneScaffoldRole.Tertiary].
+     */
+    val Extra = ThreePaneScaffoldRole.Tertiary
 }
-
-@OptIn(ExperimentalMaterial3AdaptiveApi::class)
-internal fun ThreePaneScaffoldRoleInternal.toSupportingPaneScaffoldRole():
-    SupportingPaneScaffoldRole = when (this) {
-        ThreePaneScaffoldRoleInternal.Primary -> SupportingPaneScaffoldRole.Main
-        ThreePaneScaffoldRoleInternal.Secondary -> SupportingPaneScaffoldRole.Supporting
-        ThreePaneScaffoldRoleInternal.Tertiary -> SupportingPaneScaffoldRole.Extra
-    }
diff --git a/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldNavigator.android.kt b/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldNavigator.android.kt
index f6469a9..5759fb7 100644
--- a/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldNavigator.android.kt
+++ b/compose/material3/material3-adaptive/src/androidMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldNavigator.android.kt
@@ -26,7 +26,6 @@
 import androidx.compose.runtime.saveable.listSaver
 import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.runtime.setValue
-import androidx.compose.ui.util.fastMap
 
 /**
  * The navigation integration entry point of [ThreePaneScaffold] implementations.
@@ -39,7 +38,7 @@
  */
 @ExperimentalMaterial3AdaptiveApi
 @Stable
-interface ThreePaneScaffoldNavigator<T : ThreePaneScaffoldRole> {
+interface ThreePaneScaffoldNavigator {
     /**
      * The current scaffold state provided by the navigator. It's supposed to be auto-updated
      * whenever a navigation operation is performed.
@@ -49,7 +48,7 @@
     /**
      * Navigates to a new pane destination.
      */
-    fun navigateTo(pane: T)
+    fun navigateTo(pane: ThreePaneScaffoldRole)
 
     /**
      * Returns `true` if there is a previous destination to navigate back to.
@@ -88,26 +87,13 @@
         calculateStandardPaneScaffoldDirective(currentWindowAdaptiveInfo()),
     adaptStrategies: ThreePaneScaffoldAdaptStrategies =
         ListDetailPaneScaffoldDefaults.adaptStrategies(),
-    initialDestinationHistory: List<ListDetailPaneScaffoldRole> =
-        listOf(ListDetailPaneScaffoldRole.List)
-): ThreePaneScaffoldNavigator<ListDetailPaneScaffoldRole> =
-    rememberSaveable(
-        saver = DefaultThreePaneScaffoldNavigator.saver(
-            scaffoldDirective,
-            adaptStrategies,
-        ) {
-            toListDetailPaneScaffoldRole()
-        }
-    ) {
-        DefaultThreePaneScaffoldNavigator(
-            initialDestinationHistory = initialDestinationHistory,
-            initialScaffoldDirective = scaffoldDirective,
-            initialAdaptStrategies = adaptStrategies
-        )
-    }.apply {
-        this.scaffoldDirective = scaffoldDirective
-        this.adaptStrategies = adaptStrategies
-    }
+    initialDestinationHistory: List<ThreePaneScaffoldRole> = listOf(ListDetailPaneScaffoldRole.List)
+): ThreePaneScaffoldNavigator =
+    rememberThreePaneScaffoldNavigator(
+        scaffoldDirective,
+        adaptStrategies,
+        initialDestinationHistory
+    )
 
 /**
  * Returns a remembered default implementation of [ThreePaneScaffoldNavigator] for
@@ -129,16 +115,24 @@
         calculateStandardPaneScaffoldDirective(currentWindowAdaptiveInfo()),
     adaptStrategies: ThreePaneScaffoldAdaptStrategies =
         SupportingPaneScaffoldDefaults.adaptStrategies(),
-    initialDestinationHistory: List<SupportingPaneScaffoldRole> =
+    initialDestinationHistory: List<ThreePaneScaffoldRole> =
         listOf(SupportingPaneScaffoldRole.Main)
-): ThreePaneScaffoldNavigator<SupportingPaneScaffoldRole> =
+): ThreePaneScaffoldNavigator =
+    rememberThreePaneScaffoldNavigator(
+        scaffoldDirective,
+        adaptStrategies,
+        initialDestinationHistory
+    )
+
+@ExperimentalMaterial3AdaptiveApi
+@Composable
+internal fun rememberThreePaneScaffoldNavigator(
+    scaffoldDirective: PaneScaffoldDirective,
+    adaptStrategies: ThreePaneScaffoldAdaptStrategies,
+    initialDestinationHistory: List<ThreePaneScaffoldRole>
+): ThreePaneScaffoldNavigator =
     rememberSaveable(
-        saver = DefaultThreePaneScaffoldNavigator.saver(
-            scaffoldDirective,
-            adaptStrategies,
-        ) {
-            toSupportingPaneScaffoldRole()
-        }
+        saver = DefaultThreePaneScaffoldNavigator.saver(scaffoldDirective, adaptStrategies)
     ) {
         DefaultThreePaneScaffoldNavigator(
             initialDestinationHistory = initialDestinationHistory,
@@ -151,13 +145,13 @@
     }
 
 @OptIn(ExperimentalMaterial3AdaptiveApi::class)
-internal class DefaultThreePaneScaffoldNavigator<T : ThreePaneScaffoldRole>(
-    initialDestinationHistory: List<T>,
+internal class DefaultThreePaneScaffoldNavigator(
+    initialDestinationHistory: List<ThreePaneScaffoldRole>,
     initialScaffoldDirective: PaneScaffoldDirective,
     initialAdaptStrategies: ThreePaneScaffoldAdaptStrategies,
-) : ThreePaneScaffoldNavigator<T>, ThreePaneScaffoldState {
+) : ThreePaneScaffoldNavigator, ThreePaneScaffoldState {
 
-    private val destinationHistory = mutableStateListOf<T>().apply {
+    private val destinationHistory = mutableStateListOf<ThreePaneScaffoldRole>().apply {
         addAll(initialDestinationHistory)
     }
 
@@ -167,13 +161,13 @@
 
     var adaptStrategies by mutableStateOf(initialAdaptStrategies)
 
-    val currentDestination: T? get() = destinationHistory.lastOrNull()
+    val currentDestination: ThreePaneScaffoldRole? get() = destinationHistory.lastOrNull()
 
     override val scaffoldValue by derivedStateOf {
         calculateScaffoldValue(currentDestination)
     }
 
-    override fun navigateTo(pane: T) {
+    override fun navigateTo(pane: ThreePaneScaffoldRole) {
         destinationHistory.add(pane)
     }
 
@@ -211,7 +205,7 @@
     }
 
     private fun calculateScaffoldValue(
-        destination: T?
+        destination: ThreePaneScaffoldRole?
     ): ThreePaneScaffoldValue =
         calculateThreePaneScaffoldValue(
             scaffoldDirective.maxHorizontalPartitions,
@@ -223,17 +217,16 @@
         /**
          * To keep destination history saved
          */
-        fun <T : ThreePaneScaffoldRole> saver(
+        fun saver(
             initialScaffoldDirective: PaneScaffoldDirective,
-            initialAdaptStrategies: ThreePaneScaffoldAdaptStrategies,
-            roleConverter: ThreePaneScaffoldRoleInternal.() -> T
-        ): Saver<DefaultThreePaneScaffoldNavigator<T>, *> = listSaver(
+            initialAdaptStrategies: ThreePaneScaffoldAdaptStrategies
+        ): Saver<DefaultThreePaneScaffoldNavigator, *> = listSaver(
             save = {
-                it.destinationHistory.fastMap { destination -> destination.internalRole }
+                it.destinationHistory
             },
             restore = {
                 DefaultThreePaneScaffoldNavigator(
-                    initialDestinationHistory = it.fastMap(roleConverter),
+                    initialDestinationHistory = it,
                     initialScaffoldDirective = initialScaffoldDirective,
                     initialAdaptStrategies = initialAdaptStrategies
                 )
diff --git a/compose/material3/material3-adaptive/src/androidUnitTest/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldValueTest.kt b/compose/material3/material3-adaptive/src/androidUnitTest/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldValueTest.kt
index 5cc2720..32cfb93 100644
--- a/compose/material3/material3-adaptive/src/androidUnitTest/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldValueTest.kt
+++ b/compose/material3/material3-adaptive/src/androidUnitTest/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldValueTest.kt
@@ -26,61 +26,61 @@
 class ThreePaneScaffoldValueTest {
     @Test
     fun test_onePaneLayoutNoFocus() {
-        val scaffoldState = calculateThreePaneScaffoldValueInternal(
+        val scaffoldState = calculateThreePaneScaffoldValue(
             maxHorizontalPartitions = 1,
             adaptStrategies = MockAdaptStrategies
         )
-        scaffoldState.assertState(ThreePaneScaffoldRoleInternal.Primary, PaneAdaptedValue.Expanded)
+        scaffoldState.assertState(ThreePaneScaffoldRole.Primary, PaneAdaptedValue.Expanded)
         scaffoldState.assertState(
-            ThreePaneScaffoldRoleInternal.Secondary,
+            ThreePaneScaffoldRole.Secondary,
             SecondaryPaneAdaptedState
         )
-        scaffoldState.assertState(ThreePaneScaffoldRoleInternal.Tertiary, TertiaryPaneAdaptedState)
+        scaffoldState.assertState(ThreePaneScaffoldRole.Tertiary, TertiaryPaneAdaptedState)
     }
 
     @Test
     fun test_onePaneLayoutWithFocus() {
-        val scaffoldState = calculateThreePaneScaffoldValueInternal(
+        val scaffoldState = calculateThreePaneScaffoldValue(
             maxHorizontalPartitions = 1,
             adaptStrategies = MockAdaptStrategies,
-            currentDestination = ThreePaneScaffoldRoleInternal.Secondary
+            currentDestination = ThreePaneScaffoldRole.Secondary
         )
-        scaffoldState.assertState(ThreePaneScaffoldRoleInternal.Primary, PrimaryPaneAdaptedState)
+        scaffoldState.assertState(ThreePaneScaffoldRole.Primary, PrimaryPaneAdaptedState)
         scaffoldState.assertState(
-            ThreePaneScaffoldRoleInternal.Secondary,
+            ThreePaneScaffoldRole.Secondary,
             PaneAdaptedValue.Expanded)
-        scaffoldState.assertState(ThreePaneScaffoldRoleInternal.Tertiary, TertiaryPaneAdaptedState)
+        scaffoldState.assertState(ThreePaneScaffoldRole.Tertiary, TertiaryPaneAdaptedState)
     }
 
     @Test
     fun test_twoPaneLayoutNoFocus() {
-        val scaffoldState = calculateThreePaneScaffoldValueInternal(
+        val scaffoldState = calculateThreePaneScaffoldValue(
             maxHorizontalPartitions = 2,
             adaptStrategies = MockAdaptStrategies
         )
-        scaffoldState.assertState(ThreePaneScaffoldRoleInternal.Primary, PaneAdaptedValue.Expanded)
+        scaffoldState.assertState(ThreePaneScaffoldRole.Primary, PaneAdaptedValue.Expanded)
         scaffoldState.assertState(
-            ThreePaneScaffoldRoleInternal.Secondary, PaneAdaptedValue.Expanded
+            ThreePaneScaffoldRole.Secondary, PaneAdaptedValue.Expanded
         )
-        scaffoldState.assertState(ThreePaneScaffoldRoleInternal.Tertiary, TertiaryPaneAdaptedState)
+        scaffoldState.assertState(ThreePaneScaffoldRole.Tertiary, TertiaryPaneAdaptedState)
     }
 
     @Test
     fun test_twoPaneLayoutWithFocus() {
-        val scaffoldState = calculateThreePaneScaffoldValueInternal(
+        val scaffoldState = calculateThreePaneScaffoldValue(
             maxHorizontalPartitions = 2,
             adaptStrategies = MockAdaptStrategies,
-            currentDestination = ThreePaneScaffoldRoleInternal.Tertiary
+            currentDestination = ThreePaneScaffoldRole.Tertiary
         )
-        scaffoldState.assertState(ThreePaneScaffoldRoleInternal.Primary, PaneAdaptedValue.Expanded)
+        scaffoldState.assertState(ThreePaneScaffoldRole.Primary, PaneAdaptedValue.Expanded)
         scaffoldState.assertState(
-            ThreePaneScaffoldRoleInternal.Secondary, SecondaryPaneAdaptedState
+            ThreePaneScaffoldRole.Secondary, SecondaryPaneAdaptedState
         )
-        scaffoldState.assertState(ThreePaneScaffoldRoleInternal.Tertiary, PaneAdaptedValue.Expanded)
+        scaffoldState.assertState(ThreePaneScaffoldRole.Tertiary, PaneAdaptedValue.Expanded)
     }
 
     private fun ThreePaneScaffoldValue.assertState(
-        role: ThreePaneScaffoldRoleInternal,
+        role: ThreePaneScaffoldRole,
         state: PaneAdaptedValue
     ) {
         assertThat(this[role]).isEqualTo(state)
diff --git a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffold.kt b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffold.kt
index 6380d7f..134cfcf 100644
--- a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffold.kt
+++ b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffold.kt
@@ -105,14 +105,14 @@
     val contents = listOf<@Composable () -> Unit>(
         {
             remember { ThreePaneScaffoldScopeImpl() }.apply {
-                paneAdaptedValue = scaffoldValue[ThreePaneScaffoldRoleInternal.Primary]
+                paneAdaptedValue = scaffoldValue[ThreePaneScaffoldRole.Primary]
                 positionAnimationSpec = paneMotion.animationSpec
                 enterTransition = paneMotion.enterTransition(
-                    ThreePaneScaffoldRoleInternal.Primary,
+                    ThreePaneScaffoldRole.Primary,
                     ltrPaneOrder
                 )
                 exitTransition = paneMotion.exitTransition(
-                    ThreePaneScaffoldRoleInternal.Primary,
+                    ThreePaneScaffoldRole.Primary,
                     ltrPaneOrder
                 )
                 animationToolingLabel = "Primary"
@@ -120,14 +120,14 @@
         },
         {
             remember { ThreePaneScaffoldScopeImpl() }.apply {
-                paneAdaptedValue = scaffoldValue[ThreePaneScaffoldRoleInternal.Secondary]
+                paneAdaptedValue = scaffoldValue[ThreePaneScaffoldRole.Secondary]
                 positionAnimationSpec = paneMotion.animationSpec
                 enterTransition = paneMotion.enterTransition(
-                    ThreePaneScaffoldRoleInternal.Secondary,
+                    ThreePaneScaffoldRole.Secondary,
                     ltrPaneOrder
                 )
                 exitTransition = paneMotion.exitTransition(
-                    ThreePaneScaffoldRoleInternal.Secondary,
+                    ThreePaneScaffoldRole.Secondary,
                     ltrPaneOrder
                 )
                 animationToolingLabel = "Secondary"
@@ -136,14 +136,14 @@
         {
             if (tertiaryPane != null) {
                 remember { ThreePaneScaffoldScopeImpl() }.apply {
-                    paneAdaptedValue = scaffoldValue[ThreePaneScaffoldRoleInternal.Tertiary]
+                    paneAdaptedValue = scaffoldValue[ThreePaneScaffoldRole.Tertiary]
                     positionAnimationSpec = paneMotion.animationSpec
                     enterTransition = paneMotion.enterTransition(
-                        ThreePaneScaffoldRoleInternal.Tertiary,
+                        ThreePaneScaffoldRole.Tertiary,
                         ltrPaneOrder
                     )
                     exitTransition = paneMotion.exitTransition(
-                        ThreePaneScaffoldRoleInternal.Tertiary,
+                        ThreePaneScaffoldRole.Tertiary,
                         ltrPaneOrder
                     )
                     animationToolingLabel = "Tertiary"
@@ -185,11 +185,11 @@
 ) {
 
     /**
-     * Resolves and returns the [EnterTransition] for the given [ThreePaneScaffoldRoleInternal]
+     * Resolves and returns the [EnterTransition] for the given [ThreePaneScaffoldRole]
      * at the given [ThreePaneScaffoldHorizontalOrder].
      */
     fun enterTransition(
-        role: ThreePaneScaffoldRoleInternal,
+        role: ThreePaneScaffoldRole,
         paneOrder: ThreePaneScaffoldHorizontalOrder
     ): EnterTransition {
         // Quick return in case this instance is the NoMotion one.
@@ -203,11 +203,11 @@
     }
 
     /**
-     * Resolves and returns the [ExitTransition] for the given [ThreePaneScaffoldRoleInternal]
+     * Resolves and returns the [ExitTransition] for the given [ThreePaneScaffoldRole]
      * at the given [ThreePaneScaffoldHorizontalOrder].
      */
     fun exitTransition(
-        role: ThreePaneScaffoldRoleInternal,
+        role: ThreePaneScaffoldRole,
         paneOrder: ThreePaneScaffoldHorizontalOrder
     ): ExitTransition {
         // Quick return in case this instance is the NoMotion one.
@@ -348,9 +348,9 @@
     private data class PanePlacement(var positionX: Int = 0, var measuredWidth: Int = 0)
 
     private val placementsCache = mapOf(
-        ThreePaneScaffoldRoleInternal.Primary to PanePlacement(),
-        ThreePaneScaffoldRoleInternal.Secondary to PanePlacement(),
-        ThreePaneScaffoldRoleInternal.Tertiary to PanePlacement()
+        ThreePaneScaffoldRole.Primary to PanePlacement(),
+        ThreePaneScaffoldRole.Secondary to PanePlacement(),
+        ThreePaneScaffoldRole.Tertiary to PanePlacement()
     )
 
     override fun MeasureScope.measure(
@@ -519,7 +519,7 @@
             paneOrder.forEach { role ->
                 if (predicate(scaffoldValue[role])) {
                     when (role) {
-                        ThreePaneScaffoldRoleInternal.Primary -> {
+                        ThreePaneScaffoldRole.Primary -> {
                             createPaneMeasurableIfNeeded(
                                 primaryMeasurables,
                                 ThreePaneScaffoldDefaults.PrimaryPanePriority,
@@ -529,7 +529,7 @@
                             )
                         }
 
-                        ThreePaneScaffoldRoleInternal.Secondary -> {
+                        ThreePaneScaffoldRole.Secondary -> {
                             createPaneMeasurableIfNeeded(
                                 secondaryMeasurables,
                                 ThreePaneScaffoldDefaults.SecondaryPanePriority,
@@ -539,7 +539,7 @@
                             )
                         }
 
-                        ThreePaneScaffoldRoleInternal.Tertiary -> {
+                        ThreePaneScaffoldRole.Tertiary -> {
                             createPaneMeasurableIfNeeded(
                                 tertiaryMeasurables,
                                 ThreePaneScaffoldDefaults.TertiaryPanePriority,
@@ -558,7 +558,7 @@
     private fun MutableList<PaneMeasurable>.createPaneMeasurableIfNeeded(
         measurables: List<Measurable>,
         priority: Int,
-        role: ThreePaneScaffoldRoleInternal,
+        role: ThreePaneScaffoldRole,
         defaultPreferredWidth: Int
     ) {
         if (measurables.isNotEmpty()) {
@@ -725,7 +725,7 @@
 private class PaneMeasurable(
     val measurable: Measurable,
     val priority: Int,
-    val role: ThreePaneScaffoldRoleInternal,
+    val role: ThreePaneScaffoldRole,
     defaultPreferredWidth: Int
 ) : Measurable by measurable {
     private val data = ((parentData as? PaneScaffoldParentData) ?: PaneScaffoldParentData())
@@ -796,9 +796,9 @@
      */
     // TODO(conradchen/sgibly): Consider moving this to the ListDetailPaneScaffoldDefaults
     val ListDetailLayoutPaneOrder = ThreePaneScaffoldHorizontalOrder(
-        ThreePaneScaffoldRoleInternal.Secondary,
-        ThreePaneScaffoldRoleInternal.Primary,
-        ThreePaneScaffoldRoleInternal.Tertiary
+        ThreePaneScaffoldRole.Secondary,
+        ThreePaneScaffoldRole.Primary,
+        ThreePaneScaffoldRole.Tertiary
     )
 
     /**
@@ -808,19 +808,19 @@
      */
     // TODO(conradchen/sgibly): Consider moving this to the SupportingPaneScaffoldDefaults
     val SupportingPaneLayoutPaneOrder = ThreePaneScaffoldHorizontalOrder(
-        ThreePaneScaffoldRoleInternal.Primary,
-        ThreePaneScaffoldRoleInternal.Secondary,
-        ThreePaneScaffoldRoleInternal.Tertiary
+        ThreePaneScaffoldRole.Primary,
+        ThreePaneScaffoldRole.Secondary,
+        ThreePaneScaffoldRole.Tertiary
     )
 
     /**
-     * The default preferred width of [ThreePaneScaffoldRoleInternal.Secondary]. See more details in
+     * The default preferred width of [ThreePaneScaffoldRole.Secondary]. See more details in
      * [ThreePaneScaffoldScope.preferredWidth].
      */
     val SecondaryPanePreferredWidth = 412.dp
 
     /**
-     * The default preferred width of [ThreePaneScaffoldRoleInternal.Tertiary]. See more details in
+     * The default preferred width of [ThreePaneScaffoldRole.Tertiary]. See more details in
      * [ThreePaneScaffoldScope.preferredWidth].
      */
     val TertiaryPanePreferredWidth = 412.dp
diff --git a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldAdaptStrategies.kt b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldAdaptStrategies.kt
index 21f1001..b0f43b1 100644
--- a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldAdaptStrategies.kt
+++ b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldAdaptStrategies.kt
@@ -32,13 +32,11 @@
     private val secondaryPaneAdaptStrategy: AdaptStrategy,
     private val tertiaryPaneAdaptStrategy: AdaptStrategy
 ) {
-    operator fun get(role: ThreePaneScaffoldRole): AdaptStrategy = get(role.internalRole)
-
-    internal operator fun get(role: ThreePaneScaffoldRoleInternal): AdaptStrategy {
+    operator fun get(role: ThreePaneScaffoldRole): AdaptStrategy {
         return when (role) {
-            ThreePaneScaffoldRoleInternal.Primary -> primaryPaneAdaptStrategy
-            ThreePaneScaffoldRoleInternal.Secondary -> secondaryPaneAdaptStrategy
-            ThreePaneScaffoldRoleInternal.Tertiary -> tertiaryPaneAdaptStrategy
+            ThreePaneScaffoldRole.Primary -> primaryPaneAdaptStrategy
+            ThreePaneScaffoldRole.Secondary -> secondaryPaneAdaptStrategy
+            ThreePaneScaffoldRole.Tertiary -> tertiaryPaneAdaptStrategy
         }
     }
 
diff --git a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldHorizontalOrder.kt b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldHorizontalOrder.kt
index 6e46410..131e717 100644
--- a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldHorizontalOrder.kt
+++ b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldHorizontalOrder.kt
@@ -32,9 +32,9 @@
 @ExperimentalMaterial3AdaptiveApi
 @Immutable
 internal class ThreePaneScaffoldHorizontalOrder(
-    val firstPane: ThreePaneScaffoldRoleInternal,
-    val secondPane: ThreePaneScaffoldRoleInternal,
-    val thirdPane: ThreePaneScaffoldRoleInternal
+    val firstPane: ThreePaneScaffoldRole,
+    val secondPane: ThreePaneScaffoldRole,
+    val thirdPane: ThreePaneScaffoldRole
 ) {
     init {
         require(firstPane != secondPane && secondPane != thirdPane && firstPane != thirdPane) {
@@ -80,7 +80,7 @@
 
 @ExperimentalMaterial3AdaptiveApi
 internal inline fun ThreePaneScaffoldHorizontalOrder.forEach(
-    action: (ThreePaneScaffoldRoleInternal) -> Unit
+    action: (ThreePaneScaffoldRole) -> Unit
 ) {
     action(firstPane)
     action(secondPane)
@@ -89,7 +89,7 @@
 
 @ExperimentalMaterial3AdaptiveApi
 internal inline fun ThreePaneScaffoldHorizontalOrder.forEachIndexed(
-    action: (Int, ThreePaneScaffoldRoleInternal) -> Unit
+    action: (Int, ThreePaneScaffoldRole) -> Unit
 ) {
     action(0, firstPane)
     action(1, secondPane)
@@ -97,7 +97,7 @@
 }
 
 @ExperimentalMaterial3AdaptiveApi
-internal fun ThreePaneScaffoldHorizontalOrder.indexOf(role: ThreePaneScaffoldRoleInternal): Int {
+internal fun ThreePaneScaffoldHorizontalOrder.indexOf(role: ThreePaneScaffoldRole): Int {
     forEachIndexed { i, r ->
         if (r == role) {
             return i
@@ -111,7 +111,7 @@
  * The set of the available pane roles of [ThreePaneScaffold].
  */
 @ExperimentalMaterial3AdaptiveApi
-internal enum class ThreePaneScaffoldRoleInternal {
+enum class ThreePaneScaffoldRole {
     /**
      * The primary pane of [ThreePaneScaffold]. It is supposed to have the highest priority during
      * layout adaptation and usually contains the most important content of the screen, like content
@@ -133,15 +133,3 @@
      */
     Tertiary
 }
-
-/**
- * The base class to represent the set of the available pane roles of a specific three pane scaffold
- * implementation.
- *
- * @see [ListDetailPaneScaffoldRole]
- * @see [SupportingPaneScaffoldRole]
- */
-@ExperimentalMaterial3AdaptiveApi
-abstract class ThreePaneScaffoldRole internal constructor(
-    internal val internalRole: ThreePaneScaffoldRoleInternal
-)
diff --git a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldValue.kt b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldValue.kt
index 44bbfd2..30f18cb 100644
--- a/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldValue.kt
+++ b/compose/material3/material3-adaptive/src/commonMain/kotlin/androidx/compose/material3/adaptive/ThreePaneScaffoldValue.kt
@@ -16,18 +16,16 @@
 
 package androidx.compose.material3.adaptive
 
-import androidx.annotation.VisibleForTesting
 import androidx.compose.runtime.Immutable
-import org.jetbrains.annotations.TestOnly
 
 @ExperimentalMaterial3AdaptiveApi
 private inline fun buildThreePaneScaffoldValue(
-    buildAction: (ThreePaneScaffoldRoleInternal) -> PaneAdaptedValue
+    buildAction: (ThreePaneScaffoldRole) -> PaneAdaptedValue
 ): ThreePaneScaffoldValue {
     return ThreePaneScaffoldValue(
-        buildAction(ThreePaneScaffoldRoleInternal.Primary),
-        buildAction(ThreePaneScaffoldRoleInternal.Secondary),
-        buildAction(ThreePaneScaffoldRoleInternal.Tertiary)
+        buildAction(ThreePaneScaffoldRole.Primary),
+        buildAction(ThreePaneScaffoldRole.Secondary),
+        buildAction(ThreePaneScaffoldRole.Tertiary)
     )
 }
 
@@ -37,8 +35,8 @@
  * used as a unique representation of the current layout structure.
  *
  * The function will treat the current destination as the highest priority and then adapt the rest
- * panes according to the order of [ThreePaneScaffoldRoleInternal.Primary],
- * [ThreePaneScaffoldRoleInternal.Secondary] and [ThreePaneScaffoldRoleInternal.Tertiary]. If there
+ * panes according to the order of [ThreePaneScaffoldRole.Primary],
+ * [ThreePaneScaffoldRole.Secondary] and [ThreePaneScaffoldRole.Tertiary]. If there
  * are still remaining partitions to put the pane, the pane will be set as
  * [PaneAdaptedValue.Expanded], otherwise it will be adapted according to its associated
  * [AdaptStrategy].
@@ -55,12 +53,20 @@
     maxHorizontalPartitions: Int,
     adaptStrategies: ThreePaneScaffoldAdaptStrategies = ThreePaneScaffoldDefaults.adaptStrategies(),
     currentDestination: ThreePaneScaffoldRole? = null,
-): ThreePaneScaffoldValue =
-    calculateThreePaneScaffoldValueInternal(
-        maxHorizontalPartitions,
-        adaptStrategies,
-        currentDestination?.internalRole
-    )
+): ThreePaneScaffoldValue {
+    var expandedCount = if (currentDestination != null) 1 else 0
+    return buildThreePaneScaffoldValue { role ->
+        when {
+            role == currentDestination -> PaneAdaptedValue.Expanded
+            expandedCount < maxHorizontalPartitions -> {
+                expandedCount++
+                PaneAdaptedValue.Expanded
+            }
+
+            else -> adaptStrategies[role].adapt()
+        }
+    }
+}
 
 /**
  * The adapted value of [ThreePaneScaffold]. It contains each pane's adapted value.
@@ -101,34 +107,10 @@
         return result
     }
 
-    operator fun get(role: ThreePaneScaffoldRole): PaneAdaptedValue = get(role.internalRole)
-
-    internal operator fun get(role: ThreePaneScaffoldRoleInternal): PaneAdaptedValue =
+    operator fun get(role: ThreePaneScaffoldRole): PaneAdaptedValue =
         when (role) {
-            ThreePaneScaffoldRoleInternal.Primary -> primary
-            ThreePaneScaffoldRoleInternal.Secondary -> secondary
-            ThreePaneScaffoldRoleInternal.Tertiary -> tertiary
+            ThreePaneScaffoldRole.Primary -> primary
+            ThreePaneScaffoldRole.Secondary -> secondary
+            ThreePaneScaffoldRole.Tertiary -> tertiary
         }
 }
-
-@OptIn(ExperimentalMaterial3AdaptiveApi::class)
-@TestOnly
-@VisibleForTesting
-internal fun calculateThreePaneScaffoldValueInternal(
-    maxHorizontalPartitions: Int,
-    adaptStrategies: ThreePaneScaffoldAdaptStrategies = ThreePaneScaffoldDefaults.adaptStrategies(),
-    currentDestination: ThreePaneScaffoldRoleInternal? = null,
-): ThreePaneScaffoldValue {
-    var expandedCount = if (currentDestination != null) 1 else 0
-    return buildThreePaneScaffoldValue { role ->
-        when {
-            role == currentDestination -> PaneAdaptedValue.Expanded
-            expandedCount < maxHorizontalPartitions -> {
-                expandedCount++
-                PaneAdaptedValue.Expanded
-            }
-
-            else -> adaptStrategies[role].adapt()
-        }
-    }
-}