Merge "Prevent arbitrary layout scope content access" into androidx-main
diff --git a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/EnterExitTransitionDemo.kt b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/EnterExitTransitionDemo.kt
index 646887f..cccb234 100644
--- a/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/EnterExitTransitionDemo.kt
+++ b/compose/animation/animation/integration-tests/animation-demos/src/main/java/androidx/compose/animation/demos/EnterExitTransitionDemo.kt
@@ -38,7 +38,6 @@
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.RowScope
 import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
@@ -130,7 +129,13 @@
                         Text("Bottom\nStart")
                     }
                 }
-                CenterMenu(selectedOptions, oppositeAlignment.value, alignment, visible)
+                CenterMenu(
+                    Modifier.weight(1f),
+                    selectedOptions,
+                    oppositeAlignment.value,
+                    alignment,
+                    visible
+                )
                 Box(Modifier.fillMaxHeight().wrapContentWidth()) {
                     Button(
                         modifier = Modifier.align(TopStart),
@@ -191,12 +196,13 @@
 @OptIn(ExperimentalAnimationApi::class)
 @Composable
 fun CenterMenu(
+    modifier: Modifier = Modifier,
     selectedOptions: List<Boolean>,
     oppositeDirection: Boolean,
     alignment: Alignment,
     visible: Boolean
 ) {
-    Box(with(RowScope) { Modifier.fillMaxHeight().weight(1f) }) {
+    Box(modifier.fillMaxHeight()) {
 
         val animationAlignment = if (oppositeDirection) opposite(alignment) else alignment
         val expand = when (animationAlignment) {
diff --git a/compose/animation/animation/samples/src/main/java/androidx/compose/animation/samples/AnimatedVisibilitySamples.kt b/compose/animation/animation/samples/src/main/java/androidx/compose/animation/samples/AnimatedVisibilitySamples.kt
index 8ab8fbd..e065cf5 100644
--- a/compose/animation/animation/samples/src/main/java/androidx/compose/animation/samples/AnimatedVisibilitySamples.kt
+++ b/compose/animation/animation/samples/src/main/java/androidx/compose/animation/samples/AnimatedVisibilitySamples.kt
@@ -163,11 +163,11 @@
 @OptIn(ExperimentalAnimationApi::class)
 @Sampled
 @Composable
-fun AnimatedFloatingActionButton() {
+fun ColumnScope.AnimatedFloatingActionButton() {
     var expanded by remember { mutableStateOf(true) }
     FloatingActionButton(
         onClick = { expanded = !expanded },
-        modifier = with(ColumnScope) { Modifier.align(Alignment.CenterHorizontally) }
+        modifier = Modifier.align(Alignment.CenterHorizontally)
     ) {
         Row(Modifier.padding(start = 12.dp, end = 12.dp)) {
             Icon(
diff --git a/compose/foundation/foundation-layout/api/1.0.0-beta04.txt b/compose/foundation/foundation-layout/api/1.0.0-beta04.txt
index 2ad21c0..e119d9f 100644
--- a/compose/foundation/foundation-layout/api/1.0.0-beta04.txt
+++ b/compose/foundation/foundation-layout/api/1.0.0-beta04.txt
@@ -79,12 +79,8 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface BoxScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
-    field public static final androidx.compose.foundation.layout.BoxScope.Companion Companion;
-  }
-
-  public static final class BoxScope.Companion implements androidx.compose.foundation.layout.BoxScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
   }
 
   public final class BoxWithConstraintsKt {
@@ -109,14 +105,10 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface ColumnScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.ColumnScope.Companion Companion;
-  }
-
-  public static final class ColumnScope.Companion implements androidx.compose.foundation.layout.ColumnScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class IntrinsicKt {
@@ -176,15 +168,11 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface RowScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.RowScope.Companion Companion;
-  }
-
-  public static final class RowScope.Companion implements androidx.compose.foundation.layout.RowScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class SizeKt {
diff --git a/compose/foundation/foundation-layout/api/current.ignore b/compose/foundation/foundation-layout/api/current.ignore
new file mode 100644
index 0000000..3bc3a38
--- /dev/null
+++ b/compose/foundation/foundation-layout/api/current.ignore
@@ -0,0 +1,15 @@
+// Baseline format: 1.0
+RemovedClass: androidx.compose.foundation.layout.BoxScope.Companion:
+    Removed class androidx.compose.foundation.layout.BoxScope.Companion
+RemovedClass: androidx.compose.foundation.layout.ColumnScope.Companion:
+    Removed class androidx.compose.foundation.layout.ColumnScope.Companion
+RemovedClass: androidx.compose.foundation.layout.RowScope.Companion:
+    Removed class androidx.compose.foundation.layout.RowScope.Companion
+
+
+RemovedField: androidx.compose.foundation.layout.BoxScope#Companion:
+    Removed field androidx.compose.foundation.layout.BoxScope.Companion
+RemovedField: androidx.compose.foundation.layout.ColumnScope#Companion:
+    Removed field androidx.compose.foundation.layout.ColumnScope.Companion
+RemovedField: androidx.compose.foundation.layout.RowScope#Companion:
+    Removed field androidx.compose.foundation.layout.RowScope.Companion
diff --git a/compose/foundation/foundation-layout/api/current.txt b/compose/foundation/foundation-layout/api/current.txt
index 2ad21c0..e119d9f 100644
--- a/compose/foundation/foundation-layout/api/current.txt
+++ b/compose/foundation/foundation-layout/api/current.txt
@@ -79,12 +79,8 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface BoxScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
-    field public static final androidx.compose.foundation.layout.BoxScope.Companion Companion;
-  }
-
-  public static final class BoxScope.Companion implements androidx.compose.foundation.layout.BoxScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
   }
 
   public final class BoxWithConstraintsKt {
@@ -109,14 +105,10 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface ColumnScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.ColumnScope.Companion Companion;
-  }
-
-  public static final class ColumnScope.Companion implements androidx.compose.foundation.layout.ColumnScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class IntrinsicKt {
@@ -176,15 +168,11 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface RowScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.RowScope.Companion Companion;
-  }
-
-  public static final class RowScope.Companion implements androidx.compose.foundation.layout.RowScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class SizeKt {
diff --git a/compose/foundation/foundation-layout/api/public_plus_experimental_1.0.0-beta04.txt b/compose/foundation/foundation-layout/api/public_plus_experimental_1.0.0-beta04.txt
index 15c4829..ca89232 100644
--- a/compose/foundation/foundation-layout/api/public_plus_experimental_1.0.0-beta04.txt
+++ b/compose/foundation/foundation-layout/api/public_plus_experimental_1.0.0-beta04.txt
@@ -79,12 +79,8 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface BoxScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
-    field public static final androidx.compose.foundation.layout.BoxScope.Companion Companion;
-  }
-
-  public static final class BoxScope.Companion implements androidx.compose.foundation.layout.BoxScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
   }
 
   public final class BoxWithConstraintsKt {
@@ -109,14 +105,10 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface ColumnScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.ColumnScope.Companion Companion;
-  }
-
-  public static final class ColumnScope.Companion implements androidx.compose.foundation.layout.ColumnScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   @kotlin.RequiresOptIn(message="The API of this layout is experimental and is likely to change in the future.") public @interface ExperimentalLayoutApi {
@@ -179,15 +171,11 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface RowScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.RowScope.Companion Companion;
-  }
-
-  public static final class RowScope.Companion implements androidx.compose.foundation.layout.RowScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class SizeKt {
diff --git a/compose/foundation/foundation-layout/api/public_plus_experimental_current.txt b/compose/foundation/foundation-layout/api/public_plus_experimental_current.txt
index 15c4829..ca89232 100644
--- a/compose/foundation/foundation-layout/api/public_plus_experimental_current.txt
+++ b/compose/foundation/foundation-layout/api/public_plus_experimental_current.txt
@@ -79,12 +79,8 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface BoxScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
-    field public static final androidx.compose.foundation.layout.BoxScope.Companion Companion;
-  }
-
-  public static final class BoxScope.Companion implements androidx.compose.foundation.layout.BoxScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
   }
 
   public final class BoxWithConstraintsKt {
@@ -109,14 +105,10 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface ColumnScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.ColumnScope.Companion Companion;
-  }
-
-  public static final class ColumnScope.Companion implements androidx.compose.foundation.layout.ColumnScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   @kotlin.RequiresOptIn(message="The API of this layout is experimental and is likely to change in the future.") public @interface ExperimentalLayoutApi {
@@ -179,15 +171,11 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface RowScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.RowScope.Companion Companion;
-  }
-
-  public static final class RowScope.Companion implements androidx.compose.foundation.layout.RowScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class SizeKt {
diff --git a/compose/foundation/foundation-layout/api/restricted_1.0.0-beta04.txt b/compose/foundation/foundation-layout/api/restricted_1.0.0-beta04.txt
index 84b4411..4c0fda5 100644
--- a/compose/foundation/foundation-layout/api/restricted_1.0.0-beta04.txt
+++ b/compose/foundation/foundation-layout/api/restricted_1.0.0-beta04.txt
@@ -80,12 +80,8 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface BoxScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
-    field public static final androidx.compose.foundation.layout.BoxScope.Companion Companion;
-  }
-
-  public static final class BoxScope.Companion implements androidx.compose.foundation.layout.BoxScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
   }
 
   public final class BoxWithConstraintsKt {
@@ -112,14 +108,10 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface ColumnScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.ColumnScope.Companion Companion;
-  }
-
-  public static final class ColumnScope.Companion implements androidx.compose.foundation.layout.ColumnScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class IntrinsicKt {
@@ -181,15 +173,11 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface RowScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.RowScope.Companion Companion;
-  }
-
-  public static final class RowScope.Companion implements androidx.compose.foundation.layout.RowScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class SizeKt {
diff --git a/compose/foundation/foundation-layout/api/restricted_current.ignore b/compose/foundation/foundation-layout/api/restricted_current.ignore
new file mode 100644
index 0000000..3bc3a38
--- /dev/null
+++ b/compose/foundation/foundation-layout/api/restricted_current.ignore
@@ -0,0 +1,15 @@
+// Baseline format: 1.0
+RemovedClass: androidx.compose.foundation.layout.BoxScope.Companion:
+    Removed class androidx.compose.foundation.layout.BoxScope.Companion
+RemovedClass: androidx.compose.foundation.layout.ColumnScope.Companion:
+    Removed class androidx.compose.foundation.layout.ColumnScope.Companion
+RemovedClass: androidx.compose.foundation.layout.RowScope.Companion:
+    Removed class androidx.compose.foundation.layout.RowScope.Companion
+
+
+RemovedField: androidx.compose.foundation.layout.BoxScope#Companion:
+    Removed field androidx.compose.foundation.layout.BoxScope.Companion
+RemovedField: androidx.compose.foundation.layout.ColumnScope#Companion:
+    Removed field androidx.compose.foundation.layout.ColumnScope.Companion
+RemovedField: androidx.compose.foundation.layout.RowScope#Companion:
+    Removed field androidx.compose.foundation.layout.RowScope.Companion
diff --git a/compose/foundation/foundation-layout/api/restricted_current.txt b/compose/foundation/foundation-layout/api/restricted_current.txt
index 84b4411..4c0fda5 100644
--- a/compose/foundation/foundation-layout/api/restricted_current.txt
+++ b/compose/foundation/foundation-layout/api/restricted_current.txt
@@ -80,12 +80,8 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface BoxScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
-    field public static final androidx.compose.foundation.layout.BoxScope.Companion Companion;
-  }
-
-  public static final class BoxScope.Companion implements androidx.compose.foundation.layout.BoxScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier matchParentSize(androidx.compose.ui.Modifier);
   }
 
   public final class BoxWithConstraintsKt {
@@ -112,14 +108,10 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface ColumnScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.ColumnScope.Companion Companion;
-  }
-
-  public static final class ColumnScope.Companion implements androidx.compose.foundation.layout.ColumnScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Horizontal alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.VerticalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class IntrinsicKt {
@@ -181,15 +173,11 @@
   }
 
   @androidx.compose.foundation.layout.LayoutScopeMarker @androidx.compose.runtime.Immutable public interface RowScope {
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
-    method @androidx.compose.runtime.Stable public default androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
-    field public static final androidx.compose.foundation.layout.RowScope.Companion Companion;
-  }
-
-  public static final class RowScope.Companion implements androidx.compose.foundation.layout.RowScope {
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier align(androidx.compose.ui.Modifier, androidx.compose.ui.Alignment.Vertical alignment);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, androidx.compose.ui.layout.HorizontalAlignmentLine alignmentLine);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignBy(androidx.compose.ui.Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.ui.layout.Measured,java.lang.Integer> alignmentLineBlock);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier alignByBaseline(androidx.compose.ui.Modifier);
+    method @androidx.compose.runtime.Stable public androidx.compose.ui.Modifier weight(androidx.compose.ui.Modifier, float weight, optional boolean fill);
   }
 
   public final class SizeKt {
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxTest.kt
index c0a9995..0bf03ed 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/BoxTest.kt
@@ -595,7 +595,7 @@
 
     @Test
     fun testAlignInspectableValue() {
-        val modifier = with(object : BoxScope {}) { Modifier.align(Alignment.BottomCenter) }
+        val modifier = with(BoxScopeInstance) { Modifier.align(Alignment.BottomCenter) }
             as InspectableValue
         assertThat(modifier.nameFallback).isEqualTo("align")
         assertThat(modifier.valueOverride).isEqualTo(Alignment.BottomCenter)
@@ -604,7 +604,7 @@
 
     @Test
     fun testMatchParentSizeInspectableValue() {
-        val modifier = with(object : BoxScope {}) { Modifier.matchParentSize() }
+        val modifier = with(BoxScopeInstance) { Modifier.matchParentSize() }
             as InspectableValue
         assertThat(modifier.nameFallback).isEqualTo("matchParentSize")
         assertThat(modifier.valueOverride).isNull()
diff --git a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/RowColumnTest.kt b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/RowColumnTest.kt
index 989ed4f..c8e9953 100644
--- a/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/RowColumnTest.kt
+++ b/compose/foundation/foundation-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/RowColumnTest.kt
@@ -5414,7 +5414,7 @@
     // region InspectableValue tests for Row and Column
     @Test
     fun testRow_AlignInspectableValue() {
-        val modifier = with(object : RowScope {}) { Modifier.align(Alignment.Bottom) }
+        val modifier = with(RowScopeInstance) { Modifier.align(Alignment.Bottom) }
             as InspectableValue
         Truth.assertThat(modifier.nameFallback).isEqualTo("align")
         Truth.assertThat(modifier.valueOverride).isEqualTo(Alignment.Bottom)
@@ -5423,7 +5423,7 @@
 
     @Test
     fun testRow_AlignByInspectableValue() {
-        val modifier = with(object : RowScope {}) { Modifier.alignBy(FirstBaseline) }
+        val modifier = with(RowScopeInstance) { Modifier.alignBy(FirstBaseline) }
             as InspectableValue
         Truth.assertThat(modifier.nameFallback).isEqualTo("alignBy")
         Truth.assertThat(modifier.valueOverride).isEqualTo(FirstBaseline)
@@ -5432,7 +5432,7 @@
 
     @Test
     fun testRow_WeightInspectableValue() {
-        val modifier = with(object : RowScope {}) { Modifier.weight(2.0f, false) }
+        val modifier = with(RowScopeInstance) { Modifier.weight(2.0f, false) }
             as InspectableValue
         Truth.assertThat(modifier.nameFallback).isEqualTo("weight")
         Truth.assertThat(modifier.valueOverride).isEqualTo(2.0f)
@@ -5443,7 +5443,7 @@
     }
     @Test
     fun testColumn_AlignInspectableValue() {
-        val modifier = with(object : ColumnScope {}) { Modifier.align(Alignment.Start) }
+        val modifier = with(ColumnScopeInstance) { Modifier.align(Alignment.Start) }
             as InspectableValue
         Truth.assertThat(modifier.nameFallback).isEqualTo("align")
         Truth.assertThat(modifier.valueOverride).isEqualTo(Alignment.Start)
@@ -5452,7 +5452,7 @@
 
     @Test
     fun testColumn_AlignByInspectableValue() {
-        val modifier = with(object : ColumnScope {}) { Modifier.alignBy(TestVerticalLine) }
+        val modifier = with(ColumnScopeInstance) { Modifier.alignBy(TestVerticalLine) }
             as InspectableValue
         Truth.assertThat(modifier.nameFallback).isEqualTo("alignBy")
         Truth.assertThat(modifier.valueOverride).isEqualTo(TestVerticalLine)
@@ -5461,7 +5461,7 @@
 
     @Test
     fun testColumn_WeightInspectableValue() {
-        val modifier = with(object : ColumnScope {}) { Modifier.weight(2.0f, false) }
+        val modifier = with(ColumnScopeInstance) { Modifier.weight(2.0f, false) }
             as InspectableValue
         Truth.assertThat(modifier.nameFallback).isEqualTo("weight")
         Truth.assertThat(modifier.valueOverride).isEqualTo(2.0f)
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Box.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Box.kt
index 8bc4548..07cdbeb 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Box.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Box.kt
@@ -66,7 +66,7 @@
 ) {
     val measurePolicy = rememberBoxMeasurePolicy(contentAlignment, propagateMinConstraints)
     Layout(
-        content = { BoxScope.content() },
+        content = { BoxScopeInstance.content() },
         measurePolicy = measurePolicy,
         modifier = modifier
     )
@@ -212,16 +212,7 @@
      * have priority over the [Box]'s `alignment` parameter.
      */
     @Stable
-    fun Modifier.align(alignment: Alignment) = this.then(
-        BoxChildData(
-            alignment = alignment,
-            matchParentSize = false,
-            inspectorInfo = debugInspectorInfo {
-                name = "align"
-                value = alignment
-            }
-        )
-    )
+    fun Modifier.align(alignment: Alignment): Modifier
 
     /**
      * Size the element to match the size of the [Box] after all other content elements have
@@ -236,15 +227,30 @@
      * available space.
      */
     @Stable
-    fun Modifier.matchParentSize() = this.then(
+    fun Modifier.matchParentSize(): Modifier
+}
+
+internal object BoxScopeInstance : BoxScope {
+    @Stable
+    override fun Modifier.align(alignment: Alignment) = this.then(
+        BoxChildData(
+            alignment = alignment,
+            matchParentSize = false,
+            inspectorInfo = debugInspectorInfo {
+                name = "align"
+                value = alignment
+            }
+        )
+    )
+
+    @Stable
+    override fun Modifier.matchParentSize() = this.then(
         BoxChildData(
             alignment = Alignment.Center,
             matchParentSize = true,
             inspectorInfo = debugInspectorInfo { name = "matchParentSize" }
         )
     )
-
-    companion object : BoxScope
 }
 
 @get:Suppress("ModifierFactoryReturnType", "ModifierFactoryExtensionFunction")
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/BoxWithConstraints.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/BoxWithConstraints.kt
index 3f2bf57..4a30d5e 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/BoxWithConstraints.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/BoxWithConstraints.kt
@@ -103,7 +103,7 @@
 private data class BoxWithConstraintsScopeImpl(
     private val density: Density,
     override val constraints: Constraints
-) : BoxWithConstraintsScope {
+) : BoxWithConstraintsScope, BoxScope by BoxScopeInstance {
     override val minWidth: Dp
         get() = with(density) { constraints.minWidth.toDp() }
     override val maxWidth: Dp
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Column.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Column.kt
index aced672..6baf629f 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Column.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Column.kt
@@ -71,7 +71,7 @@
 ) {
     val measurePolicy = columnMeasurePolicy(verticalArrangement, horizontalAlignment)
     Layout(
-        content = { ColumnScope.content() },
+        content = { ColumnScopeInstance.content() },
         measurePolicy = measurePolicy,
         modifier = modifier
     )
@@ -116,51 +116,6 @@
 @Immutable
 interface ColumnScope {
     /**
-     * Align the element horizontally within the [Column]. This alignment will have priority over
-     * the [Column]'s `horizontalAlignment` parameter.
-     *
-     * Example usage:
-     * @sample androidx.compose.foundation.layout.samples.SimpleAlignInColumn
-     */
-    @Stable
-    fun Modifier.align(alignment: Alignment.Horizontal) = this.then(
-        HorizontalAlignModifier(
-            horizontal = alignment,
-            inspectorInfo = debugInspectorInfo {
-                name = "align"
-                value = alignment
-            }
-        )
-    )
-
-    /**
-     * Position the element horizontally such that its [alignmentLine] aligns with sibling elements
-     * also configured to [alignBy]. [alignBy] is a form of [align],
-     * so both modifiers will not work together if specified for the same layout.
-     * Within a [Column], all components with [alignBy] will align horizontally using
-     * the specified [VerticalAlignmentLine]s or values provided using the other
-     * [alignBy] overload, forming a sibling group.
-     * At least one element of the sibling group will be placed as it had [Alignment.Start] align
-     * in [Column], and the alignment of the other siblings will be then determined such that
-     * the alignment lines coincide. Note that if only one element in a [Column] has the
-     * [alignBy] modifier specified the element will be positioned
-     * as if it had [Alignment.Start] align.
-     *
-     * Example usage:
-     * @sample androidx.compose.foundation.layout.samples.SimpleRelativeToSiblingsInColumn
-     */
-    @Stable
-    fun Modifier.alignBy(alignmentLine: VerticalAlignmentLine) = this.then(
-        SiblingsAlignedModifier.WithAlignmentLine(
-            alignmentLine = alignmentLine,
-            inspectorInfo = debugInspectorInfo {
-                name = "alignBy"
-                value = alignmentLine
-            }
-        )
-    )
-
-    /**
      * Size the element's height proportional to its [weight] relative to other weighted sibling
      * elements in the [Column]. The parent will divide the vertical space remaining after measuring
      * unweighted child elements and distribute it according to this weight.
@@ -179,21 +134,36 @@
         /*@FloatRange(from = 0.0, fromInclusive = false)*/
         weight: Float,
         fill: Boolean = true
-    ): Modifier {
-        require(weight > 0.0) { "invalid weight $weight; must be greater than zero" }
-        return this.then(
-            LayoutWeightImpl(
-                weight = weight,
-                fill = fill,
-                inspectorInfo = debugInspectorInfo {
-                    name = "weight"
-                    value = weight
-                    properties["weight"] = weight
-                    properties["fill"] = fill
-                }
-            )
-        )
-    }
+    ): Modifier
+
+    /**
+     * Align the element horizontally within the [Column]. This alignment will have priority over
+     * the [Column]'s `horizontalAlignment` parameter.
+     *
+     * Example usage:
+     * @sample androidx.compose.foundation.layout.samples.SimpleAlignInColumn
+     */
+    @Stable
+    fun Modifier.align(alignment: Alignment.Horizontal): Modifier
+
+    /**
+     * Position the element horizontally such that its [alignmentLine] aligns with sibling elements
+     * also configured to [alignBy]. [alignBy] is a form of [align],
+     * so both modifiers will not work together if specified for the same layout.
+     * Within a [Column], all components with [alignBy] will align horizontally using
+     * the specified [VerticalAlignmentLine]s or values provided using the other
+     * [alignBy] overload, forming a sibling group.
+     * At least one element of the sibling group will be placed as it had [Alignment.Start] align
+     * in [Column], and the alignment of the other siblings will be then determined such that
+     * the alignment lines coincide. Note that if only one element in a [Column] has the
+     * [alignBy] modifier specified the element will be positioned
+     * as if it had [Alignment.Start] align.
+     *
+     * Example usage:
+     * @sample androidx.compose.foundation.layout.samples.SimpleRelativeToSiblingsInColumn
+     */
+    @Stable
+    fun Modifier.alignBy(alignmentLine: VerticalAlignmentLine): Modifier
 
     /**
      * Position the element horizontally such that the alignment line for the content as
@@ -213,7 +183,51 @@
      * @sample androidx.compose.foundation.layout.samples.SimpleRelativeToSiblings
      */
     @Stable
-    fun Modifier.alignBy(alignmentLineBlock: (Measured) -> Int) = this.then(
+    fun Modifier.alignBy(alignmentLineBlock: (Measured) -> Int): Modifier
+}
+
+internal object ColumnScopeInstance : ColumnScope {
+    @Stable
+    override fun Modifier.weight(weight: Float, fill: Boolean): Modifier {
+        require(weight > 0.0) { "invalid weight $weight; must be greater than zero" }
+        return this.then(
+            LayoutWeightImpl(
+                weight = weight,
+                fill = fill,
+                inspectorInfo = debugInspectorInfo {
+                    name = "weight"
+                    value = weight
+                    properties["weight"] = weight
+                    properties["fill"] = fill
+                }
+            )
+        )
+    }
+
+    @Stable
+    override fun Modifier.align(alignment: Alignment.Horizontal) = this.then(
+        HorizontalAlignModifier(
+            horizontal = alignment,
+            inspectorInfo = debugInspectorInfo {
+                name = "align"
+                value = alignment
+            }
+        )
+    )
+
+    @Stable
+    override fun Modifier.alignBy(alignmentLine: VerticalAlignmentLine) = this.then(
+        SiblingsAlignedModifier.WithAlignmentLine(
+            alignmentLine = alignmentLine,
+            inspectorInfo = debugInspectorInfo {
+                name = "alignBy"
+                value = alignmentLine
+            }
+        )
+    )
+
+    @Stable
+    override fun Modifier.alignBy(alignmentLineBlock: (Measured) -> Int) = this.then(
         SiblingsAlignedModifier.WithAlignmentLineBlock(
             block = alignmentLineBlock,
             inspectorInfo = debugInspectorInfo {
@@ -222,6 +236,4 @@
             }
         )
     )
-
-    companion object : ColumnScope
 }
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Row.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Row.kt
index 0a840aa..320ac43 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Row.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Row.kt
@@ -72,7 +72,7 @@
 ) {
     val measurePolicy = rowMeasurePolicy(horizontalArrangement, verticalAlignment)
     Layout(
-        content = { RowScope.content() },
+        content = { RowScopeInstance.content() },
         measurePolicy = measurePolicy,
         modifier = modifier
     )
@@ -122,6 +122,25 @@
 @Immutable
 interface RowScope {
     /**
+     * Size the element's width proportional to its [weight] relative to other weighted sibling
+     * elements in the [Row]. The parent will divide the horizontal space remaining after measuring
+     * unweighted child elements and distribute it according to this weight.
+     * When [fill] is true, the element will be forced to occupy the whole width allocated to it.
+     * Otherwise, the element is allowed to be smaller - this will result in [Row] being smaller,
+     * as the unused allocated width will not be redistributed to other siblings.
+     *
+     * @param weight The proportional width to give to this element, as related to the total of
+     * all weighted siblings. Must be positive.
+     * @param fill When `true`, the element will occupy the whole width allocated.
+     */
+    @Stable
+    fun Modifier.weight(
+        /*@FloatRange(from = 0.0, fromInclusive = false)*/
+        weight: Float,
+        fill: Boolean = true
+    ): Modifier
+
+    /**
      * Align the element vertically within the [Row]. This alignment will have priority over the
      * [Row]'s `verticalAlignment` parameter.
      *
@@ -129,15 +148,7 @@
      * @sample androidx.compose.foundation.layout.samples.SimpleAlignInRow
      */
     @Stable
-    fun Modifier.align(alignment: Alignment.Vertical) = this.then(
-        VerticalAlignModifier(
-            vertical = alignment,
-            inspectorInfo = debugInspectorInfo {
-                name = "align"
-                value = alignment
-            }
-        )
-    )
+    fun Modifier.align(alignment: Alignment.Vertical): Modifier
 
     /**
      * Position the element vertically such that its [alignmentLine] aligns with sibling elements
@@ -160,15 +171,7 @@
      * @sample androidx.compose.foundation.layout.samples.SimpleAlignByInRow
      */
     @Stable
-    fun Modifier.alignBy(alignmentLine: HorizontalAlignmentLine) = this.then(
-        SiblingsAlignedModifier.WithAlignmentLine(
-            alignmentLine = alignmentLine,
-            inspectorInfo = debugInspectorInfo {
-                name = "alignBy"
-                value = alignmentLine
-            }
-        )
-    )
+    fun Modifier.alignBy(alignmentLine: HorizontalAlignmentLine): Modifier
 
     /**
      * Position the element vertically such that its first baseline aligns with sibling elements
@@ -183,40 +186,7 @@
      * @sample androidx.compose.foundation.layout.samples.SimpleAlignByInRow
      */
     @Stable
-    fun Modifier.alignByBaseline() = alignBy(FirstBaseline)
-
-    /**
-     * Size the element's width proportional to its [weight] relative to other weighted sibling
-     * elements in the [Row]. The parent will divide the horizontal space remaining after measuring
-     * unweighted child elements and distribute it according to this weight.
-     * When [fill] is true, the element will be forced to occupy the whole width allocated to it.
-     * Otherwise, the element is allowed to be smaller - this will result in [Row] being smaller,
-     * as the unused allocated width will not be redistributed to other siblings.
-     *
-     * @param weight The proportional width to give to this element, as related to the total of
-     * all weighted siblings. Must be positive.
-     * @param fill When `true`, the element will occupy the whole width allocated.
-     */
-    @Stable
-    fun Modifier.weight(
-        /*@FloatRange(from = 0.0, fromInclusive = false)*/
-        weight: Float,
-        fill: Boolean = true
-    ): Modifier {
-        require(weight > 0.0) { "invalid weight $weight; must be greater than zero" }
-        return this.then(
-            LayoutWeightImpl(
-                weight = weight,
-                fill = fill,
-                inspectorInfo = debugInspectorInfo {
-                    name = "weight"
-                    value = weight
-                    properties["weight"] = weight
-                    properties["fill"] = fill
-                }
-            )
-        )
-    }
+    fun Modifier.alignByBaseline(): Modifier
 
     /**
      * Position the element vertically such that the alignment line for the content as
@@ -236,7 +206,53 @@
      * @sample androidx.compose.foundation.layout.samples.SimpleAlignByInRow
      */
     @Stable
-    fun Modifier.alignBy(alignmentLineBlock: (Measured) -> Int) = this.then(
+    fun Modifier.alignBy(alignmentLineBlock: (Measured) -> Int): Modifier
+}
+
+internal object RowScopeInstance : RowScope {
+    @Stable
+    override fun Modifier.weight(weight: Float, fill: Boolean): Modifier {
+        require(weight > 0.0) { "invalid weight $weight; must be greater than zero" }
+        return this.then(
+            LayoutWeightImpl(
+                weight = weight,
+                fill = fill,
+                inspectorInfo = debugInspectorInfo {
+                    name = "weight"
+                    value = weight
+                    properties["weight"] = weight
+                    properties["fill"] = fill
+                }
+            )
+        )
+    }
+
+    @Stable
+    override fun Modifier.align(alignment: Alignment.Vertical) = this.then(
+        VerticalAlignModifier(
+            vertical = alignment,
+            inspectorInfo = debugInspectorInfo {
+                name = "align"
+                value = alignment
+            }
+        )
+    )
+
+    @Stable
+    override fun Modifier.alignBy(alignmentLine: HorizontalAlignmentLine) = this.then(
+        SiblingsAlignedModifier.WithAlignmentLine(
+            alignmentLine = alignmentLine,
+            inspectorInfo = debugInspectorInfo {
+                name = "alignBy"
+                value = alignmentLine
+            }
+        )
+    )
+
+    @Stable
+    override fun Modifier.alignByBaseline() = alignBy(FirstBaseline)
+
+    override fun Modifier.alignBy(alignmentLineBlock: (Measured) -> Int) = this.then(
         SiblingsAlignedModifier.WithAlignmentLineBlock(
             block = alignmentLineBlock,
             inspectorInfo = debugInspectorInfo {
@@ -245,6 +261,4 @@
             }
         )
     )
-
-    companion object : RowScope
 }