diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/HotReloadIntegrationTests.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/HotReloadIntegrationTests.kt
index b4b10ab..3423914 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/HotReloadIntegrationTests.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/HotReloadIntegrationTests.kt
@@ -23,7 +23,7 @@
 import androidx.ui.core.WithConstraints
 import androidx.ui.core.setContent
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.DrawerState
 import androidx.ui.material.ModalDrawerLayout
 import org.junit.Rule
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/ComposeBenchmark.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/ComposeBenchmark.kt
index aec2506..05ce917 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/ComposeBenchmark.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/ComposeBenchmark.kt
@@ -29,7 +29,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import org.junit.FixMethodOrder
 import org.junit.Ignore
 import org.junit.Test
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/DbMonsterBenchmark.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/DbMonsterBenchmark.kt
index cf547b8..0d88e47 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/DbMonsterBenchmark.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/DbMonsterBenchmark.kt
@@ -22,8 +22,8 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
 import androidx.ui.core.Modifier
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxHeight
 import org.junit.FixMethodOrder
 import org.junit.Test
 import org.junit.runner.RunWith
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/dbmonster/DbMonster.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/dbmonster/DbMonster.kt
index e7dd31e..82c55ae 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/dbmonster/DbMonster.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/dbmonster/DbMonster.kt
@@ -22,10 +22,10 @@
 import androidx.compose.setValue
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
 import kotlin.random.Random
 
 private fun randomQuery(random: Random): String = random.nextDouble().let {
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/deeptree/DeepTree.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/deeptree/DeepTree.kt
index 7093bf5..d15d064 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/deeptree/DeepTree.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/deeptree/DeepTree.kt
@@ -21,11 +21,11 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
 
 val blueBackground = Modifier.background(color = Color.Blue)
 val magentaBackground = Modifier.background(color = Color.Magenta)
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt
index 4881727..090ae25 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/realworld4/RealWorld4_Widgets.kt
@@ -28,13 +28,13 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.WithConstraints
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.ui.unit.dp
 import kotlin.reflect.KCallable
 import kotlin.reflect.full.memberProperties
diff --git a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/siblings/SiblingManagement.kt b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/siblings/SiblingManagement.kt
index 00ab019..b848e96 100644
--- a/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/siblings/SiblingManagement.kt
+++ b/compose/compose-runtime/compose-runtime-benchmark/src/androidTest/java/androidx/compose/benchmark/siblings/SiblingManagement.kt
@@ -23,11 +23,11 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.ui.text.TextStyle
 import kotlin.random.Random
 
diff --git a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/EffectSamples.kt b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/EffectSamples.kt
index 56734ff..0e3ae2f 100644
--- a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/EffectSamples.kt
+++ b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/EffectSamples.kt
@@ -26,7 +26,7 @@
 import androidx.compose.state
 import androidx.compose.stateFor
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Row
+import androidx.compose.foundation.layout.Row
 import androidx.ui.material.Button
 
 @Suppress("unused")
diff --git a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/ImmutableSamples.kt b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/ImmutableSamples.kt
index f8e94d3..a821930 100644
--- a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/ImmutableSamples.kt
+++ b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/ImmutableSamples.kt
@@ -20,8 +20,8 @@
 import androidx.compose.Composable
 import androidx.compose.Immutable
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Row
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Column
 
 @Sampled
 @Composable
diff --git a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateListSamples.kt b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateListSamples.kt
index c2ffdf2..5a63e60 100644
--- a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateListSamples.kt
+++ b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateListSamples.kt
@@ -24,8 +24,8 @@
 import androidx.compose.state
 import androidx.compose.foundation.Text
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
 import androidx.ui.material.Button
 import androidx.ui.text.CoreTextField
 
diff --git a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateMapSample.kt b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateMapSample.kt
index 9f3769d..1030772 100644
--- a/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateMapSample.kt
+++ b/compose/compose-runtime/samples/src/main/java/androidx/compose/samples/MutableStateMapSample.kt
@@ -24,8 +24,8 @@
 import androidx.compose.state
 import androidx.compose.foundation.Text
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
 import androidx.ui.material.Button
 import androidx.ui.text.CoreTextField
 
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
index 8c903d7..83009f6 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/LayoutNodeModifierBenchmark.kt
@@ -36,7 +36,7 @@
 import androidx.ui.core.setContent
 import androidx.ui.core.zIndex
 import androidx.compose.foundation.Box
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.test.DisableTransitions
 import androidx.ui.unit.dp
 import org.junit.Before
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/RadioGroupBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/RadioGroupBenchmark.kt
index 5244e6d..0eade8a 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/RadioGroupBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/RadioGroupBenchmark.kt
@@ -34,8 +34,8 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.selection.selectable
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.RadioButton
 import androidx.ui.test.ComposeTestCase
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/SpacingBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/SpacingBenchmark.kt
index 5419894..e664397 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/SpacingBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/SpacingBenchmark.kt
@@ -35,8 +35,8 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.offset
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/TrailingLambdaBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/TrailingLambdaBenchmark.kt
index da3384a..1af89d1 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/TrailingLambdaBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/benchmark/test/TrailingLambdaBenchmark.kt
@@ -26,8 +26,8 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Box
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.Column
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.unit.dp
 import org.junit.Rule
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/OnPositionedBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/OnPositionedBenchmark.kt
index 539f6c2..3563b00 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/OnPositionedBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/OnPositionedBenchmark.kt
@@ -25,8 +25,8 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.ContentGravity
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
diff --git a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/WithConstraintsBenchmark.kt b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/WithConstraintsBenchmark.kt
index e40d3bf..bb4c5a6 100644
--- a/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/WithConstraintsBenchmark.kt
+++ b/ui/integration-tests/benchmark/src/androidTest/java/androidx/ui/core/WithConstraintsBenchmark.kt
@@ -27,9 +27,9 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.ContentGravity
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
diff --git a/ui/integration-tests/demos/src/main/java/androidx/ui/demos/DemoApp.kt b/ui/integration-tests/demos/src/main/java/androidx/ui/demos/DemoApp.kt
index 6394f7f..27853ea 100644
--- a/ui/integration-tests/demos/src/main/java/androidx/ui/demos/DemoApp.kt
+++ b/ui/integration-tests/demos/src/main/java/androidx/ui/demos/DemoApp.kt
@@ -34,10 +34,10 @@
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.Text
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.material.IconButton
 import androidx.ui.material.ListItem
 import androidx.ui.material.MaterialTheme
diff --git a/ui/integration-tests/demos/src/main/java/androidx/ui/demos/DemoFilter.kt b/ui/integration-tests/demos/src/main/java/androidx/ui/demos/DemoFilter.kt
index 1f853d7..2331cd4 100644
--- a/ui/integration-tests/demos/src/main/java/androidx/ui/demos/DemoFilter.kt
+++ b/ui/integration-tests/demos/src/main/java/androidx/ui/demos/DemoFilter.kt
@@ -30,9 +30,9 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.ui.graphics.compositeOver
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.material.IconButton
 import androidx.ui.material.ListItem
 import androidx.ui.material.MaterialTheme
diff --git a/ui/integration-tests/demos/src/main/java/androidx/ui/demos/Demos.kt b/ui/integration-tests/demos/src/main/java/androidx/ui/demos/Demos.kt
index deb82f1..f8ed2f7 100644
--- a/ui/integration-tests/demos/src/main/java/androidx/ui/demos/Demos.kt
+++ b/ui/integration-tests/demos/src/main/java/androidx/ui/demos/Demos.kt
@@ -21,7 +21,7 @@
 import androidx.ui.core.demos.CoreDemos
 import androidx.ui.demos.common.DemoCategory
 import androidx.compose.foundation.demos.FoundationDemos
-import androidx.ui.layout.demos.LayoutDemos
+import androidx.compose.foundation.layout.demos.LayoutDemos
 import androidx.ui.material.demos.MaterialDemos
 import androidx.ui.material.studies.MaterialStudies
 import androidx.ui.text.demos.TextDemos
diff --git a/ui/integration-tests/src/androidTest/java/androidx/ui/integration/test/VectorAssetTest.kt b/ui/integration-tests/src/androidTest/java/androidx/ui/integration/test/VectorAssetTest.kt
index f770f26..4393ccb 100644
--- a/ui/integration-tests/src/androidTest/java/androidx/ui/integration/test/VectorAssetTest.kt
+++ b/ui/integration-tests/src/androidTest/java/androidx/ui/integration/test/VectorAssetTest.kt
@@ -19,7 +19,7 @@
 import android.os.Build
 import androidx.test.filters.LargeTest
 import androidx.test.filters.SdkSuppress
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.test.captureToBitmap
 import androidx.ui.integration.test.framework.ProgrammaticVectorTestCase
 import androidx.ui.integration.test.framework.XmlVectorTestCase
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton1TestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton1TestCase.kt
index 5f6012c..674d40f 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton1TestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton1TestCase.kt
@@ -25,7 +25,7 @@
 import androidx.compose.foundation.shape.corner.CircleShape
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.drawOutline
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 class SimpleRadioButton1TestCase : BaseSimpleRadioButtonTestCase() {
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton2TestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton2TestCase.kt
index bd797b5..f4cf4b2 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton2TestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton2TestCase.kt
@@ -30,7 +30,7 @@
 import androidx.ui.graphics.Outline
 import androidx.ui.graphics.Path
 import androidx.ui.graphics.Shape
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.Density
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton3TestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton3TestCase.kt
index f3cb913..39b75bd 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton3TestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton3TestCase.kt
@@ -21,7 +21,7 @@
 import androidx.compose.foundation.Canvas
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.drawscope.Stroke
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 class SimpleRadioButton3TestCase : BaseSimpleRadioButtonTestCase() {
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton4TestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton4TestCase.kt
index 5dc5203..85027fe 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton4TestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/SimpleRadioButton4TestCase.kt
@@ -24,8 +24,8 @@
 import androidx.compose.foundation.drawBorder
 import androidx.compose.foundation.shape.corner.CircleShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 class SimpleRadioButton4TestCase : BaseSimpleRadioButtonTestCase() {
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/text/TextBasicTestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/text/TextBasicTestCase.kt
index 8ff67c5..8fcbc95 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/text/TextBasicTestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/text/TextBasicTestCase.kt
@@ -24,8 +24,8 @@
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.preferredWidth
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.unit.Dp
 import androidx.ui.unit.TextUnit
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/text/TextMultiStyleTestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/text/TextMultiStyleTestCase.kt
index 85a979c..b633296 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/text/TextMultiStyleTestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/core/text/TextMultiStyleTestCase.kt
@@ -22,8 +22,8 @@
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
 import androidx.ui.integration.test.RandomTextGenerator
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.preferredWidth
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.text.AnnotatedString
 import androidx.ui.text.TextStyle
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/NestedScrollerTestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/NestedScrollerTestCase.kt
index f0821cf..5c08cf8 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/NestedScrollerTestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/NestedScrollerTestCase.kt
@@ -31,12 +31,12 @@
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.RowScope
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredSize
+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.fillMaxWidth
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Surface
 import androidx.ui.test.ComposeTestCase
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/RectsInColumnSharedModelTestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/RectsInColumnSharedModelTestCase.kt
index d0e47fe..6d5449a 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/RectsInColumnSharedModelTestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/RectsInColumnSharedModelTestCase.kt
@@ -23,11 +23,11 @@
 import androidx.compose.foundation.background
 import androidx.ui.unit.dp
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.MaterialTheme
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 
 /**
  * Test case that puts the given amount of rectangles into a column layout and makes changes by
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/RectsInColumnTestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/RectsInColumnTestCase.kt
index f888cb4..ada2464 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/RectsInColumnTestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/RectsInColumnTestCase.kt
@@ -24,12 +24,12 @@
 import androidx.compose.foundation.background
 import androidx.ui.unit.dp
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Surface
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 
 /**
  * Test case that puts the given amount of rectangles into a column layout and makes changes by
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/ScrollerTestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/ScrollerTestCase.kt
index 1dfdade..75a178f 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/ScrollerTestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/ScrollerTestCase.kt
@@ -24,9 +24,9 @@
 import androidx.compose.foundation.rememberScrollState
 import androidx.ui.graphics.Color
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.unit.dp
 
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/TextInColumnTestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/TextInColumnTestCase.kt
index f81c2e5..19d7185 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/TextInColumnTestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/foundation/TextInColumnTestCase.kt
@@ -20,7 +20,7 @@
 import androidx.compose.mutableStateOf
 import androidx.compose.foundation.Text
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Surface
 import androidx.ui.test.ComposeTestCase
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/framework/VectorAssetTestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/framework/VectorAssetTestCase.kt
index 4c8a539..964ecd4 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/framework/VectorAssetTestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/framework/VectorAssetTestCase.kt
@@ -29,7 +29,7 @@
 import androidx.ui.graphics.vector.VectorAsset
 import androidx.ui.graphics.vector.VectorAssetBuilder
 import androidx.ui.graphics.vector.VectorPainter
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.res.vectorResource
 import androidx.ui.test.ComposeTestCase
 import androidx.ui.unit.dp
diff --git a/ui/integration-tests/src/main/java/androidx/ui/integration/test/material/CheckboxesInRowsTestCase.kt b/ui/integration-tests/src/main/java/androidx/ui/integration/test/material/CheckboxesInRowsTestCase.kt
index 9293aee..a87f2f3 100644
--- a/ui/integration-tests/src/main/java/androidx/ui/integration/test/material/CheckboxesInRowsTestCase.kt
+++ b/ui/integration-tests/src/main/java/androidx/ui/integration/test/material/CheckboxesInRowsTestCase.kt
@@ -23,9 +23,9 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Text
 import androidx.ui.integration.test.ToggleableTestCase
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.material.Checkbox
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Surface
diff --git a/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/ComplexInteractions.kt b/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/ComplexInteractions.kt
index d674cb4..efccc1a 100644
--- a/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/ComplexInteractions.kt
+++ b/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/ComplexInteractions.kt
@@ -25,7 +25,7 @@
 import androidx.ui.demos.common.ComposableDemo
 import androidx.ui.demos.common.DemoCategory
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.Button
 import androidx.ui.viewinterop.AndroidView
 
diff --git a/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/PointerInputInteropAndroidInCompose.kt b/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/PointerInputInteropAndroidInCompose.kt
index d996ccd..c01c8b5 100644
--- a/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/PointerInputInteropAndroidInCompose.kt
+++ b/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/PointerInputInteropAndroidInCompose.kt
@@ -32,12 +32,12 @@
 import androidx.compose.foundation.Text
 import androidx.ui.geometry.Offset
 import androidx.compose.foundation.background
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.dp
 import androidx.ui.viewinterop.AndroidView
 
diff --git a/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/PointerInputInteropComposeInAndroid.kt b/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/PointerInputInteropComposeInAndroid.kt
index 91a35df..3b7a341 100644
--- a/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/PointerInputInteropComposeInAndroid.kt
+++ b/ui/ui-android-view/integration-tests/android-view-demos/src/main/java/androidx/ui/androidview/demos/PointerInputInteropComposeInAndroid.kt
@@ -39,15 +39,15 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.RectangleShape
 import androidx.ui.graphics.toArgb
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.dp
 
 val ComposeInAndroidDemos = DemoCategory(
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/AnimatableSeekBarDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/AnimatableSeekBarDemo.kt
index aaf9a94..d3fda2b 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/AnimatableSeekBarDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/AnimatableSeekBarDemo.kt
@@ -38,11 +38,11 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.geometry.Size
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
 
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeDemo.kt
index 2c90778..5e3a5d6 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/CrossfadeDemo.kt
@@ -27,10 +27,10 @@
 import androidx.ui.core.gesture.tapGestureFilter
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.unit.dp
 import kotlin.random.Random
 
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/FancyScrollingDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/FancyScrollingDemo.kt
index 6da7017..a855ff0 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/FancyScrollingDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/FancyScrollingDemo.kt
@@ -32,10 +32,10 @@
 import androidx.ui.geometry.Size
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.drawscope.DrawScope
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
 import kotlin.math.roundToInt
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/GestureBasedAnimationDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/GestureBasedAnimationDemo.kt
index a4faf9e..b12b530 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/GestureBasedAnimationDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/GestureBasedAnimationDemo.kt
@@ -29,7 +29,7 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.geometry.Size
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 
 private const val halfSize = 200f
 
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/MultiDimensionalAnimationDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/MultiDimensionalAnimationDemo.kt
index 2a9ae55..7dec7d2 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/MultiDimensionalAnimationDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/MultiDimensionalAnimationDemo.kt
@@ -33,7 +33,7 @@
 import androidx.ui.geometry.Rect
 import androidx.ui.geometry.Size
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 
 @Composable
 fun MultiDimensionalAnimationDemo() {
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/RepeatedRotationDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/RepeatedRotationDemo.kt
index 9fcea8a..a762629 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/RepeatedRotationDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/RepeatedRotationDemo.kt
@@ -31,11 +31,11 @@
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.drawscope.rotate
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.text.TextStyle
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SingleValueAnimationDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SingleValueAnimationDemo.kt
index 9d47e41d..da514bd 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SingleValueAnimationDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SingleValueAnimationDemo.kt
@@ -23,7 +23,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.clickable
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 
 @Composable
 fun SingleValueAnimationDemo() {
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SpringBackScrollingDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SpringBackScrollingDemo.kt
index 4423ed5..832a728 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SpringBackScrollingDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SpringBackScrollingDemo.kt
@@ -31,11 +31,11 @@
 import androidx.ui.geometry.Size
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.drawscope.DrawScope
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
 import kotlin.math.roundToInt
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateAnimationWithInterruptionsDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateAnimationWithInterruptionsDemo.kt
index ab8c2ca..ab5b552 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateAnimationWithInterruptionsDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateAnimationWithInterruptionsDemo.kt
@@ -36,7 +36,7 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.geometry.Size
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 
 @Composable
 fun StateAnimationWithInterruptionsDemo() {
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateBasedRippleDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateBasedRippleDemo.kt
index 3d28686..372183a 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateBasedRippleDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/StateBasedRippleDemo.kt
@@ -35,7 +35,7 @@
 import androidx.compose.foundation.Canvas
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SwipeToDismissDemo.kt b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SwipeToDismissDemo.kt
index 5473289..b662f92 100644
--- a/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SwipeToDismissDemo.kt
+++ b/ui/ui-animation/integration-tests/animation-demos/src/main/java/androidx/ui/animation/demos/SwipeToDismissDemo.kt
@@ -36,10 +36,10 @@
 import androidx.ui.geometry.Size
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.drawscope.DrawScope
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
 import kotlin.math.sign
diff --git a/ui/ui-animation/samples/src/main/java/androidx/ui/animation/samples/AnimatedValueSamples.kt b/ui/ui-animation/samples/src/main/java/androidx/ui/animation/samples/AnimatedValueSamples.kt
index a3aae7b..675be07 100644
--- a/ui/ui-animation/samples/src/main/java/androidx/ui/animation/samples/AnimatedValueSamples.kt
+++ b/ui/ui-animation/samples/src/main/java/androidx/ui/animation/samples/AnimatedValueSamples.kt
@@ -29,8 +29,8 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-animation/samples/src/main/java/androidx/ui/animation/samples/TransitionSamples.kt b/ui/ui-animation/samples/src/main/java/androidx/ui/animation/samples/TransitionSamples.kt
index 528f4a7..06617b8 100644
--- a/ui/ui-animation/samples/src/main/java/androidx/ui/animation/samples/TransitionSamples.kt
+++ b/ui/ui-animation/samples/src/main/java/androidx/ui/animation/samples/TransitionSamples.kt
@@ -26,7 +26,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 private enum class State {
diff --git a/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/Crossfade.kt b/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/Crossfade.kt
index cda441b..a06e144 100644
--- a/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/Crossfade.kt
+++ b/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/Crossfade.kt
@@ -27,7 +27,7 @@
 import androidx.compose.remember
 import androidx.ui.core.Modifier
 import androidx.ui.core.drawOpacity
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import androidx.ui.util.fastForEach
 
 /**
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/DeclarativeGraphicsDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/DeclarativeGraphicsDemo.kt
index 355aa7f..cdfa2bd 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/DeclarativeGraphicsDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/DeclarativeGraphicsDemo.kt
@@ -24,9 +24,9 @@
 import androidx.ui.graphics.drawscope.rotate
 import androidx.ui.graphics.drawscope.scale
 import androidx.ui.graphics.drawscope.translate
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/MultipleCollect.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/MultipleCollect.kt
index bb1a421..c93c8c6 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/MultipleCollect.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/MultipleCollect.kt
@@ -26,7 +26,7 @@
 import androidx.ui.core.layoutId
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 
 @Composable
 fun HeaderFooterLayout(
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/PopupDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/PopupDemo.kt
index 19c025e..cba1a0c 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/PopupDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/PopupDemo.kt
@@ -34,16 +34,16 @@
 import androidx.ui.input.ImeAction
 import androidx.ui.input.KeyboardType
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.ColumnScope
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ColumnScope
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.text.style.TextAlign
 import androidx.ui.text.CoreTextField
 import androidx.ui.unit.Dp
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/VectorGraphicsDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/VectorGraphicsDemo.kt
index 96c272a..d2b3393 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/VectorGraphicsDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/VectorGraphicsDemo.kt
@@ -33,10 +33,10 @@
 import androidx.ui.graphics.vector.PathBuilder
 import androidx.ui.graphics.vector.PathData
 import androidx.ui.graphics.vector.VectorPainter
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.res.loadVectorResource
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/ViewModelDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/ViewModelDemo.kt
index a7fda4c..eb94b1b 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/ViewModelDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/ViewModelDemo.kt
@@ -23,8 +23,8 @@
 import androidx.lifecycle.ViewModel
 import androidx.ui.core.Alignment
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
 import androidx.compose.runtime.livedata.observeAsState
 import androidx.ui.material.Button
 import androidx.ui.viewmodel.viewModel
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/autofill/ExplicitAutofillTypesDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/autofill/ExplicitAutofillTypesDemo.kt
index fb126ad..468fe59 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/autofill/ExplicitAutofillTypesDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/autofill/ExplicitAutofillTypesDemo.kt
@@ -33,9 +33,9 @@
 import androidx.ui.input.ImeAction
 import androidx.ui.input.KeyboardType
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.MaterialTheme
 import androidx.ui.text.CoreTextField
 import androidx.ui.unit.dp
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/focus/FocusableDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/focus/FocusableDemo.kt
index 85e9207..1871e86 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/focus/FocusableDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/focus/FocusableDemo.kt
@@ -30,11 +30,11 @@
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color.Companion.Black
 import androidx.ui.graphics.Color.Companion.Green
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.RowScope
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.fillMaxWidth
 
 @Composable
 fun FocusableDemo() {
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DoubleTapGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DoubleTapGestureDetectorDemo.kt
index d21c60a..c371aca 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DoubleTapGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DoubleTapGestureDetectorDemo.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.compose.foundation.drawBorder
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DoubleTapInTapDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DoubleTapInTapDemo.kt
index 5f87a10..699b8b8 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DoubleTapInTapDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DoubleTapInTapDemo.kt
@@ -28,10 +28,10 @@
 import androidx.compose.foundation.drawBorder
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.RectangleShape
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragScaleGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragScaleGestureDetectorDemo.kt
index b79741d..21aff13 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragScaleGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragScaleGestureDetectorDemo.kt
@@ -28,11 +28,11 @@
 import androidx.ui.core.gesture.tapGestureFilter
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.offset
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragSlopExceededGestureFilterDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragSlopExceededGestureFilterDemo.kt
index b49ac63..821cfbe 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragSlopExceededGestureFilterDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/DragSlopExceededGestureFilterDemo.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.dp
 
 /**
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt
index fa41120..96a40d5 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/HorizontalScrollersInVerticalScrollerDemo.kt
@@ -38,9 +38,9 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.drawscope.clipRect
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 import kotlin.math.roundToInt
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/LongPressDragGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/LongPressDragGestureDetectorDemo.kt
index 3a4862c..6665c10 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/LongPressDragGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/LongPressDragGestureDetectorDemo.kt
@@ -25,11 +25,11 @@
 import androidx.ui.core.gesture.LongPressDragObserver
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.offset
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/LongPressGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/LongPressGestureDetectorDemo.kt
index 4413652..cad5ad1 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/LongPressGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/LongPressGestureDetectorDemo.kt
@@ -24,10 +24,10 @@
 import androidx.compose.foundation.Border
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedLongPressDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedLongPressDemo.kt
index bc6bc753..06acc7a 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedLongPressDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedLongPressDemo.kt
@@ -25,9 +25,9 @@
 import androidx.compose.foundation.ContentGravity
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.compositeOver
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedPressDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedPressDemo.kt
index 99ef126..8c538af 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedPressDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedPressDemo.kt
@@ -27,9 +27,9 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.compositeOver
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScalingDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScalingDemo.kt
index 55e7f4b..831343a 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScalingDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScalingDemo.kt
@@ -26,8 +26,8 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.wrapContentSize
 import kotlin.math.roundToInt
 
 /**
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScrollingDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScrollingDemo.kt
index 8b66a3e..6daad6c 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScrollingDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/NestedScrollingDemo.kt
@@ -37,9 +37,9 @@
 import androidx.compose.foundation.drawBorder
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 import kotlin.math.roundToInt
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PointerInputDuringSubCompDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PointerInputDuringSubCompDemo.kt
index f4df3a6..19edd10 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PointerInputDuringSubCompDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PointerInputDuringSubCompDemo.kt
@@ -34,10 +34,10 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.drawBorder
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.size
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.TextUnit
 import androidx.ui.unit.dp
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PopupDragDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PopupDragDemo.kt
index 6e027a2..d504157 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PopupDragDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PopupDragDemo.kt
@@ -29,9 +29,9 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.shape.corner.CircleShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.text.style.TextAlign
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PressIndicatorGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PressIndicatorGestureDetectorDemo.kt
index 76cdcea9e7..3baa2bc 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PressIndicatorGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/PressIndicatorGestureDetectorDemo.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.compositeOver
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/RawDragGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/RawDragGestureDetectorDemo.kt
index 39ef368..8ea27ee 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/RawDragGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/RawDragGestureDetectorDemo.kt
@@ -25,11 +25,11 @@
 import androidx.ui.core.gesture.rawDragGestureFilter
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.offset
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScaleGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScaleGestureDetectorDemo.kt
index 98735e6..d594e29 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScaleGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScaleGestureDetectorDemo.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.dp
 
 /**
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScrollGestureFilterDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScrollGestureFilterDemo.kt
index 544d54e..f27f317 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScrollGestureFilterDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/ScrollGestureFilterDemo.kt
@@ -29,11 +29,11 @@
 import androidx.compose.foundation.Text
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.offset
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/TapGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/TapGestureDetectorDemo.kt
index 0d4a0c5..259973f 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/TapGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/TapGestureDetectorDemo.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.Border
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/TouchSlopDragGestureDetectorDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/TouchSlopDragGestureDetectorDemo.kt
index ce2ba5b..07a283c 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/TouchSlopDragGestureDetectorDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/TouchSlopDragGestureDetectorDemo.kt
@@ -27,11 +27,11 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.offset
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt
index b450f25..c815242 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/gestures/VerticalScrollerInDrawerLayoutDemo.kt
@@ -40,17 +40,17 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.drawscope.clipRect
-import androidx.ui.layout.Column
-import androidx.ui.layout.ColumnScope
-import androidx.ui.layout.Row
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.offsetPx
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.width
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ColumnScope
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.offsetPx
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 import kotlin.math.roundToInt
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/keyinput/KeyInputDemo.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/keyinput/KeyInputDemo.kt
index 8075c6c..0d2d6be 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/keyinput/KeyInputDemo.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/keyinput/KeyInputDemo.kt
@@ -36,11 +36,11 @@
 import androidx.ui.core.keyinput.keyInputFilter
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.RowScope
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.fillMaxWidth
 
 @Composable
 fun KeyInputDemo() {
diff --git a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/viewinterop/ViewInterop.kt b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/viewinterop/ViewInterop.kt
index 9ba6393..ec3dfd9 100644
--- a/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/viewinterop/ViewInterop.kt
+++ b/ui/ui-core/integration-tests/ui-core-demos/src/main/java/androidx/ui/core/demos/viewinterop/ViewInterop.kt
@@ -39,8 +39,8 @@
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.toArgb
-import androidx.ui.layout.Column
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.size
 import androidx.ui.material.Button
 import androidx.ui.unit.dp
 import androidx.ui.viewinterop.AndroidView
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/DrawShadowSample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/DrawShadowSample.kt
index 2c80442..d8f2f78 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/DrawShadowSample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/DrawShadowSample.kt
@@ -22,7 +22,7 @@
 import androidx.ui.core.drawShadow
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.RectangleShape
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ModifierSamples.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ModifierSamples.kt
index 7b95b1ac..8ff35bf 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ModifierSamples.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ModifierSamples.kt
@@ -24,9 +24,9 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.padding
 import androidx.ui.material.Button
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/OnPositionedSamples.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/OnPositionedSamples.kt
index 03a3058..a945c06 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/OnPositionedSamples.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/OnPositionedSamples.kt
@@ -25,8 +25,8 @@
 import androidx.ui.core.positionInRoot
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/OpacitySample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/OpacitySample.kt
index fda1f0f..95e2d39 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/OpacitySample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/OpacitySample.kt
@@ -22,7 +22,7 @@
 import androidx.ui.core.drawOpacity
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PainterSample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PainterSample.kt
index a78becb..16ba0cf 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PainterSample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PainterSample.kt
@@ -26,7 +26,7 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.painter.Painter
 import androidx.ui.graphics.drawscope.DrawScope
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PopupSample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PopupSample.kt
index ca522a3..93487ae 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PopupSample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/PopupSample.kt
@@ -26,7 +26,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.shape.corner.RoundedCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/WithConstraintsSample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/WithConstraintsSample.kt
index 42dfab2..af83529 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/WithConstraintsSample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/WithConstraintsSample.kt
@@ -22,8 +22,8 @@
 import androidx.ui.core.WithConstraints
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ZIndexModifierSample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ZIndexModifierSample.kt
index e28df24..15f1c2fe 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ZIndexModifierSample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/ZIndexModifierSample.kt
@@ -21,7 +21,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.zIndex
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 
 @Sampled
 @Composable
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PainterModifierTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PainterModifierTest.kt
index ef792a3..cc4219b 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PainterModifierTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PainterModifierTest.kt
@@ -45,14 +45,14 @@
 import androidx.ui.graphics.vector.Path
 import androidx.ui.graphics.vector.PathData
 import androidx.ui.graphics.vector.VectorPainter
-import androidx.ui.layout.height
-import androidx.ui.layout.heightIn
-import androidx.ui.layout.ltr
-import androidx.ui.layout.rtl
-import androidx.ui.layout.width
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.heightIn
+import androidx.compose.foundation.layout.ltr
+import androidx.compose.foundation.layout.rtl
+import androidx.compose.foundation.layout.width
 import androidx.ui.unit.dp
-import androidx.ui.layout.widthIn
-import androidx.ui.layout.wrapContentHeight
+import androidx.compose.foundation.layout.widthIn
+import androidx.compose.foundation.layout.wrapContentHeight
 import androidx.ui.test.assertHeightIsEqualTo
 import androidx.ui.test.assertWidthIsEqualTo
 import androidx.ui.test.captureToBitmap
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PopupTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PopupTest.kt
index 12ebda0..fcd089b 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PopupTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/PopupTest.kt
@@ -32,11 +32,11 @@
 import androidx.test.filters.FlakyTest
 import androidx.test.filters.MediumTest
 import androidx.ui.core.selection.SimpleContainer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.height
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.rtl
-import androidx.ui.layout.width
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.rtl
+import androidx.compose.foundation.layout.width
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.runOnIdle
 import androidx.ui.test.runOnUiThread
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/focus/FocusTestUtils.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/focus/FocusTestUtils.kt
index 918fdcb..f86b975 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/focus/FocusTestUtils.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/focus/FocusTestUtils.kt
@@ -19,7 +19,7 @@
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Box
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.size
 import androidx.ui.test.ComposeTestRule
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/LongPressDragGestureFilterTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/LongPressDragGestureFilterTest.kt
index 89ea6d5..a24c272 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/LongPressDragGestureFilterTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/LongPressDragGestureFilterTest.kt
@@ -24,7 +24,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.setContent
 import androidx.ui.framework.test.TestActivity
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import androidx.ui.geometry.Offset
 import com.nhaarman.mockitokotlin2.any
 import com.nhaarman.mockitokotlin2.inOrder
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/ScaleGestureFilterTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/ScaleGestureFilterTest.kt
index a45de17..a81a9df 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/ScaleGestureFilterTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/ScaleGestureFilterTest.kt
@@ -25,7 +25,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.setContent
 import androidx.ui.framework.test.TestActivity
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import com.nhaarman.mockitokotlin2.any
 import com.nhaarman.mockitokotlin2.inOrder
 import com.nhaarman.mockitokotlin2.spy
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/TouchSlopDragGestureFilterTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/TouchSlopDragGestureFilterTest.kt
index 83919d5..86f9296 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/TouchSlopDragGestureFilterTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/gesture/TouchSlopDragGestureFilterTest.kt
@@ -25,7 +25,7 @@
 import androidx.ui.core.setContent
 import androidx.ui.geometry.Offset
 import androidx.ui.framework.test.TestActivity
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import com.nhaarman.mockitokotlin2.any
 import com.nhaarman.mockitokotlin2.inOrder
 import com.nhaarman.mockitokotlin2.spy
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidLayoutDrawTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidLayoutDrawTest.kt
index b5c6ef4..4c834fe 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidLayoutDrawTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidLayoutDrawTest.kt
@@ -81,10 +81,10 @@
 import androidx.ui.graphics.drawscope.Stroke
 import androidx.ui.graphics.drawscope.clipRect
 import androidx.ui.graphics.drawscope.translate
-import androidx.ui.layout.ltr
-import androidx.ui.layout.offset
-import androidx.ui.layout.padding
-import androidx.ui.layout.rtl
+import androidx.compose.foundation.layout.ltr
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.rtl
 import androidx.ui.unit.Density
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidViewCompatTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidViewCompatTest.kt
index 1fa4a5b..c8fa328 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidViewCompatTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/AndroidViewCompatTest.kt
@@ -74,9 +74,9 @@
 import androidx.compose.foundation.drawBackground
 import androidx.ui.framework.test.TestActivity
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
 import androidx.ui.test.android.AndroidComposeTestRule
 import androidx.ui.test.assertIsDisplayed
 import androidx.ui.test.assertPixels
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ClipPointerInputTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ClipPointerInputTest.kt
index f2f687d..2d73414 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ClipPointerInputTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/ClipPointerInputTest.kt
@@ -36,7 +36,7 @@
 import androidx.ui.core.setContent
 import androidx.ui.framework.test.TestActivity
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.offset
+import androidx.compose.foundation.layout.offset
 import androidx.ui.unit.IntSize
 import com.google.common.truth.Truth.assertThat
 import org.junit.Before
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayerTouchTransformTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayerTouchTransformTest.kt
index b85d88b..c8ba473 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayerTouchTransformTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayerTouchTransformTest.kt
@@ -33,9 +33,9 @@
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.toArgb
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.offset
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.performPartialGesture
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayoutTagTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayoutTagTest.kt
index 1d5a462..9a9720ce 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayoutTagTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/LayoutTagTest.kt
@@ -24,7 +24,7 @@
 import androidx.ui.core.id
 import androidx.ui.core.layoutId
 import androidx.ui.framework.test.TestActivity
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RootNodeLayoutTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RootNodeLayoutTest.kt
index 0175b3c..3cfc3a7 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RootNodeLayoutTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RootNodeLayoutTest.kt
@@ -28,7 +28,7 @@
 import androidx.ui.core.onPositioned
 import androidx.ui.core.setContent
 import androidx.ui.framework.test.TestActivity
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.unit.PxBounds
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotEquals
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RtlLayoutTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RtlLayoutTest.kt
index 3e6d0a5..13f283d 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RtlLayoutTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/RtlLayoutTest.kt
@@ -36,11 +36,11 @@
 import androidx.ui.core.setContent
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Stack
-import androidx.ui.layout.ltr
-import androidx.ui.layout.padding
-import androidx.ui.layout.rtl
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.ltr
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.rtl
+import androidx.compose.foundation.layout.size
 import androidx.ui.unit.Density
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WithConstraintsTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WithConstraintsTest.kt
index a4e3916..08c78e3 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WithConstraintsTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/core/test/WithConstraintsTest.kt
@@ -50,10 +50,10 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.vector.VectorPainter
-import androidx.ui.layout.Constraints
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.ltr
-import androidx.ui.layout.rtl
+import androidx.compose.foundation.layout.Constraints
+import androidx.compose.foundation.layout.DpConstraints
+import androidx.compose.foundation.layout.ltr
+import androidx.compose.foundation.layout.rtl
 import androidx.ui.unit.Density
 import androidx.ui.unit.Dp
 import androidx.ui.unit.IntSize
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/VectorTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/VectorTest.kt
index 3cb6a8b..94016a8 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/VectorTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/graphics/vector/VectorTest.kt
@@ -31,9 +31,9 @@
 import androidx.ui.graphics.ColorFilter
 import androidx.ui.graphics.SolidColor
 import androidx.ui.graphics.toArgb
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.onRoot
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/viewinterop/ComposedViewTest.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/viewinterop/ComposedViewTest.kt
index 63098ce..0ed1e9e 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/viewinterop/ComposedViewTest.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/viewinterop/ComposedViewTest.kt
@@ -41,7 +41,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.size
 import androidx.ui.test.android.AndroidComposeTestRule
 import androidx.ui.test.assertPixels
 import androidx.ui.test.captureToBitmap
diff --git a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example1/Main.kt b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example1/Main.kt
index 86a0de5..0d39c91 100644
--- a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example1/Main.kt
+++ b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example1/Main.kt
@@ -27,11 +27,11 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.ImageAsset
 import androidx.ui.graphics.asImageAsset
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.material.Button
 import androidx.ui.material.CircularProgressIndicator
 import androidx.ui.material.ExtendedFloatingActionButton
@@ -45,7 +45,7 @@
 import androidx.ui.unit.sp
 import androidx.ui.text.font.fontFamily
 import androidx.ui.desktop.font
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.unit.IntSize
 
 private const val title = "Desktop Compose Elements"
diff --git a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example2/Main.kt b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example2/Main.kt
index 8c7e689..44fd4ad 100644
--- a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example2/Main.kt
+++ b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/example2/Main.kt
@@ -22,7 +22,7 @@
 import androidx.ui.graphics.drawscope.inset
 import androidx.ui.graphics.drawscope.rotate
 import androidx.ui.graphics.drawscope.withTransform
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.unit.IntSize
 import androidx.ui.desktop.AppWindow
 
diff --git a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/popupexample/AppContent.kt b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/popupexample/AppContent.kt
index 23958f9..361173d 100644
--- a/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/popupexample/AppContent.kt
+++ b/ui/ui-desktop/samples/src/jvmMain/kotlin/androidx/ui/desktop/examples/popupexample/AppContent.kt
@@ -29,16 +29,16 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.shape.corner.RoundedCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.ColumnScope.gravity
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.height
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.width
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ColumnScope.gravity
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
+import androidx.compose.foundation.layout.width
 import androidx.ui.material.Button
 import androidx.ui.material.Surface
 import androidx.ui.unit.IntSize
diff --git a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/core/Popup.kt b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/core/Popup.kt
index 37ddd79..13f2fd2 100644
--- a/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/core/Popup.kt
+++ b/ui/ui-desktop/src/jvmMain/kotlin/androidx/ui/core/Popup.kt
@@ -25,7 +25,7 @@
 import androidx.ui.desktop.view.LayoutScope
 import androidx.ui.core.gesture.tapGestureFilter
 import androidx.compose.foundation.Box
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.unit.IntOffset
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/ParagraphTest.kt b/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/ParagraphTest.kt
index 14a5677..ec6154c 100644
--- a/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/ParagraphTest.kt
+++ b/ui/ui-desktop/src/jvmTest/kotlin/androidx/ui/desktop/ParagraphTest.kt
@@ -22,12 +22,12 @@
 import androidx.ui.desktop.test.TestSkiaWindow
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.material.Scaffold
 import androidx.ui.material.TopAppBar
 import androidx.ui.text.AnnotatedString
diff --git a/ui/ui-foundation/api/0.1.0-dev16.txt b/ui/ui-foundation/api/0.1.0-dev16.txt
index 0a818f9..2d36fe4 100644
--- a/ui/ui-foundation/api/0.1.0-dev16.txt
+++ b/ui/ui-foundation/api/0.1.0-dev16.txt
@@ -30,8 +30,8 @@
 
   public final class BoxKt {
     method @androidx.compose.Composable public static void Box-Pkj0E94(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.graphics.Shape shape = androidx.ui.graphics.RectangleShapeKt.RectangleShape, long backgroundColor = Color.Transparent, androidx.compose.foundation.Border? border = null, float padding = elvis {
-    var var41190f19: androidx.ui.unit.Dp = border?.size
-    if (var41190f19 != null) var41190f19 else 0.dp
+    var var41192109: androidx.ui.unit.Dp = border?.size
+    if (var41192109 != null) var41192109 else 0.dp
 }, float paddingStart = Dp.Unspecified, float paddingTop = Dp.Unspecified, float paddingEnd = Dp.Unspecified, float paddingBottom = Dp.Unspecified, androidx.ui.core.Alignment gravity = ContentGravity.TopStart, kotlin.jvm.functions.Function0<kotlin.Unit> children = emptyContent());
   }
 
@@ -129,11 +129,11 @@
   }
 
   public final class ScrollKt {
-    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static androidx.compose.foundation.ScrollerPosition ScrollerPosition(float initial = 0f, boolean isReversed = false);
-    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
     method public static androidx.ui.core.Modifier horizontalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
     method @androidx.compose.Composable public static androidx.compose.foundation.ScrollState rememberScrollState(float initial = 0f);
     method public static androidx.ui.core.Modifier verticalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
@@ -281,8 +281,8 @@
 package androidx.compose.foundation.lazy {
 
   public final class LazyItemsKt {
-    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
-    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
   }
 
 }
diff --git a/ui/ui-foundation/api/current.txt b/ui/ui-foundation/api/current.txt
index 0a818f9..2d36fe4 100644
--- a/ui/ui-foundation/api/current.txt
+++ b/ui/ui-foundation/api/current.txt
@@ -30,8 +30,8 @@
 
   public final class BoxKt {
     method @androidx.compose.Composable public static void Box-Pkj0E94(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.graphics.Shape shape = androidx.ui.graphics.RectangleShapeKt.RectangleShape, long backgroundColor = Color.Transparent, androidx.compose.foundation.Border? border = null, float padding = elvis {
-    var var41190f19: androidx.ui.unit.Dp = border?.size
-    if (var41190f19 != null) var41190f19 else 0.dp
+    var var41192109: androidx.ui.unit.Dp = border?.size
+    if (var41192109 != null) var41192109 else 0.dp
 }, float paddingStart = Dp.Unspecified, float paddingTop = Dp.Unspecified, float paddingEnd = Dp.Unspecified, float paddingBottom = Dp.Unspecified, androidx.ui.core.Alignment gravity = ContentGravity.TopStart, kotlin.jvm.functions.Function0<kotlin.Unit> children = emptyContent());
   }
 
@@ -129,11 +129,11 @@
   }
 
   public final class ScrollKt {
-    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static androidx.compose.foundation.ScrollerPosition ScrollerPosition(float initial = 0f, boolean isReversed = false);
-    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
     method public static androidx.ui.core.Modifier horizontalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
     method @androidx.compose.Composable public static androidx.compose.foundation.ScrollState rememberScrollState(float initial = 0f);
     method public static androidx.ui.core.Modifier verticalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
@@ -281,8 +281,8 @@
 package androidx.compose.foundation.lazy {
 
   public final class LazyItemsKt {
-    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
-    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
   }
 
 }
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev16.txt
index 0a818f9..2d36fe4 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev16.txt
@@ -30,8 +30,8 @@
 
   public final class BoxKt {
     method @androidx.compose.Composable public static void Box-Pkj0E94(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.graphics.Shape shape = androidx.ui.graphics.RectangleShapeKt.RectangleShape, long backgroundColor = Color.Transparent, androidx.compose.foundation.Border? border = null, float padding = elvis {
-    var var41190f19: androidx.ui.unit.Dp = border?.size
-    if (var41190f19 != null) var41190f19 else 0.dp
+    var var41192109: androidx.ui.unit.Dp = border?.size
+    if (var41192109 != null) var41192109 else 0.dp
 }, float paddingStart = Dp.Unspecified, float paddingTop = Dp.Unspecified, float paddingEnd = Dp.Unspecified, float paddingBottom = Dp.Unspecified, androidx.ui.core.Alignment gravity = ContentGravity.TopStart, kotlin.jvm.functions.Function0<kotlin.Unit> children = emptyContent());
   }
 
@@ -129,11 +129,11 @@
   }
 
   public final class ScrollKt {
-    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static androidx.compose.foundation.ScrollerPosition ScrollerPosition(float initial = 0f, boolean isReversed = false);
-    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
     method public static androidx.ui.core.Modifier horizontalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
     method @androidx.compose.Composable public static androidx.compose.foundation.ScrollState rememberScrollState(float initial = 0f);
     method public static androidx.ui.core.Modifier verticalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
@@ -281,8 +281,8 @@
 package androidx.compose.foundation.lazy {
 
   public final class LazyItemsKt {
-    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
-    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
   }
 
 }
diff --git a/ui/ui-foundation/api/public_plus_experimental_current.txt b/ui/ui-foundation/api/public_plus_experimental_current.txt
index 0a818f9..2d36fe4 100644
--- a/ui/ui-foundation/api/public_plus_experimental_current.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_current.txt
@@ -30,8 +30,8 @@
 
   public final class BoxKt {
     method @androidx.compose.Composable public static void Box-Pkj0E94(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.graphics.Shape shape = androidx.ui.graphics.RectangleShapeKt.RectangleShape, long backgroundColor = Color.Transparent, androidx.compose.foundation.Border? border = null, float padding = elvis {
-    var var41190f19: androidx.ui.unit.Dp = border?.size
-    if (var41190f19 != null) var41190f19 else 0.dp
+    var var41192109: androidx.ui.unit.Dp = border?.size
+    if (var41192109 != null) var41192109 else 0.dp
 }, float paddingStart = Dp.Unspecified, float paddingTop = Dp.Unspecified, float paddingEnd = Dp.Unspecified, float paddingBottom = Dp.Unspecified, androidx.ui.core.Alignment gravity = ContentGravity.TopStart, kotlin.jvm.functions.Function0<kotlin.Unit> children = emptyContent());
   }
 
@@ -129,11 +129,11 @@
   }
 
   public final class ScrollKt {
-    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static androidx.compose.foundation.ScrollerPosition ScrollerPosition(float initial = 0f, boolean isReversed = false);
-    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
     method public static androidx.ui.core.Modifier horizontalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
     method @androidx.compose.Composable public static androidx.compose.foundation.ScrollState rememberScrollState(float initial = 0f);
     method public static androidx.ui.core.Modifier verticalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
@@ -281,8 +281,8 @@
 package androidx.compose.foundation.lazy {
 
   public final class LazyItemsKt {
-    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
-    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
   }
 
 }
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev16.txt b/ui/ui-foundation/api/restricted_0.1.0-dev16.txt
index 0a818f9..2d36fe4 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev16.txt
@@ -30,8 +30,8 @@
 
   public final class BoxKt {
     method @androidx.compose.Composable public static void Box-Pkj0E94(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.graphics.Shape shape = androidx.ui.graphics.RectangleShapeKt.RectangleShape, long backgroundColor = Color.Transparent, androidx.compose.foundation.Border? border = null, float padding = elvis {
-    var var41190f19: androidx.ui.unit.Dp = border?.size
-    if (var41190f19 != null) var41190f19 else 0.dp
+    var var41192109: androidx.ui.unit.Dp = border?.size
+    if (var41192109 != null) var41192109 else 0.dp
 }, float paddingStart = Dp.Unspecified, float paddingTop = Dp.Unspecified, float paddingEnd = Dp.Unspecified, float paddingBottom = Dp.Unspecified, androidx.ui.core.Alignment gravity = ContentGravity.TopStart, kotlin.jvm.functions.Function0<kotlin.Unit> children = emptyContent());
   }
 
@@ -129,11 +129,11 @@
   }
 
   public final class ScrollKt {
-    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static androidx.compose.foundation.ScrollerPosition ScrollerPosition(float initial = 0f, boolean isReversed = false);
-    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
     method public static androidx.ui.core.Modifier horizontalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
     method @androidx.compose.Composable public static androidx.compose.foundation.ScrollState rememberScrollState(float initial = 0f);
     method public static androidx.ui.core.Modifier verticalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
@@ -281,8 +281,8 @@
 package androidx.compose.foundation.lazy {
 
   public final class LazyItemsKt {
-    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
-    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
   }
 
 }
diff --git a/ui/ui-foundation/api/restricted_current.txt b/ui/ui-foundation/api/restricted_current.txt
index 0a818f9..2d36fe4 100644
--- a/ui/ui-foundation/api/restricted_current.txt
+++ b/ui/ui-foundation/api/restricted_current.txt
@@ -30,8 +30,8 @@
 
   public final class BoxKt {
     method @androidx.compose.Composable public static void Box-Pkj0E94(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.graphics.Shape shape = androidx.ui.graphics.RectangleShapeKt.RectangleShape, long backgroundColor = Color.Transparent, androidx.compose.foundation.Border? border = null, float padding = elvis {
-    var var41190f19: androidx.ui.unit.Dp = border?.size
-    if (var41190f19 != null) var41190f19 else 0.dp
+    var var41192109: androidx.ui.unit.Dp = border?.size
+    if (var41192109 != null) var41192109 else 0.dp
 }, float paddingStart = Dp.Unspecified, float paddingTop = Dp.Unspecified, float paddingEnd = Dp.Unspecified, float paddingBottom = Dp.Unspecified, androidx.ui.core.Alignment gravity = ContentGravity.TopStart, kotlin.jvm.functions.Function0<kotlin.Unit> children = emptyContent());
   }
 
@@ -129,11 +129,11 @@
   }
 
   public final class ScrollKt {
-    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void HorizontalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableColumn(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ScrollableRow(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.ScrollState scrollState = rememberScrollState(0.0), androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, boolean reverseScrollDirection = false, boolean isScrollEnabled = true, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static androidx.compose.foundation.ScrollerPosition ScrollerPosition(float initial = 0f, boolean isReversed = false);
-    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @Deprecated @androidx.compose.Composable public static void VerticalScroller(androidx.compose.foundation.ScrollerPosition scrollerPosition = ScrollerPosition(), androidx.ui.core.Modifier modifier = Modifier, boolean isScrollable = true, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
     method public static androidx.ui.core.Modifier horizontalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
     method @androidx.compose.Composable public static androidx.compose.foundation.ScrollState rememberScrollState(float initial = 0f);
     method public static androidx.ui.core.Modifier verticalScroll(androidx.ui.core.Modifier, androidx.compose.foundation.ScrollState state, boolean enabled = true, boolean reverseScrolling = false);
@@ -281,8 +281,8 @@
 package androidx.compose.foundation.lazy {
 
   public final class LazyItemsKt {
-    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
-    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.InnerPadding contentPadding = androidx.ui.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyColumnItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
+    method @androidx.compose.Composable public static <T> void LazyRowItems(java.util.List<? extends T> items, androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.InnerPadding contentPadding = androidx.compose.foundation.layout.InnerPadding(0.dp), kotlin.jvm.functions.Function1<? super T,kotlin.Unit> itemContent);
   }
 
 }
diff --git a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BoxDemo.kt b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BoxDemo.kt
index 3491a15..3178be8 100644
--- a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BoxDemo.kt
+++ b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/BoxDemo.kt
@@ -26,12 +26,12 @@
 import androidx.compose.foundation.shape.corner.CutCornerShape
 import androidx.compose.foundation.shape.corner.RoundedCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/DrawModifiersDemo.kt b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/DrawModifiersDemo.kt
index 1167325..f302013 100644
--- a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/DrawModifiersDemo.kt
+++ b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/DrawModifiersDemo.kt
@@ -23,11 +23,11 @@
 import androidx.compose.foundation.samples.BorderSampleWithDataClass
 import androidx.compose.foundation.samples.DrawBackgroundColor
 import androidx.compose.foundation.samples.DrawBackgroundShapedBrush
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/HighLevelGesturesDemo.kt b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/HighLevelGesturesDemo.kt
index 4212d4b..0bdeba8 100644
--- a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/HighLevelGesturesDemo.kt
+++ b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/HighLevelGesturesDemo.kt
@@ -21,9 +21,9 @@
 import androidx.compose.foundation.samples.DraggableSample
 import androidx.compose.foundation.samples.ScrollableSample
 import androidx.compose.foundation.samples.ZoomableSample
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt
index 81f9ac5..67289d0 100644
--- a/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt
+++ b/ui/ui-foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/ListDemos.kt
@@ -34,11 +34,11 @@
 import androidx.compose.foundation.lazy.LazyRowItems
 import androidx.compose.foundation.shape.corner.RoundedCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
 import kotlin.random.Random
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BorderSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BorderSamples.kt
index d0797f7..057532e 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BorderSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BorderSamples.kt
@@ -27,7 +27,7 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.HorizontalGradient
 import androidx.ui.graphics.TileMode
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BoxSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BoxSamples.kt
index 34b05b6..865b912 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BoxSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/BoxSamples.kt
@@ -25,7 +25,7 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.shape.corner.CircleShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/CanvasSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/CanvasSamples.kt
index c64ea04..1edf837 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/CanvasSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/CanvasSamples.kt
@@ -23,7 +23,7 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.drawscope.inset
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DarkThemeSample.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DarkThemeSample.kt
index c5b17b2..6e0e2ce 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DarkThemeSample.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DarkThemeSample.kt
@@ -23,8 +23,8 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.isSystemInDarkTheme
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DeterminateProgressSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DeterminateProgressSamples.kt
index 44b24037..d644fd1 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DeterminateProgressSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DeterminateProgressSamples.kt
@@ -23,7 +23,7 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.determinateProgressIndicator
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DialogSample.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DialogSample.kt
index 6454e62..b1d6f55 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DialogSample.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DialogSample.kt
@@ -23,7 +23,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Dialog
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DraggableSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DraggableSamples.kt
index 67e7e9e..d2dfed2 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DraggableSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DraggableSamples.kt
@@ -24,9 +24,9 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.gestures.draggable
 import androidx.ui.graphics.Color
-import androidx.ui.layout.offsetPx
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.offsetPx
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DrawBackgroundSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DrawBackgroundSamples.kt
index 8f98997..cf54a2c 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DrawBackgroundSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/DrawBackgroundSamples.kt
@@ -24,7 +24,7 @@
 import androidx.compose.foundation.shape.corner.CutCornerShape
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.HorizontalGradient
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ImageSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ImageSamples.kt
index e5e9df3..c020a41 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ImageSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ImageSamples.kt
@@ -32,7 +32,7 @@
 import androidx.ui.graphics.painter.ImagePainter
 import androidx.ui.graphics.painter.Painter
 import androidx.ui.graphics.drawscope.DrawScope
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.res.loadVectorResource
 import androidx.ui.unit.IntOffset
 import androidx.ui.unit.IntSize
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/IndicationSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/IndicationSamples.kt
index 66497ea..b5d13ca 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/IndicationSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/IndicationSamples.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.indication
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.height
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/InteractionStateSample.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/InteractionStateSample.kt
index 2facf62..ff14aa0 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/InteractionStateSample.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/InteractionStateSample.kt
@@ -30,9 +30,9 @@
 import androidx.compose.foundation.currentTextStyle
 import androidx.compose.foundation.gestures.draggable
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.text.style.TextAlign
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollableSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollableSamples.kt
index 05ab55c..0e5699a 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollableSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollableSamples.kt
@@ -27,7 +27,7 @@
 import androidx.compose.foundation.gestures.rememberScrollableController
 import androidx.compose.foundation.gestures.scrollable
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.text.TextStyle
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt
index de35b66..a101f6f 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ScrollerSamples.kt
@@ -34,13 +34,13 @@
 import androidx.ui.graphics.HorizontalGradient
 import androidx.ui.graphics.TileMode
 import androidx.ui.graphics.VerticalGradient
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.height
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.size
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
 
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/SelectableSamples.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/SelectableSamples.kt
index 0be62c1..4843cd1a 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/SelectableSamples.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/SelectableSamples.kt
@@ -27,9 +27,9 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.selection.selectable
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.size
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/TextFieldSample.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/TextFieldSample.kt
index 87679fb9..59d6a20 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/TextFieldSample.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/TextFieldSample.kt
@@ -24,7 +24,7 @@
 import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.Text
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import androidx.compose.runtime.savedinstancestate.savedInstanceState
 
 @Sampled
diff --git a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ZoomableSample.kt b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ZoomableSample.kt
index 7dd84ca..3d9193a 100644
--- a/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ZoomableSample.kt
+++ b/ui/ui-foundation/samples/src/main/java/androidx/compose/foundation/samples/ZoomableSample.kt
@@ -33,8 +33,8 @@
 import androidx.compose.foundation.gestures.ZoomableState
 import androidx.compose.foundation.gestures.zoomable
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
 
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BackgroundTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BackgroundTest.kt
index 1abec8e..c4b7fc2 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BackgroundTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BackgroundTest.kt
@@ -27,8 +27,8 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.RectangleShape
 import androidx.ui.graphics.SolidColor
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.assertShape
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt
index 3c3cf55..6a55f9f 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BorderTest.kt
@@ -29,8 +29,8 @@
 import androidx.ui.graphics.RectangleShape
 import androidx.ui.graphics.Shape
 import androidx.ui.graphics.SolidColor
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.assertShape
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BoxTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BoxTest.kt
index 5106b1c..af8a45f 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BoxTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/BoxTest.kt
@@ -30,12 +30,12 @@
 import androidx.compose.foundation.shape.corner.CircleShape
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.RectangleShape
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.rtl
-import androidx.ui.layout.size
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.rtl
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.assertShape
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/CanvasTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/CanvasTest.kt
index fd22be7..6c655d1 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/CanvasTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/CanvasTest.kt
@@ -27,8 +27,8 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.RectangleShape
 import androidx.ui.graphics.toArgb
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.assertHeightIsEqualTo
 import androidx.ui.test.assertShape
 import androidx.ui.test.assertWidthIsEqualTo
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ClickableTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ClickableTest.kt
index 9fad2bc..6431c11 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ClickableTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ClickableTest.kt
@@ -22,7 +22,7 @@
 import androidx.test.filters.MediumTest
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import androidx.ui.test.assertHasClickAction
 import androidx.ui.test.assertHasNoClickAction
 import androidx.ui.test.assertIsEnabled
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/DeterminateProgressTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/DeterminateProgressTest.kt
index 3c3a1f9c..714eafa 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/DeterminateProgressTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/DeterminateProgressTest.kt
@@ -21,7 +21,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.semantics.AccessibilityRangeInfo
 import androidx.ui.test.assertRangeInfoEquals
 import androidx.ui.test.assertValueEquals
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/DraggableTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/DraggableTest.kt
index 191f646..7ea10dd 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/DraggableTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/DraggableTest.kt
@@ -26,8 +26,8 @@
 import androidx.ui.core.testTag
 import androidx.compose.foundation.gestures.draggable
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.center
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.performGesture
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/FoundationTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/FoundationTest.kt
index b89de091..5b4ac59 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/FoundationTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/FoundationTest.kt
@@ -19,9 +19,9 @@
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSizeIn
+import androidx.compose.foundation.layout.DpConstraints
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSizeIn
 import androidx.ui.test.ComposeTestRule
 import androidx.ui.test.SemanticsNodeInteraction
 import androidx.ui.test.onNodeWithTag
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ImageTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ImageTest.kt
index 6838663..1b69974 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ImageTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ImageTest.kt
@@ -34,9 +34,9 @@
 import androidx.ui.core.drawBehind
 import androidx.ui.core.testTag
 import androidx.ui.graphics.toArgb
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredSizeIn
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSizeIn
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.res.loadVectorResource
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/IndicationTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/IndicationTest.kt
index a8f7fa1..03682e5 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/IndicationTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/IndicationTest.kt
@@ -21,7 +21,7 @@
 import androidx.ui.core.ContentDrawScope
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.center
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.performPartialGesture
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollTest.kt
index 63769f3..4f7a9c6 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollTest.kt
@@ -28,9 +28,9 @@
 import androidx.ui.core.testTag
 import androidx.compose.foundation.animation.FlingConfig
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.GestureScope
 import androidx.ui.test.SemanticsNodeInteraction
 import androidx.ui.test.StateRestorationTester
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt
index bf2c04d..97eca69 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ScrollableTest.kt
@@ -31,8 +31,8 @@
 import androidx.compose.foundation.animation.FlingConfig
 import androidx.compose.foundation.gestures.ScrollableController
 import androidx.compose.foundation.gestures.scrollable
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.center
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.performGesture
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SelectableTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SelectableTest.kt
index c483478..f49e55f 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SelectableTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SelectableTest.kt
@@ -23,7 +23,7 @@
 import androidx.test.filters.MediumTest
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.selection.selectable
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import androidx.ui.test.assertCountEquals
 import androidx.ui.test.assertIsInMutuallyExclusiveGroup
 import androidx.ui.test.assertIsSelected
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SoftwareKeyboardTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SoftwareKeyboardTest.kt
index 7ecb9a3..7f71bc4 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SoftwareKeyboardTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/SoftwareKeyboardTest.kt
@@ -23,7 +23,7 @@
 import androidx.ui.core.TextInputServiceAmbient
 import androidx.ui.input.TextFieldValue
 import androidx.ui.input.TextInputService
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.hasInputMethodsSupport
 import androidx.ui.test.onNode
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldCursorTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldCursorTest.kt
index a1a06ef..0f3a4a5 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldCursorTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldCursorTest.kt
@@ -24,8 +24,8 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.RectangleShape
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.assertPixels
 import androidx.ui.test.assertShape
 import androidx.ui.test.captureToBitmap
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldFocusTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldFocusTest.kt
index 0cc4185..7c3e2ae 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldFocusTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldFocusTest.kt
@@ -23,7 +23,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.focus.FocusModifier
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.width
+import androidx.compose.foundation.layout.width
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.runOnIdle
 import androidx.ui.test.runOnUiThread
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldTest.kt
index 519eb60..b116f74e 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/TextFieldTest.kt
@@ -39,10 +39,10 @@
 import androidx.ui.input.EditOperation
 import androidx.ui.input.ImeAction
 import androidx.ui.input.TextInputService
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.compose.runtime.savedinstancestate.savedInstanceState
 import androidx.ui.test.StateRestorationTester
 import androidx.ui.test.assert
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ToggleableTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ToggleableTest.kt
index 32a2be8..fb1e6d4 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ToggleableTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ToggleableTest.kt
@@ -26,8 +26,8 @@
 import androidx.compose.foundation.selection.toggleable
 import androidx.compose.foundation.selection.triStateToggleable
 import androidx.compose.foundation.semantics.FoundationSemanticsProperties
-import androidx.ui.layout.Column
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Stack
 import androidx.ui.test.SemanticsMatcher
 import androidx.ui.test.assert
 import androidx.ui.test.assertHasClickAction
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ZoomableTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ZoomableTest.kt
index 8393232..0dc4545 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ZoomableTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/ZoomableTest.kt
@@ -23,7 +23,7 @@
 import androidx.compose.foundation.gestures.ZoomableState
 import androidx.compose.foundation.gestures.zoomable
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.AnimationClockTestRule
 import androidx.ui.test.center
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyColumnItemsTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyColumnItemsTest.kt
index 301c36f..764e111 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyColumnItemsTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyColumnItemsTest.kt
@@ -28,13 +28,13 @@
 import androidx.ui.geometry.Offset
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.height
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.size
 import androidx.ui.test.SemanticsNodeInteraction
 import androidx.ui.test.assertCountEquals
 import androidx.ui.test.assertIsDisplayed
diff --git a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyRowItemsTest.kt b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyRowItemsTest.kt
index 739891c..7e16ea6 100644
--- a/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyRowItemsTest.kt
+++ b/ui/ui-foundation/src/androidAndroidTest/kotlin/androidx/compose/foundation/lazy/LazyRowItemsTest.kt
@@ -19,12 +19,12 @@
 import androidx.test.filters.MediumTest
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.preferredWidth
+import androidx.compose.foundation.layout.size
 import androidx.ui.test.assertIsDisplayed
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.getBoundsInRoot
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/BaseTextField.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/BaseTextField.kt
index 3685c80..73b26b2 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/BaseTextField.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/BaseTextField.kt
@@ -42,7 +42,7 @@
 import androidx.ui.input.KeyboardType
 import androidx.ui.input.TextFieldValue
 import androidx.ui.input.VisualTransformation
-import androidx.ui.layout.defaultMinSizeConstraints
+import androidx.compose.foundation.layout.defaultMinSizeConstraints
 import androidx.ui.text.AnnotatedString
 import androidx.ui.text.CoreTextField
 import androidx.ui.text.InternalTextApi
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Box.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Box.kt
index 1d86d1a..e1e5d51 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Box.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Box.kt
@@ -24,9 +24,9 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.RectangleShape
 import androidx.ui.graphics.Shape
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.padding
 import androidx.ui.unit.Dp
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
@@ -35,14 +35,14 @@
 /**
  * A convenience composable that combines common layout and draw logic.
  *
- * In order to define the size of the [Box], the [androidx.ui.layout.LayoutWidth],
- * [androidx.ui.layout.LayoutHeight] and [androidx.ui.layout.LayoutSize] modifiers can be used.
+ * In order to define the size of the [Box], the [androidx.compose.foundation.layout.LayoutWidth],
+ * [androidx.compose.foundation.layout.LayoutHeight] and [androidx.compose.foundation.layout.LayoutSize] modifiers can be used.
  * The [Box] will try to be only as small as its content. However, if it is constrained
  * otherwise, [Box] will allow its content to be smaller and will position the content inside,
  * according to [gravity].
  *
  * The specified [padding] will be applied inside the [Box]. In order to apply padding outside
- * the [Box], the [androidx.ui.layout.LayoutPadding] modifier should be used.
+ * the [Box], the [androidx.compose.foundation.layout.LayoutPadding] modifier should be used.
  *
  * @sample androidx.compose.foundation.samples.SimpleCircleBox
  *
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Canvas.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Canvas.kt
index be7745f..6b4e3ac 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Canvas.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Canvas.kt
@@ -20,8 +20,8 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.drawBehind
 import androidx.ui.graphics.drawscope.DrawScope
-import androidx.ui.layout.ColumnScope
-import androidx.ui.layout.Spacer
+import androidx.compose.foundation.layout.ColumnScope
+import androidx.compose.foundation.layout.Spacer
 
 /**
  * Component that allow you to specify an area on the screen and perform canvas drawing on this
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Icon.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Icon.kt
index 157a311..fa77212 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Icon.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Icon.kt
@@ -29,7 +29,7 @@
 import androidx.ui.graphics.painter.Painter
 import androidx.ui.graphics.vector.VectorAsset
 import androidx.ui.graphics.vector.VectorPainter
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 /**
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Scroll.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Scroll.kt
index 9f9f398..d4e5612 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Scroll.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/Scroll.kt
@@ -45,14 +45,14 @@
 import androidx.compose.foundation.animation.defaultFlingConfig
 import androidx.compose.foundation.gestures.ScrollableController
 import androidx.compose.foundation.gestures.scrollable
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.ColumnScope
-import androidx.ui.layout.Constraints
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Row
-import androidx.ui.layout.RowScope
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ColumnScope
+import androidx.compose.foundation.layout.Constraints
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.padding
 import androidx.compose.runtime.savedinstancestate.Saver
 import androidx.compose.runtime.savedinstancestate.rememberSavedInstanceState
 import androidx.ui.semantics.scrollBy
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItems.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItems.kt
index 12ca96c..1ab037e 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItems.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/compose/foundation/lazy/LazyItems.kt
@@ -33,9 +33,9 @@
 import androidx.ui.core.materialize
 import androidx.compose.foundation.gestures.rememberScrollableController
 import androidx.compose.foundation.gestures.scrollable
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.padding
 import androidx.ui.unit.dp
 
 /**
diff --git a/ui/ui-graphics/samples/src/main/java/androidx/ui/graphics/samples/DrawScopeSample.kt b/ui/ui-graphics/samples/src/main/java/androidx/ui/graphics/samples/DrawScopeSample.kt
index 50ecf95..85b2728 100644
--- a/ui/ui-graphics/samples/src/main/java/androidx/ui/graphics/samples/DrawScopeSample.kt
+++ b/ui/ui-graphics/samples/src/main/java/androidx/ui/graphics/samples/DrawScopeSample.kt
@@ -24,7 +24,7 @@
 import androidx.ui.graphics.drawscope.inset
 import androidx.ui.graphics.drawscope.rotate
 import androidx.ui.graphics.drawscope.withTransform
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 /**
diff --git a/ui/ui-internal-lint-checks/src/main/java/androidx/ui/lint/PackageNameMigrationDetector.kt b/ui/ui-internal-lint-checks/src/main/java/androidx/ui/lint/PackageNameMigrationDetector.kt
index fdf4ee3..d9113bf 100644
--- a/ui/ui-internal-lint-checks/src/main/java/androidx/ui/lint/PackageNameMigrationDetector.kt
+++ b/ui/ui-internal-lint-checks/src/main/java/androidx/ui/lint/PackageNameMigrationDetector.kt
@@ -63,7 +63,8 @@
             "androidx.ui.livedata" to "androidx.compose.runtime.livedata",
             "androidx.ui.rxjava2" to "androidx.compose.runtime.rxjava2",
             "androidx.ui.savedinstancestate" to "androidx.compose.runtime.savedinstancestate",
-            "androidx.ui.foundation" to "androidx.compose.foundation"
+            "androidx.ui.foundation" to "androidx.compose.foundation",
+            "androidx.ui.layout" to "androidx.compose.foundation.layout"
         )
 
         val ISSUE = Issue.create(
diff --git a/ui/ui-layout/api/0.1.0-dev16.txt b/ui/ui-layout/api/0.1.0-dev16.txt
index 88edca5..51192c3 100644
--- a/ui/ui-layout/api/0.1.0-dev16.txt
+++ b/ui/ui-layout/api/0.1.0-dev16.txt
@@ -1,38 +1,38 @@
 // Signature format: 3.0
-package androidx.ui.layout {
+package androidx.compose.foundation.layout {
 
   @androidx.compose.Immutable public final class AbsoluteArrangement {
-    field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Center INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Left implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Left INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Right implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Right INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceAround INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
   }
 
   public final class AlignmentLineKt {
@@ -41,55 +41,55 @@
   }
 
   @androidx.compose.Immutable public final class Arrangement {
-    field public static final androidx.ui.layout.Arrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement INSTANCE;
   }
 
-  public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Bottom implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Bottom INSTANCE;
   }
 
-  public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Center INSTANCE;
   }
 
-  public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.End implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.End INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.End INSTANCE;
   }
 
   public static interface Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
   }
 
-  public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceAround INSTANCE;
   }
 
-  public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceEvenly INSTANCE;
   }
 
-  public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.Start implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Start INSTANCE;
   }
 
-  public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Top implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Top INSTANCE;
   }
 
   public static interface Arrangement.Vertical {
@@ -97,237 +97,237 @@
   }
 
   public final class ChainStyle {
-    field public static final androidx.ui.layout.ChainStyle.Companion Companion;
+    field public static final androidx.compose.foundation.layout.ChainStyle.Companion Companion;
   }
 
   public static final class ChainStyle.Companion {
-    method public androidx.ui.layout.ChainStyle Packed(float bias);
-    method public androidx.ui.layout.ChainStyle getPacked();
-    method public androidx.ui.layout.ChainStyle getSpread();
-    method public androidx.ui.layout.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ChainStyle Packed;
-    property public final androidx.ui.layout.ChainStyle Spread;
-    property public final androidx.ui.layout.ChainStyle SpreadInside;
+    method public androidx.compose.foundation.layout.ChainStyle Packed(float bias);
+    method public androidx.compose.foundation.layout.ChainStyle getPacked();
+    method public androidx.compose.foundation.layout.ChainStyle getSpread();
+    method public androidx.compose.foundation.layout.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ChainStyle SpreadInside;
   }
 
   public final class ColumnKt {
-    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class ColumnScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class ColumnScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.ColumnScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.ColumnScope INSTANCE;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
-    method public void centerHorizontallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerVerticallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
-    method public androidx.ui.layout.ConstrainScope.BaselineAnchorable getBaseline();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getBottom();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getEnd();
-    method public androidx.ui.layout.Dimension getHeight();
-    method public androidx.ui.layout.ConstrainedLayoutReference getParent();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getStart();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getTop();
-    method public androidx.ui.layout.Dimension getWidth();
-    method public void linkTo-MrnifDM(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-h2XOreo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-tsa2a54(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
-    method public void setHeight(androidx.ui.layout.Dimension value);
-    method public void setWidth(androidx.ui.layout.Dimension value);
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteRight;
-    property public final androidx.ui.layout.ConstrainScope.BaselineAnchorable baseline;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable bottom;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable end;
-    property public final androidx.ui.layout.Dimension height;
-    property public final androidx.ui.layout.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable start;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable top;
-    property public final androidx.ui.layout.Dimension width;
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstrainScope {
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
+    method public void centerHorizontallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerVerticallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable getBaseline();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getBottom();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getEnd();
+    method public androidx.compose.foundation.layout.Dimension getHeight();
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference getParent();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getStart();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getTop();
+    method public androidx.compose.foundation.layout.Dimension getWidth();
+    method public void linkTo-G1ipIQs(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-TkcoPiE(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-xxHMemQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
+    method public void setHeight(androidx.compose.foundation.layout.Dimension value);
+    method public void setWidth(androidx.compose.foundation.layout.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable baseline;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable bottom;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable end;
+    property public final androidx.compose.foundation.layout.Dimension height;
+    property public final androidx.compose.foundation.layout.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable start;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable top;
+    property public final androidx.compose.foundation.layout.Dimension width;
   }
 
   public final class ConstrainScope.BaselineAnchorable {
-    method public void linkTo-oRbSkj8(androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
+    method public void linkTo-oVJf39w(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.HorizontalAnchorable {
-    method public void linkTo-TJhmEpo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-9lY5dKQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.VerticalAnchorable {
-    method public void linkTo-sp3QI2o(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-EGV1AEI(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainedLayoutReference {
     ctor public ConstrainedLayoutReference(Object id);
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
     method public Object getId();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
   }
 
   public abstract class ConstraintLayoutBaseScope {
     ctor public ConstraintLayoutBaseScope();
-    method public final void applyTo(androidx.ui.layout.State state);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method public final void createHorizontalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final void createVerticalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> getTasks();
+    method public final void applyTo(androidx.compose.foundation.layout.State state);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method public final void createHorizontalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final void createVerticalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> getTasks();
     method public final void reset();
-    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> tasks;
+    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> tasks;
   }
 
   public static final class ConstraintLayoutBaseScope.BaselineAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
   }
 
   public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
   }
 
   public static final class ConstraintLayoutBaseScope.VerticalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
   }
 
   public final class ConstraintLayoutKt {
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintLayoutScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @Deprecated public static androidx.ui.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.Dimension.MaxCoercible atLeast-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atLeastWrapContent-pX8Pf4s(androidx.ui.layout.Dimension.MinCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MinCoercible atMost-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atMost-bf1TpX8(androidx.ui.layout.Dimension.MaxCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtLeastWrapContent(androidx.ui.layout.Dimension.MinCoercible);
-    method public static androidx.ui.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtMostWrapContent(androidx.ui.layout.Dimension.MaxCoercible);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintLayoutScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.compose.foundation.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @Deprecated public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible atLeast-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atLeastWrapContent-vg8ks8g(androidx.compose.foundation.layout.Dimension.MinCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible atMost-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atMost-GXOViVg(androidx.compose.foundation.layout.Dimension.MaxCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.MinCoercible);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.MaxCoercible);
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRef();
-    method public androidx.ui.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRef();
+    method public androidx.compose.foundation.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
   }
 
   public final class ConstraintLayoutScope.ConstrainedLayoutReferences {
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component1();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component10();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component11();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component12();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component13();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component14();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component15();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component16();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component2();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component3();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component4();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component5();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component6();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component7();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component8();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component9();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component1();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component10();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component11();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component12();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component13();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component14();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component15();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component16();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component2();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component3();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component4();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component5();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component6();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component7();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component8();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component9();
   }
 
   @androidx.compose.Immutable public interface ConstraintSet {
-    method public void applyTo(androidx.ui.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
+    method public void applyTo(androidx.compose.foundation.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
   }
 
   @Deprecated public final class ConstraintSetBuilderScope {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension max-FmNbr68(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension min-O_hxsMo(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension max-FDSvgxs(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension min-_Goc9uA(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
-    field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
+    field @Deprecated public static final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
-    method @Deprecated public androidx.ui.layout.State getState();
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
+    method @Deprecated public androidx.compose.foundation.layout.State getState();
     method @Deprecated public Object getTag();
   }
 
@@ -335,165 +335,165 @@
     method @Deprecated public void center();
     method @Deprecated public void centerHorizontally();
     method @Deprecated public void centerVertically();
-    method @Deprecated public infix void constrainHorizontallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainVerticallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getHeight();
+    method @Deprecated public infix void constrainHorizontallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainVerticallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getHeight();
     method @Deprecated public float getHorizontalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
     method @Deprecated public Object getTag();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
     method @Deprecated public float getVerticalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWidth();
-    method @Deprecated public void setBaseline(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
-    method @Deprecated public void setBottom(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
-    method @Deprecated public void setHeight(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWidth();
+    method @Deprecated public void setBaseline(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
+    method @Deprecated public void setBottom(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setHeight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
     method @Deprecated public void setHorizontalBias(float value);
-    method @Deprecated public void setRight(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setRight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
     method @Deprecated public void setVerticalBias(float value);
-    method @Deprecated public void setWidth(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension height;
+    method @Deprecated public void setWidth(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension height;
     property public final float horizontalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
     property public final float verticalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension width;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension width;
   }
 
   @Deprecated public static interface ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.HorizontalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.HorizontalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.VerticalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.VerticalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.layout.ConstrainScope constrain(androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object id);
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.compose.foundation.layout.ConstrainScope constrain(androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRefFor(Object id);
   }
 
   @androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
-    field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
+    field public static final androidx.compose.foundation.layout.CrossAxisAlignment.Companion Companion;
   }
 
   public static final class CrossAxisAlignment.Companion {
-    method public androidx.ui.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
-    method public androidx.ui.layout.CrossAxisAlignment getCenter();
-    method public androidx.ui.layout.CrossAxisAlignment getEnd();
-    method public androidx.ui.layout.CrossAxisAlignment getStart();
-    property public final androidx.ui.layout.CrossAxisAlignment Center;
-    property public final androidx.ui.layout.CrossAxisAlignment End;
-    property public final androidx.ui.layout.CrossAxisAlignment Start;
+    method public androidx.compose.foundation.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getCenter();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getEnd();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getStart();
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Center;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment End;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Start;
   }
 
   public interface Dimension {
-    field public static final androidx.ui.layout.Dimension.Companion Companion;
+    field public static final androidx.compose.foundation.layout.Dimension.Companion Companion;
   }
 
-  public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.Coercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   public static final class Dimension.Companion {
-    method public androidx.ui.layout.Dimension getFillToConstraints();
-    method public androidx.ui.layout.Dimension.Coercible getPreferredWrapContent();
-    method public androidx.ui.layout.Dimension getWrapContent();
-    method public androidx.ui.layout.Dimension percent(float percent);
-    method public androidx.ui.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
-    method public androidx.ui.layout.Dimension value-ipo6vVg(float dp);
-    property public final androidx.ui.layout.Dimension fillToConstraints;
-    property public final androidx.ui.layout.Dimension.Coercible preferredWrapContent;
-    property public final androidx.ui.layout.Dimension wrapContent;
+    method public androidx.compose.foundation.layout.Dimension getFillToConstraints();
+    method public androidx.compose.foundation.layout.Dimension.Coercible getPreferredWrapContent();
+    method public androidx.compose.foundation.layout.Dimension getWrapContent();
+    method public androidx.compose.foundation.layout.Dimension percent(float percent);
+    method public androidx.compose.foundation.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
+    method public androidx.compose.foundation.layout.Dimension value-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.Dimension fillToConstraints;
+    property public final androidx.compose.foundation.layout.Dimension.Coercible preferredWrapContent;
+    property public final androidx.compose.foundation.layout.Dimension wrapContent;
   }
 
-  public static interface Dimension.MaxCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MaxCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
-  public static interface Dimension.MinCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MinCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   @androidx.compose.Immutable public final class DpConstraints {
@@ -501,47 +501,47 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
     method public float getMaxHeight();
     method public float getMaxWidth();
     method public float getMinHeight();
     method public float getMinWidth();
-    field public static final androidx.ui.layout.DpConstraints.Companion Companion;
+    field public static final androidx.compose.foundation.layout.DpConstraints.Companion Companion;
   }
 
   public static final class DpConstraints.Companion {
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixed-98Cn76g(float width, float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedHeight-ipo6vVg(float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedWidth-ipo6vVg(float width);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixed-98Cn76g(float width, float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedHeight-ipo6vVg(float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedWidth-ipo6vVg(float width);
   }
 
   public final class DpConstraintsKt {
-    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.ui.layout.DpConstraints dpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints enforce(androidx.ui.layout.DpConstraints, androidx.ui.layout.DpConstraints otherConstraints);
-    method public static boolean getHasBoundedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasBoundedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getSatisfiable(androidx.ui.layout.DpConstraints);
-    method public static boolean isZero(androidx.ui.layout.DpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints offset-bB8corQ(androidx.ui.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
+    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.compose.foundation.layout.DpConstraints dpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints enforce(androidx.compose.foundation.layout.DpConstraints, androidx.compose.foundation.layout.DpConstraints otherConstraints);
+    method public static boolean getHasBoundedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasBoundedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getSatisfiable(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean isZero(androidx.compose.foundation.layout.DpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints offset-H8zAE6E(androidx.compose.foundation.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
   }
 
   @kotlin.RequiresOptIn(message="The API of this layout is experimental and is likely to change in the future.") public @interface ExperimentalLayout {
   }
 
   public enum FlowCrossAxisAlignment {
-    method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Start;
   }
 
   public final class FlowKt {
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowColumn-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowRow-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowColumn-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowRow-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   @androidx.compose.Immutable public final class InnerPadding {
@@ -549,7 +549,7 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
     method public float getBottom();
     method public float getEnd();
     method public float getStart();
@@ -561,15 +561,15 @@
     method @Deprecated @androidx.compose.Composable public static void MaxIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicHeight(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
   }
 
   public enum IntrinsicSize {
-    method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.IntrinsicSize[] values();
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
+    method public static androidx.compose.foundation.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.IntrinsicSize[] values();
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Max;
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Min;
   }
 
   public final class LayoutAspectRatioKt {
@@ -588,7 +588,7 @@
 
   public final class LayoutPaddingKt {
     method @androidx.compose.Stable public static androidx.ui.core.Modifier absolutePadding-AwkAAmk(androidx.ui.core.Modifier, float left = 0.dp, float top = 0.dp, float right = 0.dp, float bottom = 0.dp);
-    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.ui.layout.InnerPadding padding);
+    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.compose.foundation.layout.InnerPadding padding);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-AwkAAmk(androidx.ui.core.Modifier, float start = 0.dp, float top = 0.dp, float end = 0.dp, float bottom = 0.dp);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-H3qe284(androidx.ui.core.Modifier, float all);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-qJOR85M(androidx.ui.core.Modifier, float horizontal = 0.dp, float vertical = 0.dp);
@@ -608,13 +608,13 @@
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredHeightIn-qJOR85M(androidx.ui.core.Modifier, float minHeight = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidth-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier width-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier widthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
@@ -624,36 +624,36 @@
   }
 
   public enum MainAxisAlignment {
-    method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.MainAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceBetween;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceEvenly;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceAround;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceBetween;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceEvenly;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Start;
   }
 
   public final class RowColumnImplKt {
   }
 
   public final class RowKt {
-    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class RowScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class RowScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.RowScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.RowScope INSTANCE;
   }
 
   public enum SizeMode {
-    method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.SizeMode[] values();
-    enum_constant public static final androidx.ui.layout.SizeMode Expand;
-    enum_constant public static final androidx.ui.layout.SizeMode Wrap;
+    method public static androidx.compose.foundation.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.SizeMode[] values();
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Expand;
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Wrap;
   }
 
   public final class SpacerKt {
@@ -661,10 +661,10 @@
   }
 
   public final class StackKt {
-    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.StackScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.StackScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class StackScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class StackScope {
     ctor public StackScope();
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier matchParentSize(androidx.ui.core.Modifier);
diff --git a/ui/ui-layout/api/api_lint.ignore b/ui/ui-layout/api/api_lint.ignore
index 1b4ae05..b06817a 100644
--- a/ui/ui-layout/api/api_lint.ignore
+++ b/ui/ui-layout/api/api_lint.ignore
@@ -1,23 +1,23 @@
 // Baseline format: 1.0
-ArrayReturn: androidx.ui.layout.ConstraintLayoutBaseScope#createAbsoluteLeftBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference[], float) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.ConstrainedLayoutReference[]`
-ArrayReturn: androidx.ui.layout.ConstraintLayoutBaseScope#createAbsoluteRightBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference[], float) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.ConstrainedLayoutReference[]`
-ArrayReturn: androidx.ui.layout.ConstraintLayoutBaseScope#createBottomBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference[], float) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.ConstrainedLayoutReference[]`
-ArrayReturn: androidx.ui.layout.ConstraintLayoutBaseScope#createEndBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference[], float) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.ConstrainedLayoutReference[]`
-ArrayReturn: androidx.ui.layout.ConstraintLayoutBaseScope#createHorizontalChain(androidx.ui.layout.ConstrainedLayoutReference[], androidx.ui.layout.ChainStyle) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.ConstrainedLayoutReference[]`
-ArrayReturn: androidx.ui.layout.ConstraintLayoutBaseScope#createStartBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference[], float) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.ConstrainedLayoutReference[]`
-ArrayReturn: androidx.ui.layout.ConstraintLayoutBaseScope#createTopBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference[], float) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.ConstrainedLayoutReference[]`
-ArrayReturn: androidx.ui.layout.ConstraintLayoutBaseScope#createVerticalChain(androidx.ui.layout.ConstrainedLayoutReference[], androidx.ui.layout.ChainStyle) parameter #0:
-    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.ui.layout.ConstrainedLayoutReference[]`
+ArrayReturn: androidx.compose.foundation.layout.ConstraintLayoutBaseScope#createAbsoluteLeftBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference[], float) parameter #0:
+    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.compose.foundation.layout.ConstrainedLayoutReference[]`
+ArrayReturn: androidx.compose.foundation.layout.ConstraintLayoutBaseScope#createAbsoluteRightBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference[], float) parameter #0:
+    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.compose.foundation.layout.ConstrainedLayoutReference[]`
+ArrayReturn: androidx.compose.foundation.layout.ConstraintLayoutBaseScope#createBottomBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference[], float) parameter #0:
+    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.compose.foundation.layout.ConstrainedLayoutReference[]`
+ArrayReturn: androidx.compose.foundation.layout.ConstraintLayoutBaseScope#createEndBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference[], float) parameter #0:
+    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.compose.foundation.layout.ConstrainedLayoutReference[]`
+ArrayReturn: androidx.compose.foundation.layout.ConstraintLayoutBaseScope#createHorizontalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference[], androidx.compose.foundation.layout.ChainStyle) parameter #0:
+    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.compose.foundation.layout.ConstrainedLayoutReference[]`
+ArrayReturn: androidx.compose.foundation.layout.ConstraintLayoutBaseScope#createStartBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference[], float) parameter #0:
+    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.compose.foundation.layout.ConstrainedLayoutReference[]`
+ArrayReturn: androidx.compose.foundation.layout.ConstraintLayoutBaseScope#createTopBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference[], float) parameter #0:
+    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.compose.foundation.layout.ConstrainedLayoutReference[]`
+ArrayReturn: androidx.compose.foundation.layout.ConstraintLayoutBaseScope#createVerticalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference[], androidx.compose.foundation.layout.ChainStyle) parameter #0:
+    Method parameter should be Collection<ConstrainedLayoutReference> (or subclass) instead of raw array; was `androidx.compose.foundation.layout.ConstrainedLayoutReference[]`
 
 
-MutableBareField: androidx.ui.layout.State#layoutDirection:
+MutableBareField: androidx.compose.foundation.layout.State#layoutDirection:
     Bare field layoutDirection must be marked final, or moved behind accessors if mutable
-MutableBareField: androidx.ui.layout.State#rootIncomingConstraints:
+MutableBareField: androidx.compose.foundation.layout.State#rootIncomingConstraints:
     Bare field rootIncomingConstraints must be marked final, or moved behind accessors if mutable
diff --git a/ui/ui-layout/api/current.txt b/ui/ui-layout/api/current.txt
index 88edca5..51192c3 100644
--- a/ui/ui-layout/api/current.txt
+++ b/ui/ui-layout/api/current.txt
@@ -1,38 +1,38 @@
 // Signature format: 3.0
-package androidx.ui.layout {
+package androidx.compose.foundation.layout {
 
   @androidx.compose.Immutable public final class AbsoluteArrangement {
-    field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Center INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Left implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Left INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Right implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Right INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceAround INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
   }
 
   public final class AlignmentLineKt {
@@ -41,55 +41,55 @@
   }
 
   @androidx.compose.Immutable public final class Arrangement {
-    field public static final androidx.ui.layout.Arrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement INSTANCE;
   }
 
-  public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Bottom implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Bottom INSTANCE;
   }
 
-  public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Center INSTANCE;
   }
 
-  public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.End implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.End INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.End INSTANCE;
   }
 
   public static interface Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
   }
 
-  public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceAround INSTANCE;
   }
 
-  public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceEvenly INSTANCE;
   }
 
-  public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.Start implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Start INSTANCE;
   }
 
-  public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Top implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Top INSTANCE;
   }
 
   public static interface Arrangement.Vertical {
@@ -97,237 +97,237 @@
   }
 
   public final class ChainStyle {
-    field public static final androidx.ui.layout.ChainStyle.Companion Companion;
+    field public static final androidx.compose.foundation.layout.ChainStyle.Companion Companion;
   }
 
   public static final class ChainStyle.Companion {
-    method public androidx.ui.layout.ChainStyle Packed(float bias);
-    method public androidx.ui.layout.ChainStyle getPacked();
-    method public androidx.ui.layout.ChainStyle getSpread();
-    method public androidx.ui.layout.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ChainStyle Packed;
-    property public final androidx.ui.layout.ChainStyle Spread;
-    property public final androidx.ui.layout.ChainStyle SpreadInside;
+    method public androidx.compose.foundation.layout.ChainStyle Packed(float bias);
+    method public androidx.compose.foundation.layout.ChainStyle getPacked();
+    method public androidx.compose.foundation.layout.ChainStyle getSpread();
+    method public androidx.compose.foundation.layout.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ChainStyle SpreadInside;
   }
 
   public final class ColumnKt {
-    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class ColumnScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class ColumnScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.ColumnScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.ColumnScope INSTANCE;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
-    method public void centerHorizontallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerVerticallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
-    method public androidx.ui.layout.ConstrainScope.BaselineAnchorable getBaseline();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getBottom();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getEnd();
-    method public androidx.ui.layout.Dimension getHeight();
-    method public androidx.ui.layout.ConstrainedLayoutReference getParent();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getStart();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getTop();
-    method public androidx.ui.layout.Dimension getWidth();
-    method public void linkTo-MrnifDM(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-h2XOreo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-tsa2a54(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
-    method public void setHeight(androidx.ui.layout.Dimension value);
-    method public void setWidth(androidx.ui.layout.Dimension value);
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteRight;
-    property public final androidx.ui.layout.ConstrainScope.BaselineAnchorable baseline;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable bottom;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable end;
-    property public final androidx.ui.layout.Dimension height;
-    property public final androidx.ui.layout.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable start;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable top;
-    property public final androidx.ui.layout.Dimension width;
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstrainScope {
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
+    method public void centerHorizontallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerVerticallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable getBaseline();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getBottom();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getEnd();
+    method public androidx.compose.foundation.layout.Dimension getHeight();
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference getParent();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getStart();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getTop();
+    method public androidx.compose.foundation.layout.Dimension getWidth();
+    method public void linkTo-G1ipIQs(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-TkcoPiE(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-xxHMemQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
+    method public void setHeight(androidx.compose.foundation.layout.Dimension value);
+    method public void setWidth(androidx.compose.foundation.layout.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable baseline;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable bottom;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable end;
+    property public final androidx.compose.foundation.layout.Dimension height;
+    property public final androidx.compose.foundation.layout.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable start;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable top;
+    property public final androidx.compose.foundation.layout.Dimension width;
   }
 
   public final class ConstrainScope.BaselineAnchorable {
-    method public void linkTo-oRbSkj8(androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
+    method public void linkTo-oVJf39w(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.HorizontalAnchorable {
-    method public void linkTo-TJhmEpo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-9lY5dKQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.VerticalAnchorable {
-    method public void linkTo-sp3QI2o(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-EGV1AEI(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainedLayoutReference {
     ctor public ConstrainedLayoutReference(Object id);
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
     method public Object getId();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
   }
 
   public abstract class ConstraintLayoutBaseScope {
     ctor public ConstraintLayoutBaseScope();
-    method public final void applyTo(androidx.ui.layout.State state);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method public final void createHorizontalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final void createVerticalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> getTasks();
+    method public final void applyTo(androidx.compose.foundation.layout.State state);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method public final void createHorizontalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final void createVerticalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> getTasks();
     method public final void reset();
-    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> tasks;
+    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> tasks;
   }
 
   public static final class ConstraintLayoutBaseScope.BaselineAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
   }
 
   public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
   }
 
   public static final class ConstraintLayoutBaseScope.VerticalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
   }
 
   public final class ConstraintLayoutKt {
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintLayoutScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @Deprecated public static androidx.ui.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.Dimension.MaxCoercible atLeast-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atLeastWrapContent-pX8Pf4s(androidx.ui.layout.Dimension.MinCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MinCoercible atMost-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atMost-bf1TpX8(androidx.ui.layout.Dimension.MaxCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtLeastWrapContent(androidx.ui.layout.Dimension.MinCoercible);
-    method public static androidx.ui.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtMostWrapContent(androidx.ui.layout.Dimension.MaxCoercible);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintLayoutScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.compose.foundation.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @Deprecated public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible atLeast-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atLeastWrapContent-vg8ks8g(androidx.compose.foundation.layout.Dimension.MinCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible atMost-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atMost-GXOViVg(androidx.compose.foundation.layout.Dimension.MaxCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.MinCoercible);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.MaxCoercible);
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRef();
-    method public androidx.ui.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRef();
+    method public androidx.compose.foundation.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
   }
 
   public final class ConstraintLayoutScope.ConstrainedLayoutReferences {
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component1();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component10();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component11();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component12();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component13();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component14();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component15();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component16();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component2();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component3();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component4();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component5();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component6();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component7();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component8();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component9();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component1();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component10();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component11();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component12();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component13();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component14();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component15();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component16();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component2();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component3();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component4();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component5();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component6();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component7();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component8();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component9();
   }
 
   @androidx.compose.Immutable public interface ConstraintSet {
-    method public void applyTo(androidx.ui.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
+    method public void applyTo(androidx.compose.foundation.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
   }
 
   @Deprecated public final class ConstraintSetBuilderScope {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension max-FmNbr68(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension min-O_hxsMo(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension max-FDSvgxs(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension min-_Goc9uA(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
-    field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
+    field @Deprecated public static final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
-    method @Deprecated public androidx.ui.layout.State getState();
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
+    method @Deprecated public androidx.compose.foundation.layout.State getState();
     method @Deprecated public Object getTag();
   }
 
@@ -335,165 +335,165 @@
     method @Deprecated public void center();
     method @Deprecated public void centerHorizontally();
     method @Deprecated public void centerVertically();
-    method @Deprecated public infix void constrainHorizontallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainVerticallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getHeight();
+    method @Deprecated public infix void constrainHorizontallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainVerticallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getHeight();
     method @Deprecated public float getHorizontalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
     method @Deprecated public Object getTag();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
     method @Deprecated public float getVerticalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWidth();
-    method @Deprecated public void setBaseline(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
-    method @Deprecated public void setBottom(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
-    method @Deprecated public void setHeight(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWidth();
+    method @Deprecated public void setBaseline(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
+    method @Deprecated public void setBottom(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setHeight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
     method @Deprecated public void setHorizontalBias(float value);
-    method @Deprecated public void setRight(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setRight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
     method @Deprecated public void setVerticalBias(float value);
-    method @Deprecated public void setWidth(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension height;
+    method @Deprecated public void setWidth(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension height;
     property public final float horizontalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
     property public final float verticalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension width;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension width;
   }
 
   @Deprecated public static interface ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.HorizontalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.HorizontalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.VerticalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.VerticalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.layout.ConstrainScope constrain(androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object id);
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.compose.foundation.layout.ConstrainScope constrain(androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRefFor(Object id);
   }
 
   @androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
-    field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
+    field public static final androidx.compose.foundation.layout.CrossAxisAlignment.Companion Companion;
   }
 
   public static final class CrossAxisAlignment.Companion {
-    method public androidx.ui.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
-    method public androidx.ui.layout.CrossAxisAlignment getCenter();
-    method public androidx.ui.layout.CrossAxisAlignment getEnd();
-    method public androidx.ui.layout.CrossAxisAlignment getStart();
-    property public final androidx.ui.layout.CrossAxisAlignment Center;
-    property public final androidx.ui.layout.CrossAxisAlignment End;
-    property public final androidx.ui.layout.CrossAxisAlignment Start;
+    method public androidx.compose.foundation.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getCenter();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getEnd();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getStart();
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Center;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment End;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Start;
   }
 
   public interface Dimension {
-    field public static final androidx.ui.layout.Dimension.Companion Companion;
+    field public static final androidx.compose.foundation.layout.Dimension.Companion Companion;
   }
 
-  public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.Coercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   public static final class Dimension.Companion {
-    method public androidx.ui.layout.Dimension getFillToConstraints();
-    method public androidx.ui.layout.Dimension.Coercible getPreferredWrapContent();
-    method public androidx.ui.layout.Dimension getWrapContent();
-    method public androidx.ui.layout.Dimension percent(float percent);
-    method public androidx.ui.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
-    method public androidx.ui.layout.Dimension value-ipo6vVg(float dp);
-    property public final androidx.ui.layout.Dimension fillToConstraints;
-    property public final androidx.ui.layout.Dimension.Coercible preferredWrapContent;
-    property public final androidx.ui.layout.Dimension wrapContent;
+    method public androidx.compose.foundation.layout.Dimension getFillToConstraints();
+    method public androidx.compose.foundation.layout.Dimension.Coercible getPreferredWrapContent();
+    method public androidx.compose.foundation.layout.Dimension getWrapContent();
+    method public androidx.compose.foundation.layout.Dimension percent(float percent);
+    method public androidx.compose.foundation.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
+    method public androidx.compose.foundation.layout.Dimension value-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.Dimension fillToConstraints;
+    property public final androidx.compose.foundation.layout.Dimension.Coercible preferredWrapContent;
+    property public final androidx.compose.foundation.layout.Dimension wrapContent;
   }
 
-  public static interface Dimension.MaxCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MaxCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
-  public static interface Dimension.MinCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MinCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   @androidx.compose.Immutable public final class DpConstraints {
@@ -501,47 +501,47 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
     method public float getMaxHeight();
     method public float getMaxWidth();
     method public float getMinHeight();
     method public float getMinWidth();
-    field public static final androidx.ui.layout.DpConstraints.Companion Companion;
+    field public static final androidx.compose.foundation.layout.DpConstraints.Companion Companion;
   }
 
   public static final class DpConstraints.Companion {
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixed-98Cn76g(float width, float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedHeight-ipo6vVg(float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedWidth-ipo6vVg(float width);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixed-98Cn76g(float width, float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedHeight-ipo6vVg(float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedWidth-ipo6vVg(float width);
   }
 
   public final class DpConstraintsKt {
-    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.ui.layout.DpConstraints dpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints enforce(androidx.ui.layout.DpConstraints, androidx.ui.layout.DpConstraints otherConstraints);
-    method public static boolean getHasBoundedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasBoundedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getSatisfiable(androidx.ui.layout.DpConstraints);
-    method public static boolean isZero(androidx.ui.layout.DpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints offset-bB8corQ(androidx.ui.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
+    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.compose.foundation.layout.DpConstraints dpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints enforce(androidx.compose.foundation.layout.DpConstraints, androidx.compose.foundation.layout.DpConstraints otherConstraints);
+    method public static boolean getHasBoundedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasBoundedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getSatisfiable(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean isZero(androidx.compose.foundation.layout.DpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints offset-H8zAE6E(androidx.compose.foundation.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
   }
 
   @kotlin.RequiresOptIn(message="The API of this layout is experimental and is likely to change in the future.") public @interface ExperimentalLayout {
   }
 
   public enum FlowCrossAxisAlignment {
-    method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Start;
   }
 
   public final class FlowKt {
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowColumn-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowRow-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowColumn-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowRow-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   @androidx.compose.Immutable public final class InnerPadding {
@@ -549,7 +549,7 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
     method public float getBottom();
     method public float getEnd();
     method public float getStart();
@@ -561,15 +561,15 @@
     method @Deprecated @androidx.compose.Composable public static void MaxIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicHeight(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
   }
 
   public enum IntrinsicSize {
-    method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.IntrinsicSize[] values();
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
+    method public static androidx.compose.foundation.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.IntrinsicSize[] values();
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Max;
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Min;
   }
 
   public final class LayoutAspectRatioKt {
@@ -588,7 +588,7 @@
 
   public final class LayoutPaddingKt {
     method @androidx.compose.Stable public static androidx.ui.core.Modifier absolutePadding-AwkAAmk(androidx.ui.core.Modifier, float left = 0.dp, float top = 0.dp, float right = 0.dp, float bottom = 0.dp);
-    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.ui.layout.InnerPadding padding);
+    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.compose.foundation.layout.InnerPadding padding);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-AwkAAmk(androidx.ui.core.Modifier, float start = 0.dp, float top = 0.dp, float end = 0.dp, float bottom = 0.dp);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-H3qe284(androidx.ui.core.Modifier, float all);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-qJOR85M(androidx.ui.core.Modifier, float horizontal = 0.dp, float vertical = 0.dp);
@@ -608,13 +608,13 @@
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredHeightIn-qJOR85M(androidx.ui.core.Modifier, float minHeight = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidth-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier width-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier widthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
@@ -624,36 +624,36 @@
   }
 
   public enum MainAxisAlignment {
-    method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.MainAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceBetween;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceEvenly;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceAround;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceBetween;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceEvenly;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Start;
   }
 
   public final class RowColumnImplKt {
   }
 
   public final class RowKt {
-    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class RowScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class RowScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.RowScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.RowScope INSTANCE;
   }
 
   public enum SizeMode {
-    method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.SizeMode[] values();
-    enum_constant public static final androidx.ui.layout.SizeMode Expand;
-    enum_constant public static final androidx.ui.layout.SizeMode Wrap;
+    method public static androidx.compose.foundation.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.SizeMode[] values();
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Expand;
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Wrap;
   }
 
   public final class SpacerKt {
@@ -661,10 +661,10 @@
   }
 
   public final class StackKt {
-    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.StackScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.StackScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class StackScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class StackScope {
     ctor public StackScope();
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier matchParentSize(androidx.ui.core.Modifier);
diff --git a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev16.txt
index 88edca5..51192c3 100644
--- a/ui/ui-layout/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-layout/api/public_plus_experimental_0.1.0-dev16.txt
@@ -1,38 +1,38 @@
 // Signature format: 3.0
-package androidx.ui.layout {
+package androidx.compose.foundation.layout {
 
   @androidx.compose.Immutable public final class AbsoluteArrangement {
-    field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Center INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Left implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Left INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Right implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Right INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceAround INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
   }
 
   public final class AlignmentLineKt {
@@ -41,55 +41,55 @@
   }
 
   @androidx.compose.Immutable public final class Arrangement {
-    field public static final androidx.ui.layout.Arrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement INSTANCE;
   }
 
-  public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Bottom implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Bottom INSTANCE;
   }
 
-  public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Center INSTANCE;
   }
 
-  public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.End implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.End INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.End INSTANCE;
   }
 
   public static interface Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
   }
 
-  public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceAround INSTANCE;
   }
 
-  public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceEvenly INSTANCE;
   }
 
-  public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.Start implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Start INSTANCE;
   }
 
-  public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Top implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Top INSTANCE;
   }
 
   public static interface Arrangement.Vertical {
@@ -97,237 +97,237 @@
   }
 
   public final class ChainStyle {
-    field public static final androidx.ui.layout.ChainStyle.Companion Companion;
+    field public static final androidx.compose.foundation.layout.ChainStyle.Companion Companion;
   }
 
   public static final class ChainStyle.Companion {
-    method public androidx.ui.layout.ChainStyle Packed(float bias);
-    method public androidx.ui.layout.ChainStyle getPacked();
-    method public androidx.ui.layout.ChainStyle getSpread();
-    method public androidx.ui.layout.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ChainStyle Packed;
-    property public final androidx.ui.layout.ChainStyle Spread;
-    property public final androidx.ui.layout.ChainStyle SpreadInside;
+    method public androidx.compose.foundation.layout.ChainStyle Packed(float bias);
+    method public androidx.compose.foundation.layout.ChainStyle getPacked();
+    method public androidx.compose.foundation.layout.ChainStyle getSpread();
+    method public androidx.compose.foundation.layout.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ChainStyle SpreadInside;
   }
 
   public final class ColumnKt {
-    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class ColumnScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class ColumnScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.ColumnScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.ColumnScope INSTANCE;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
-    method public void centerHorizontallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerVerticallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
-    method public androidx.ui.layout.ConstrainScope.BaselineAnchorable getBaseline();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getBottom();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getEnd();
-    method public androidx.ui.layout.Dimension getHeight();
-    method public androidx.ui.layout.ConstrainedLayoutReference getParent();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getStart();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getTop();
-    method public androidx.ui.layout.Dimension getWidth();
-    method public void linkTo-MrnifDM(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-h2XOreo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-tsa2a54(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
-    method public void setHeight(androidx.ui.layout.Dimension value);
-    method public void setWidth(androidx.ui.layout.Dimension value);
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteRight;
-    property public final androidx.ui.layout.ConstrainScope.BaselineAnchorable baseline;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable bottom;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable end;
-    property public final androidx.ui.layout.Dimension height;
-    property public final androidx.ui.layout.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable start;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable top;
-    property public final androidx.ui.layout.Dimension width;
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstrainScope {
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
+    method public void centerHorizontallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerVerticallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable getBaseline();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getBottom();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getEnd();
+    method public androidx.compose.foundation.layout.Dimension getHeight();
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference getParent();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getStart();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getTop();
+    method public androidx.compose.foundation.layout.Dimension getWidth();
+    method public void linkTo-G1ipIQs(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-TkcoPiE(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-xxHMemQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
+    method public void setHeight(androidx.compose.foundation.layout.Dimension value);
+    method public void setWidth(androidx.compose.foundation.layout.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable baseline;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable bottom;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable end;
+    property public final androidx.compose.foundation.layout.Dimension height;
+    property public final androidx.compose.foundation.layout.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable start;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable top;
+    property public final androidx.compose.foundation.layout.Dimension width;
   }
 
   public final class ConstrainScope.BaselineAnchorable {
-    method public void linkTo-oRbSkj8(androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
+    method public void linkTo-oVJf39w(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.HorizontalAnchorable {
-    method public void linkTo-TJhmEpo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-9lY5dKQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.VerticalAnchorable {
-    method public void linkTo-sp3QI2o(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-EGV1AEI(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainedLayoutReference {
     ctor public ConstrainedLayoutReference(Object id);
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
     method public Object getId();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
   }
 
   public abstract class ConstraintLayoutBaseScope {
     ctor public ConstraintLayoutBaseScope();
-    method public final void applyTo(androidx.ui.layout.State state);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method public final void createHorizontalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final void createVerticalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> getTasks();
+    method public final void applyTo(androidx.compose.foundation.layout.State state);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method public final void createHorizontalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final void createVerticalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> getTasks();
     method public final void reset();
-    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> tasks;
+    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> tasks;
   }
 
   public static final class ConstraintLayoutBaseScope.BaselineAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
   }
 
   public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
   }
 
   public static final class ConstraintLayoutBaseScope.VerticalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
   }
 
   public final class ConstraintLayoutKt {
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintLayoutScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @Deprecated public static androidx.ui.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.Dimension.MaxCoercible atLeast-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atLeastWrapContent-pX8Pf4s(androidx.ui.layout.Dimension.MinCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MinCoercible atMost-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atMost-bf1TpX8(androidx.ui.layout.Dimension.MaxCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtLeastWrapContent(androidx.ui.layout.Dimension.MinCoercible);
-    method public static androidx.ui.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtMostWrapContent(androidx.ui.layout.Dimension.MaxCoercible);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintLayoutScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.compose.foundation.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @Deprecated public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible atLeast-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atLeastWrapContent-vg8ks8g(androidx.compose.foundation.layout.Dimension.MinCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible atMost-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atMost-GXOViVg(androidx.compose.foundation.layout.Dimension.MaxCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.MinCoercible);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.MaxCoercible);
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRef();
-    method public androidx.ui.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRef();
+    method public androidx.compose.foundation.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
   }
 
   public final class ConstraintLayoutScope.ConstrainedLayoutReferences {
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component1();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component10();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component11();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component12();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component13();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component14();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component15();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component16();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component2();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component3();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component4();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component5();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component6();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component7();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component8();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component9();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component1();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component10();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component11();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component12();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component13();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component14();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component15();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component16();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component2();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component3();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component4();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component5();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component6();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component7();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component8();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component9();
   }
 
   @androidx.compose.Immutable public interface ConstraintSet {
-    method public void applyTo(androidx.ui.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
+    method public void applyTo(androidx.compose.foundation.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
   }
 
   @Deprecated public final class ConstraintSetBuilderScope {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension max-FmNbr68(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension min-O_hxsMo(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension max-FDSvgxs(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension min-_Goc9uA(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
-    field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
+    field @Deprecated public static final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
-    method @Deprecated public androidx.ui.layout.State getState();
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
+    method @Deprecated public androidx.compose.foundation.layout.State getState();
     method @Deprecated public Object getTag();
   }
 
@@ -335,165 +335,165 @@
     method @Deprecated public void center();
     method @Deprecated public void centerHorizontally();
     method @Deprecated public void centerVertically();
-    method @Deprecated public infix void constrainHorizontallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainVerticallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getHeight();
+    method @Deprecated public infix void constrainHorizontallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainVerticallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getHeight();
     method @Deprecated public float getHorizontalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
     method @Deprecated public Object getTag();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
     method @Deprecated public float getVerticalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWidth();
-    method @Deprecated public void setBaseline(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
-    method @Deprecated public void setBottom(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
-    method @Deprecated public void setHeight(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWidth();
+    method @Deprecated public void setBaseline(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
+    method @Deprecated public void setBottom(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setHeight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
     method @Deprecated public void setHorizontalBias(float value);
-    method @Deprecated public void setRight(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setRight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
     method @Deprecated public void setVerticalBias(float value);
-    method @Deprecated public void setWidth(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension height;
+    method @Deprecated public void setWidth(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension height;
     property public final float horizontalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
     property public final float verticalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension width;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension width;
   }
 
   @Deprecated public static interface ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.HorizontalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.HorizontalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.VerticalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.VerticalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.layout.ConstrainScope constrain(androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object id);
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.compose.foundation.layout.ConstrainScope constrain(androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRefFor(Object id);
   }
 
   @androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
-    field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
+    field public static final androidx.compose.foundation.layout.CrossAxisAlignment.Companion Companion;
   }
 
   public static final class CrossAxisAlignment.Companion {
-    method public androidx.ui.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
-    method public androidx.ui.layout.CrossAxisAlignment getCenter();
-    method public androidx.ui.layout.CrossAxisAlignment getEnd();
-    method public androidx.ui.layout.CrossAxisAlignment getStart();
-    property public final androidx.ui.layout.CrossAxisAlignment Center;
-    property public final androidx.ui.layout.CrossAxisAlignment End;
-    property public final androidx.ui.layout.CrossAxisAlignment Start;
+    method public androidx.compose.foundation.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getCenter();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getEnd();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getStart();
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Center;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment End;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Start;
   }
 
   public interface Dimension {
-    field public static final androidx.ui.layout.Dimension.Companion Companion;
+    field public static final androidx.compose.foundation.layout.Dimension.Companion Companion;
   }
 
-  public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.Coercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   public static final class Dimension.Companion {
-    method public androidx.ui.layout.Dimension getFillToConstraints();
-    method public androidx.ui.layout.Dimension.Coercible getPreferredWrapContent();
-    method public androidx.ui.layout.Dimension getWrapContent();
-    method public androidx.ui.layout.Dimension percent(float percent);
-    method public androidx.ui.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
-    method public androidx.ui.layout.Dimension value-ipo6vVg(float dp);
-    property public final androidx.ui.layout.Dimension fillToConstraints;
-    property public final androidx.ui.layout.Dimension.Coercible preferredWrapContent;
-    property public final androidx.ui.layout.Dimension wrapContent;
+    method public androidx.compose.foundation.layout.Dimension getFillToConstraints();
+    method public androidx.compose.foundation.layout.Dimension.Coercible getPreferredWrapContent();
+    method public androidx.compose.foundation.layout.Dimension getWrapContent();
+    method public androidx.compose.foundation.layout.Dimension percent(float percent);
+    method public androidx.compose.foundation.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
+    method public androidx.compose.foundation.layout.Dimension value-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.Dimension fillToConstraints;
+    property public final androidx.compose.foundation.layout.Dimension.Coercible preferredWrapContent;
+    property public final androidx.compose.foundation.layout.Dimension wrapContent;
   }
 
-  public static interface Dimension.MaxCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MaxCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
-  public static interface Dimension.MinCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MinCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   @androidx.compose.Immutable public final class DpConstraints {
@@ -501,47 +501,47 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
     method public float getMaxHeight();
     method public float getMaxWidth();
     method public float getMinHeight();
     method public float getMinWidth();
-    field public static final androidx.ui.layout.DpConstraints.Companion Companion;
+    field public static final androidx.compose.foundation.layout.DpConstraints.Companion Companion;
   }
 
   public static final class DpConstraints.Companion {
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixed-98Cn76g(float width, float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedHeight-ipo6vVg(float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedWidth-ipo6vVg(float width);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixed-98Cn76g(float width, float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedHeight-ipo6vVg(float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedWidth-ipo6vVg(float width);
   }
 
   public final class DpConstraintsKt {
-    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.ui.layout.DpConstraints dpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints enforce(androidx.ui.layout.DpConstraints, androidx.ui.layout.DpConstraints otherConstraints);
-    method public static boolean getHasBoundedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasBoundedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getSatisfiable(androidx.ui.layout.DpConstraints);
-    method public static boolean isZero(androidx.ui.layout.DpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints offset-bB8corQ(androidx.ui.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
+    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.compose.foundation.layout.DpConstraints dpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints enforce(androidx.compose.foundation.layout.DpConstraints, androidx.compose.foundation.layout.DpConstraints otherConstraints);
+    method public static boolean getHasBoundedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasBoundedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getSatisfiable(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean isZero(androidx.compose.foundation.layout.DpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints offset-H8zAE6E(androidx.compose.foundation.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
   }
 
   @kotlin.RequiresOptIn(message="The API of this layout is experimental and is likely to change in the future.") public @interface ExperimentalLayout {
   }
 
   public enum FlowCrossAxisAlignment {
-    method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Start;
   }
 
   public final class FlowKt {
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowColumn-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowRow-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowColumn-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowRow-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   @androidx.compose.Immutable public final class InnerPadding {
@@ -549,7 +549,7 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
     method public float getBottom();
     method public float getEnd();
     method public float getStart();
@@ -561,15 +561,15 @@
     method @Deprecated @androidx.compose.Composable public static void MaxIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicHeight(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
   }
 
   public enum IntrinsicSize {
-    method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.IntrinsicSize[] values();
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
+    method public static androidx.compose.foundation.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.IntrinsicSize[] values();
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Max;
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Min;
   }
 
   public final class LayoutAspectRatioKt {
@@ -588,7 +588,7 @@
 
   public final class LayoutPaddingKt {
     method @androidx.compose.Stable public static androidx.ui.core.Modifier absolutePadding-AwkAAmk(androidx.ui.core.Modifier, float left = 0.dp, float top = 0.dp, float right = 0.dp, float bottom = 0.dp);
-    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.ui.layout.InnerPadding padding);
+    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.compose.foundation.layout.InnerPadding padding);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-AwkAAmk(androidx.ui.core.Modifier, float start = 0.dp, float top = 0.dp, float end = 0.dp, float bottom = 0.dp);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-H3qe284(androidx.ui.core.Modifier, float all);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-qJOR85M(androidx.ui.core.Modifier, float horizontal = 0.dp, float vertical = 0.dp);
@@ -608,13 +608,13 @@
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredHeightIn-qJOR85M(androidx.ui.core.Modifier, float minHeight = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidth-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier width-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier widthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
@@ -624,36 +624,36 @@
   }
 
   public enum MainAxisAlignment {
-    method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.MainAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceBetween;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceEvenly;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceAround;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceBetween;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceEvenly;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Start;
   }
 
   public final class RowColumnImplKt {
   }
 
   public final class RowKt {
-    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class RowScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class RowScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.RowScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.RowScope INSTANCE;
   }
 
   public enum SizeMode {
-    method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.SizeMode[] values();
-    enum_constant public static final androidx.ui.layout.SizeMode Expand;
-    enum_constant public static final androidx.ui.layout.SizeMode Wrap;
+    method public static androidx.compose.foundation.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.SizeMode[] values();
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Expand;
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Wrap;
   }
 
   public final class SpacerKt {
@@ -661,10 +661,10 @@
   }
 
   public final class StackKt {
-    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.StackScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.StackScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class StackScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class StackScope {
     ctor public StackScope();
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier matchParentSize(androidx.ui.core.Modifier);
diff --git a/ui/ui-layout/api/public_plus_experimental_current.txt b/ui/ui-layout/api/public_plus_experimental_current.txt
index 88edca5..51192c3 100644
--- a/ui/ui-layout/api/public_plus_experimental_current.txt
+++ b/ui/ui-layout/api/public_plus_experimental_current.txt
@@ -1,38 +1,38 @@
 // Signature format: 3.0
-package androidx.ui.layout {
+package androidx.compose.foundation.layout {
 
   @androidx.compose.Immutable public final class AbsoluteArrangement {
-    field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Center INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Left implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Left INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Right implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Right INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceAround INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
   }
 
   public final class AlignmentLineKt {
@@ -41,55 +41,55 @@
   }
 
   @androidx.compose.Immutable public final class Arrangement {
-    field public static final androidx.ui.layout.Arrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement INSTANCE;
   }
 
-  public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Bottom implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Bottom INSTANCE;
   }
 
-  public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Center INSTANCE;
   }
 
-  public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.End implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.End INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.End INSTANCE;
   }
 
   public static interface Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
   }
 
-  public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceAround INSTANCE;
   }
 
-  public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceEvenly INSTANCE;
   }
 
-  public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.Start implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Start INSTANCE;
   }
 
-  public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Top implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Top INSTANCE;
   }
 
   public static interface Arrangement.Vertical {
@@ -97,237 +97,237 @@
   }
 
   public final class ChainStyle {
-    field public static final androidx.ui.layout.ChainStyle.Companion Companion;
+    field public static final androidx.compose.foundation.layout.ChainStyle.Companion Companion;
   }
 
   public static final class ChainStyle.Companion {
-    method public androidx.ui.layout.ChainStyle Packed(float bias);
-    method public androidx.ui.layout.ChainStyle getPacked();
-    method public androidx.ui.layout.ChainStyle getSpread();
-    method public androidx.ui.layout.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ChainStyle Packed;
-    property public final androidx.ui.layout.ChainStyle Spread;
-    property public final androidx.ui.layout.ChainStyle SpreadInside;
+    method public androidx.compose.foundation.layout.ChainStyle Packed(float bias);
+    method public androidx.compose.foundation.layout.ChainStyle getPacked();
+    method public androidx.compose.foundation.layout.ChainStyle getSpread();
+    method public androidx.compose.foundation.layout.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ChainStyle SpreadInside;
   }
 
   public final class ColumnKt {
-    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class ColumnScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class ColumnScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.ColumnScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.ColumnScope INSTANCE;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
-    method public void centerHorizontallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerVerticallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
-    method public androidx.ui.layout.ConstrainScope.BaselineAnchorable getBaseline();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getBottom();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getEnd();
-    method public androidx.ui.layout.Dimension getHeight();
-    method public androidx.ui.layout.ConstrainedLayoutReference getParent();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getStart();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getTop();
-    method public androidx.ui.layout.Dimension getWidth();
-    method public void linkTo-MrnifDM(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-h2XOreo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-tsa2a54(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
-    method public void setHeight(androidx.ui.layout.Dimension value);
-    method public void setWidth(androidx.ui.layout.Dimension value);
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteRight;
-    property public final androidx.ui.layout.ConstrainScope.BaselineAnchorable baseline;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable bottom;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable end;
-    property public final androidx.ui.layout.Dimension height;
-    property public final androidx.ui.layout.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable start;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable top;
-    property public final androidx.ui.layout.Dimension width;
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstrainScope {
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
+    method public void centerHorizontallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerVerticallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable getBaseline();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getBottom();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getEnd();
+    method public androidx.compose.foundation.layout.Dimension getHeight();
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference getParent();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getStart();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getTop();
+    method public androidx.compose.foundation.layout.Dimension getWidth();
+    method public void linkTo-G1ipIQs(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-TkcoPiE(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-xxHMemQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
+    method public void setHeight(androidx.compose.foundation.layout.Dimension value);
+    method public void setWidth(androidx.compose.foundation.layout.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable baseline;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable bottom;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable end;
+    property public final androidx.compose.foundation.layout.Dimension height;
+    property public final androidx.compose.foundation.layout.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable start;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable top;
+    property public final androidx.compose.foundation.layout.Dimension width;
   }
 
   public final class ConstrainScope.BaselineAnchorable {
-    method public void linkTo-oRbSkj8(androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
+    method public void linkTo-oVJf39w(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.HorizontalAnchorable {
-    method public void linkTo-TJhmEpo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-9lY5dKQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.VerticalAnchorable {
-    method public void linkTo-sp3QI2o(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-EGV1AEI(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainedLayoutReference {
     ctor public ConstrainedLayoutReference(Object id);
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
     method public Object getId();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
   }
 
   public abstract class ConstraintLayoutBaseScope {
     ctor public ConstraintLayoutBaseScope();
-    method public final void applyTo(androidx.ui.layout.State state);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method public final void createHorizontalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final void createVerticalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> getTasks();
+    method public final void applyTo(androidx.compose.foundation.layout.State state);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method public final void createHorizontalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final void createVerticalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> getTasks();
     method public final void reset();
-    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> tasks;
+    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> tasks;
   }
 
   public static final class ConstraintLayoutBaseScope.BaselineAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
   }
 
   public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
   }
 
   public static final class ConstraintLayoutBaseScope.VerticalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
   }
 
   public final class ConstraintLayoutKt {
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintLayoutScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @Deprecated public static androidx.ui.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.Dimension.MaxCoercible atLeast-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atLeastWrapContent-pX8Pf4s(androidx.ui.layout.Dimension.MinCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MinCoercible atMost-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atMost-bf1TpX8(androidx.ui.layout.Dimension.MaxCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtLeastWrapContent(androidx.ui.layout.Dimension.MinCoercible);
-    method public static androidx.ui.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtMostWrapContent(androidx.ui.layout.Dimension.MaxCoercible);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintLayoutScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.compose.foundation.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @Deprecated public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible atLeast-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atLeastWrapContent-vg8ks8g(androidx.compose.foundation.layout.Dimension.MinCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible atMost-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atMost-GXOViVg(androidx.compose.foundation.layout.Dimension.MaxCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.MinCoercible);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.MaxCoercible);
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRef();
-    method public androidx.ui.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRef();
+    method public androidx.compose.foundation.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
   }
 
   public final class ConstraintLayoutScope.ConstrainedLayoutReferences {
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component1();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component10();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component11();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component12();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component13();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component14();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component15();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component16();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component2();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component3();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component4();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component5();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component6();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component7();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component8();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component9();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component1();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component10();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component11();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component12();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component13();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component14();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component15();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component16();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component2();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component3();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component4();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component5();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component6();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component7();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component8();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component9();
   }
 
   @androidx.compose.Immutable public interface ConstraintSet {
-    method public void applyTo(androidx.ui.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
+    method public void applyTo(androidx.compose.foundation.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
   }
 
   @Deprecated public final class ConstraintSetBuilderScope {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension max-FmNbr68(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension min-O_hxsMo(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension max-FDSvgxs(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension min-_Goc9uA(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
-    field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
+    field @Deprecated public static final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
-    method @Deprecated public androidx.ui.layout.State getState();
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
+    method @Deprecated public androidx.compose.foundation.layout.State getState();
     method @Deprecated public Object getTag();
   }
 
@@ -335,165 +335,165 @@
     method @Deprecated public void center();
     method @Deprecated public void centerHorizontally();
     method @Deprecated public void centerVertically();
-    method @Deprecated public infix void constrainHorizontallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainVerticallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getHeight();
+    method @Deprecated public infix void constrainHorizontallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainVerticallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getHeight();
     method @Deprecated public float getHorizontalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
     method @Deprecated public Object getTag();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
     method @Deprecated public float getVerticalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWidth();
-    method @Deprecated public void setBaseline(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
-    method @Deprecated public void setBottom(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
-    method @Deprecated public void setHeight(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWidth();
+    method @Deprecated public void setBaseline(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
+    method @Deprecated public void setBottom(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setHeight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
     method @Deprecated public void setHorizontalBias(float value);
-    method @Deprecated public void setRight(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setRight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
     method @Deprecated public void setVerticalBias(float value);
-    method @Deprecated public void setWidth(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension height;
+    method @Deprecated public void setWidth(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension height;
     property public final float horizontalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
     property public final float verticalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension width;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension width;
   }
 
   @Deprecated public static interface ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.HorizontalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.HorizontalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.VerticalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.VerticalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.layout.ConstrainScope constrain(androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object id);
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.compose.foundation.layout.ConstrainScope constrain(androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRefFor(Object id);
   }
 
   @androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
-    field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
+    field public static final androidx.compose.foundation.layout.CrossAxisAlignment.Companion Companion;
   }
 
   public static final class CrossAxisAlignment.Companion {
-    method public androidx.ui.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
-    method public androidx.ui.layout.CrossAxisAlignment getCenter();
-    method public androidx.ui.layout.CrossAxisAlignment getEnd();
-    method public androidx.ui.layout.CrossAxisAlignment getStart();
-    property public final androidx.ui.layout.CrossAxisAlignment Center;
-    property public final androidx.ui.layout.CrossAxisAlignment End;
-    property public final androidx.ui.layout.CrossAxisAlignment Start;
+    method public androidx.compose.foundation.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getCenter();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getEnd();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getStart();
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Center;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment End;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Start;
   }
 
   public interface Dimension {
-    field public static final androidx.ui.layout.Dimension.Companion Companion;
+    field public static final androidx.compose.foundation.layout.Dimension.Companion Companion;
   }
 
-  public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.Coercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   public static final class Dimension.Companion {
-    method public androidx.ui.layout.Dimension getFillToConstraints();
-    method public androidx.ui.layout.Dimension.Coercible getPreferredWrapContent();
-    method public androidx.ui.layout.Dimension getWrapContent();
-    method public androidx.ui.layout.Dimension percent(float percent);
-    method public androidx.ui.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
-    method public androidx.ui.layout.Dimension value-ipo6vVg(float dp);
-    property public final androidx.ui.layout.Dimension fillToConstraints;
-    property public final androidx.ui.layout.Dimension.Coercible preferredWrapContent;
-    property public final androidx.ui.layout.Dimension wrapContent;
+    method public androidx.compose.foundation.layout.Dimension getFillToConstraints();
+    method public androidx.compose.foundation.layout.Dimension.Coercible getPreferredWrapContent();
+    method public androidx.compose.foundation.layout.Dimension getWrapContent();
+    method public androidx.compose.foundation.layout.Dimension percent(float percent);
+    method public androidx.compose.foundation.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
+    method public androidx.compose.foundation.layout.Dimension value-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.Dimension fillToConstraints;
+    property public final androidx.compose.foundation.layout.Dimension.Coercible preferredWrapContent;
+    property public final androidx.compose.foundation.layout.Dimension wrapContent;
   }
 
-  public static interface Dimension.MaxCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MaxCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
-  public static interface Dimension.MinCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MinCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   @androidx.compose.Immutable public final class DpConstraints {
@@ -501,47 +501,47 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
     method public float getMaxHeight();
     method public float getMaxWidth();
     method public float getMinHeight();
     method public float getMinWidth();
-    field public static final androidx.ui.layout.DpConstraints.Companion Companion;
+    field public static final androidx.compose.foundation.layout.DpConstraints.Companion Companion;
   }
 
   public static final class DpConstraints.Companion {
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixed-98Cn76g(float width, float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedHeight-ipo6vVg(float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedWidth-ipo6vVg(float width);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixed-98Cn76g(float width, float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedHeight-ipo6vVg(float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedWidth-ipo6vVg(float width);
   }
 
   public final class DpConstraintsKt {
-    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.ui.layout.DpConstraints dpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints enforce(androidx.ui.layout.DpConstraints, androidx.ui.layout.DpConstraints otherConstraints);
-    method public static boolean getHasBoundedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasBoundedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getSatisfiable(androidx.ui.layout.DpConstraints);
-    method public static boolean isZero(androidx.ui.layout.DpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints offset-bB8corQ(androidx.ui.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
+    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.compose.foundation.layout.DpConstraints dpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints enforce(androidx.compose.foundation.layout.DpConstraints, androidx.compose.foundation.layout.DpConstraints otherConstraints);
+    method public static boolean getHasBoundedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasBoundedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getSatisfiable(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean isZero(androidx.compose.foundation.layout.DpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints offset-H8zAE6E(androidx.compose.foundation.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
   }
 
   @kotlin.RequiresOptIn(message="The API of this layout is experimental and is likely to change in the future.") public @interface ExperimentalLayout {
   }
 
   public enum FlowCrossAxisAlignment {
-    method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Start;
   }
 
   public final class FlowKt {
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowColumn-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowRow-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowColumn-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowRow-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   @androidx.compose.Immutable public final class InnerPadding {
@@ -549,7 +549,7 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
     method public float getBottom();
     method public float getEnd();
     method public float getStart();
@@ -561,15 +561,15 @@
     method @Deprecated @androidx.compose.Composable public static void MaxIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicHeight(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
   }
 
   public enum IntrinsicSize {
-    method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.IntrinsicSize[] values();
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
+    method public static androidx.compose.foundation.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.IntrinsicSize[] values();
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Max;
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Min;
   }
 
   public final class LayoutAspectRatioKt {
@@ -588,7 +588,7 @@
 
   public final class LayoutPaddingKt {
     method @androidx.compose.Stable public static androidx.ui.core.Modifier absolutePadding-AwkAAmk(androidx.ui.core.Modifier, float left = 0.dp, float top = 0.dp, float right = 0.dp, float bottom = 0.dp);
-    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.ui.layout.InnerPadding padding);
+    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.compose.foundation.layout.InnerPadding padding);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-AwkAAmk(androidx.ui.core.Modifier, float start = 0.dp, float top = 0.dp, float end = 0.dp, float bottom = 0.dp);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-H3qe284(androidx.ui.core.Modifier, float all);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-qJOR85M(androidx.ui.core.Modifier, float horizontal = 0.dp, float vertical = 0.dp);
@@ -608,13 +608,13 @@
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredHeightIn-qJOR85M(androidx.ui.core.Modifier, float minHeight = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidth-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier width-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier widthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
@@ -624,36 +624,36 @@
   }
 
   public enum MainAxisAlignment {
-    method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.MainAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceBetween;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceEvenly;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceAround;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceBetween;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceEvenly;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Start;
   }
 
   public final class RowColumnImplKt {
   }
 
   public final class RowKt {
-    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class RowScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class RowScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.RowScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.RowScope INSTANCE;
   }
 
   public enum SizeMode {
-    method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.SizeMode[] values();
-    enum_constant public static final androidx.ui.layout.SizeMode Expand;
-    enum_constant public static final androidx.ui.layout.SizeMode Wrap;
+    method public static androidx.compose.foundation.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.SizeMode[] values();
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Expand;
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Wrap;
   }
 
   public final class SpacerKt {
@@ -661,10 +661,10 @@
   }
 
   public final class StackKt {
-    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.StackScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.StackScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class StackScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class StackScope {
     ctor public StackScope();
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier matchParentSize(androidx.ui.core.Modifier);
diff --git a/ui/ui-layout/api/restricted_0.1.0-dev16.txt b/ui/ui-layout/api/restricted_0.1.0-dev16.txt
index 88edca5..51192c3 100644
--- a/ui/ui-layout/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-layout/api/restricted_0.1.0-dev16.txt
@@ -1,38 +1,38 @@
 // Signature format: 3.0
-package androidx.ui.layout {
+package androidx.compose.foundation.layout {
 
   @androidx.compose.Immutable public final class AbsoluteArrangement {
-    field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Center INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Left implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Left INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Right implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Right INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceAround INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
   }
 
   public final class AlignmentLineKt {
@@ -41,55 +41,55 @@
   }
 
   @androidx.compose.Immutable public final class Arrangement {
-    field public static final androidx.ui.layout.Arrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement INSTANCE;
   }
 
-  public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Bottom implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Bottom INSTANCE;
   }
 
-  public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Center INSTANCE;
   }
 
-  public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.End implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.End INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.End INSTANCE;
   }
 
   public static interface Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
   }
 
-  public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceAround INSTANCE;
   }
 
-  public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceEvenly INSTANCE;
   }
 
-  public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.Start implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Start INSTANCE;
   }
 
-  public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Top implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Top INSTANCE;
   }
 
   public static interface Arrangement.Vertical {
@@ -97,237 +97,237 @@
   }
 
   public final class ChainStyle {
-    field public static final androidx.ui.layout.ChainStyle.Companion Companion;
+    field public static final androidx.compose.foundation.layout.ChainStyle.Companion Companion;
   }
 
   public static final class ChainStyle.Companion {
-    method public androidx.ui.layout.ChainStyle Packed(float bias);
-    method public androidx.ui.layout.ChainStyle getPacked();
-    method public androidx.ui.layout.ChainStyle getSpread();
-    method public androidx.ui.layout.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ChainStyle Packed;
-    property public final androidx.ui.layout.ChainStyle Spread;
-    property public final androidx.ui.layout.ChainStyle SpreadInside;
+    method public androidx.compose.foundation.layout.ChainStyle Packed(float bias);
+    method public androidx.compose.foundation.layout.ChainStyle getPacked();
+    method public androidx.compose.foundation.layout.ChainStyle getSpread();
+    method public androidx.compose.foundation.layout.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ChainStyle SpreadInside;
   }
 
   public final class ColumnKt {
-    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class ColumnScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class ColumnScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.ColumnScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.ColumnScope INSTANCE;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
-    method public void centerHorizontallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerVerticallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
-    method public androidx.ui.layout.ConstrainScope.BaselineAnchorable getBaseline();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getBottom();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getEnd();
-    method public androidx.ui.layout.Dimension getHeight();
-    method public androidx.ui.layout.ConstrainedLayoutReference getParent();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getStart();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getTop();
-    method public androidx.ui.layout.Dimension getWidth();
-    method public void linkTo-MrnifDM(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-h2XOreo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-tsa2a54(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
-    method public void setHeight(androidx.ui.layout.Dimension value);
-    method public void setWidth(androidx.ui.layout.Dimension value);
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteRight;
-    property public final androidx.ui.layout.ConstrainScope.BaselineAnchorable baseline;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable bottom;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable end;
-    property public final androidx.ui.layout.Dimension height;
-    property public final androidx.ui.layout.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable start;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable top;
-    property public final androidx.ui.layout.Dimension width;
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstrainScope {
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
+    method public void centerHorizontallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerVerticallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable getBaseline();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getBottom();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getEnd();
+    method public androidx.compose.foundation.layout.Dimension getHeight();
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference getParent();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getStart();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getTop();
+    method public androidx.compose.foundation.layout.Dimension getWidth();
+    method public void linkTo-G1ipIQs(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-TkcoPiE(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-xxHMemQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
+    method public void setHeight(androidx.compose.foundation.layout.Dimension value);
+    method public void setWidth(androidx.compose.foundation.layout.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable baseline;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable bottom;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable end;
+    property public final androidx.compose.foundation.layout.Dimension height;
+    property public final androidx.compose.foundation.layout.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable start;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable top;
+    property public final androidx.compose.foundation.layout.Dimension width;
   }
 
   public final class ConstrainScope.BaselineAnchorable {
-    method public void linkTo-oRbSkj8(androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
+    method public void linkTo-oVJf39w(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.HorizontalAnchorable {
-    method public void linkTo-TJhmEpo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-9lY5dKQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.VerticalAnchorable {
-    method public void linkTo-sp3QI2o(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-EGV1AEI(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainedLayoutReference {
     ctor public ConstrainedLayoutReference(Object id);
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
     method public Object getId();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
   }
 
   public abstract class ConstraintLayoutBaseScope {
     ctor public ConstraintLayoutBaseScope();
-    method public final void applyTo(androidx.ui.layout.State state);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method public final void createHorizontalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final void createVerticalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> getTasks();
+    method public final void applyTo(androidx.compose.foundation.layout.State state);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method public final void createHorizontalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final void createVerticalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> getTasks();
     method public final void reset();
-    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> tasks;
+    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> tasks;
   }
 
   public static final class ConstraintLayoutBaseScope.BaselineAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
   }
 
   public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
   }
 
   public static final class ConstraintLayoutBaseScope.VerticalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
   }
 
   public final class ConstraintLayoutKt {
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintLayoutScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @Deprecated public static androidx.ui.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.Dimension.MaxCoercible atLeast-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atLeastWrapContent-pX8Pf4s(androidx.ui.layout.Dimension.MinCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MinCoercible atMost-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atMost-bf1TpX8(androidx.ui.layout.Dimension.MaxCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtLeastWrapContent(androidx.ui.layout.Dimension.MinCoercible);
-    method public static androidx.ui.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtMostWrapContent(androidx.ui.layout.Dimension.MaxCoercible);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintLayoutScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.compose.foundation.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @Deprecated public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible atLeast-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atLeastWrapContent-vg8ks8g(androidx.compose.foundation.layout.Dimension.MinCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible atMost-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atMost-GXOViVg(androidx.compose.foundation.layout.Dimension.MaxCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.MinCoercible);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.MaxCoercible);
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRef();
-    method public androidx.ui.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRef();
+    method public androidx.compose.foundation.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
   }
 
   public final class ConstraintLayoutScope.ConstrainedLayoutReferences {
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component1();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component10();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component11();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component12();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component13();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component14();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component15();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component16();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component2();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component3();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component4();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component5();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component6();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component7();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component8();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component9();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component1();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component10();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component11();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component12();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component13();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component14();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component15();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component16();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component2();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component3();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component4();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component5();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component6();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component7();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component8();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component9();
   }
 
   @androidx.compose.Immutable public interface ConstraintSet {
-    method public void applyTo(androidx.ui.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
+    method public void applyTo(androidx.compose.foundation.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
   }
 
   @Deprecated public final class ConstraintSetBuilderScope {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension max-FmNbr68(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension min-O_hxsMo(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension max-FDSvgxs(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension min-_Goc9uA(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
-    field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
+    field @Deprecated public static final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
-    method @Deprecated public androidx.ui.layout.State getState();
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
+    method @Deprecated public androidx.compose.foundation.layout.State getState();
     method @Deprecated public Object getTag();
   }
 
@@ -335,165 +335,165 @@
     method @Deprecated public void center();
     method @Deprecated public void centerHorizontally();
     method @Deprecated public void centerVertically();
-    method @Deprecated public infix void constrainHorizontallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainVerticallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getHeight();
+    method @Deprecated public infix void constrainHorizontallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainVerticallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getHeight();
     method @Deprecated public float getHorizontalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
     method @Deprecated public Object getTag();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
     method @Deprecated public float getVerticalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWidth();
-    method @Deprecated public void setBaseline(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
-    method @Deprecated public void setBottom(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
-    method @Deprecated public void setHeight(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWidth();
+    method @Deprecated public void setBaseline(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
+    method @Deprecated public void setBottom(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setHeight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
     method @Deprecated public void setHorizontalBias(float value);
-    method @Deprecated public void setRight(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setRight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
     method @Deprecated public void setVerticalBias(float value);
-    method @Deprecated public void setWidth(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension height;
+    method @Deprecated public void setWidth(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension height;
     property public final float horizontalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
     property public final float verticalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension width;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension width;
   }
 
   @Deprecated public static interface ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.HorizontalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.HorizontalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.VerticalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.VerticalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.layout.ConstrainScope constrain(androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object id);
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.compose.foundation.layout.ConstrainScope constrain(androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRefFor(Object id);
   }
 
   @androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
-    field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
+    field public static final androidx.compose.foundation.layout.CrossAxisAlignment.Companion Companion;
   }
 
   public static final class CrossAxisAlignment.Companion {
-    method public androidx.ui.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
-    method public androidx.ui.layout.CrossAxisAlignment getCenter();
-    method public androidx.ui.layout.CrossAxisAlignment getEnd();
-    method public androidx.ui.layout.CrossAxisAlignment getStart();
-    property public final androidx.ui.layout.CrossAxisAlignment Center;
-    property public final androidx.ui.layout.CrossAxisAlignment End;
-    property public final androidx.ui.layout.CrossAxisAlignment Start;
+    method public androidx.compose.foundation.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getCenter();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getEnd();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getStart();
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Center;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment End;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Start;
   }
 
   public interface Dimension {
-    field public static final androidx.ui.layout.Dimension.Companion Companion;
+    field public static final androidx.compose.foundation.layout.Dimension.Companion Companion;
   }
 
-  public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.Coercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   public static final class Dimension.Companion {
-    method public androidx.ui.layout.Dimension getFillToConstraints();
-    method public androidx.ui.layout.Dimension.Coercible getPreferredWrapContent();
-    method public androidx.ui.layout.Dimension getWrapContent();
-    method public androidx.ui.layout.Dimension percent(float percent);
-    method public androidx.ui.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
-    method public androidx.ui.layout.Dimension value-ipo6vVg(float dp);
-    property public final androidx.ui.layout.Dimension fillToConstraints;
-    property public final androidx.ui.layout.Dimension.Coercible preferredWrapContent;
-    property public final androidx.ui.layout.Dimension wrapContent;
+    method public androidx.compose.foundation.layout.Dimension getFillToConstraints();
+    method public androidx.compose.foundation.layout.Dimension.Coercible getPreferredWrapContent();
+    method public androidx.compose.foundation.layout.Dimension getWrapContent();
+    method public androidx.compose.foundation.layout.Dimension percent(float percent);
+    method public androidx.compose.foundation.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
+    method public androidx.compose.foundation.layout.Dimension value-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.Dimension fillToConstraints;
+    property public final androidx.compose.foundation.layout.Dimension.Coercible preferredWrapContent;
+    property public final androidx.compose.foundation.layout.Dimension wrapContent;
   }
 
-  public static interface Dimension.MaxCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MaxCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
-  public static interface Dimension.MinCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MinCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   @androidx.compose.Immutable public final class DpConstraints {
@@ -501,47 +501,47 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
     method public float getMaxHeight();
     method public float getMaxWidth();
     method public float getMinHeight();
     method public float getMinWidth();
-    field public static final androidx.ui.layout.DpConstraints.Companion Companion;
+    field public static final androidx.compose.foundation.layout.DpConstraints.Companion Companion;
   }
 
   public static final class DpConstraints.Companion {
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixed-98Cn76g(float width, float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedHeight-ipo6vVg(float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedWidth-ipo6vVg(float width);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixed-98Cn76g(float width, float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedHeight-ipo6vVg(float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedWidth-ipo6vVg(float width);
   }
 
   public final class DpConstraintsKt {
-    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.ui.layout.DpConstraints dpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints enforce(androidx.ui.layout.DpConstraints, androidx.ui.layout.DpConstraints otherConstraints);
-    method public static boolean getHasBoundedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasBoundedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getSatisfiable(androidx.ui.layout.DpConstraints);
-    method public static boolean isZero(androidx.ui.layout.DpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints offset-bB8corQ(androidx.ui.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
+    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.compose.foundation.layout.DpConstraints dpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints enforce(androidx.compose.foundation.layout.DpConstraints, androidx.compose.foundation.layout.DpConstraints otherConstraints);
+    method public static boolean getHasBoundedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasBoundedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getSatisfiable(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean isZero(androidx.compose.foundation.layout.DpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints offset-H8zAE6E(androidx.compose.foundation.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
   }
 
   @kotlin.RequiresOptIn(message="The API of this layout is experimental and is likely to change in the future.") public @interface ExperimentalLayout {
   }
 
   public enum FlowCrossAxisAlignment {
-    method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Start;
   }
 
   public final class FlowKt {
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowColumn-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowRow-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowColumn-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowRow-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   @androidx.compose.Immutable public final class InnerPadding {
@@ -549,7 +549,7 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
     method public float getBottom();
     method public float getEnd();
     method public float getStart();
@@ -561,15 +561,15 @@
     method @Deprecated @androidx.compose.Composable public static void MaxIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicHeight(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
   }
 
   public enum IntrinsicSize {
-    method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.IntrinsicSize[] values();
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
+    method public static androidx.compose.foundation.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.IntrinsicSize[] values();
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Max;
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Min;
   }
 
   public final class LayoutAspectRatioKt {
@@ -588,7 +588,7 @@
 
   public final class LayoutPaddingKt {
     method @androidx.compose.Stable public static androidx.ui.core.Modifier absolutePadding-AwkAAmk(androidx.ui.core.Modifier, float left = 0.dp, float top = 0.dp, float right = 0.dp, float bottom = 0.dp);
-    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.ui.layout.InnerPadding padding);
+    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.compose.foundation.layout.InnerPadding padding);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-AwkAAmk(androidx.ui.core.Modifier, float start = 0.dp, float top = 0.dp, float end = 0.dp, float bottom = 0.dp);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-H3qe284(androidx.ui.core.Modifier, float all);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-qJOR85M(androidx.ui.core.Modifier, float horizontal = 0.dp, float vertical = 0.dp);
@@ -608,13 +608,13 @@
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredHeightIn-qJOR85M(androidx.ui.core.Modifier, float minHeight = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidth-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier width-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier widthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
@@ -624,36 +624,36 @@
   }
 
   public enum MainAxisAlignment {
-    method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.MainAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceBetween;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceEvenly;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceAround;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceBetween;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceEvenly;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Start;
   }
 
   public final class RowColumnImplKt {
   }
 
   public final class RowKt {
-    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class RowScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class RowScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.RowScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.RowScope INSTANCE;
   }
 
   public enum SizeMode {
-    method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.SizeMode[] values();
-    enum_constant public static final androidx.ui.layout.SizeMode Expand;
-    enum_constant public static final androidx.ui.layout.SizeMode Wrap;
+    method public static androidx.compose.foundation.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.SizeMode[] values();
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Expand;
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Wrap;
   }
 
   public final class SpacerKt {
@@ -661,10 +661,10 @@
   }
 
   public final class StackKt {
-    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.StackScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.StackScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class StackScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class StackScope {
     ctor public StackScope();
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier matchParentSize(androidx.ui.core.Modifier);
diff --git a/ui/ui-layout/api/restricted_current.txt b/ui/ui-layout/api/restricted_current.txt
index 88edca5..51192c3 100644
--- a/ui/ui-layout/api/restricted_current.txt
+++ b/ui/ui-layout/api/restricted_current.txt
@@ -1,38 +1,38 @@
 // Signature format: 3.0
-package androidx.ui.layout {
+package androidx.compose.foundation.layout {
 
   @androidx.compose.Immutable public final class AbsoluteArrangement {
-    field public static final androidx.ui.layout.AbsoluteArrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Center implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Center INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Left implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Left implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Left INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Left INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.Right implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.Right implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.Right INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.Right INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceAround INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class AbsoluteArrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.AbsoluteArrangement.SpaceEvenly INSTANCE;
   }
 
   public final class AlignmentLineKt {
@@ -41,55 +41,55 @@
   }
 
   @androidx.compose.Immutable public final class Arrangement {
-    field public static final androidx.ui.layout.Arrangement INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement INSTANCE;
   }
 
-  public static final class Arrangement.Bottom implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Bottom implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Bottom INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Bottom INSTANCE;
   }
 
-  public static final class Arrangement.Center implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Center implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Center INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Center INSTANCE;
   }
 
-  public static final class Arrangement.End implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.End implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.End INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.End INSTANCE;
   }
 
   public static interface Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
   }
 
-  public static final class Arrangement.SpaceAround implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceAround implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceAround INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceAround INSTANCE;
   }
 
-  public static final class Arrangement.SpaceBetween implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceBetween implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceBetween INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceBetween INSTANCE;
   }
 
-  public static final class Arrangement.SpaceEvenly implements androidx.ui.layout.Arrangement.Horizontal androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.SpaceEvenly implements androidx.compose.foundation.layout.Arrangement.Horizontal androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.SpaceEvenly INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.SpaceEvenly INSTANCE;
   }
 
-  public static final class Arrangement.Start implements androidx.ui.layout.Arrangement.Horizontal {
+  public static final class Arrangement.Start implements androidx.compose.foundation.layout.Arrangement.Horizontal {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size, androidx.ui.core.LayoutDirection layoutDirection);
-    field public static final androidx.ui.layout.Arrangement.Start INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Start INSTANCE;
   }
 
-  public static final class Arrangement.Top implements androidx.ui.layout.Arrangement.Vertical {
+  public static final class Arrangement.Top implements androidx.compose.foundation.layout.Arrangement.Vertical {
     method public java.util.List<java.lang.Integer> arrange(int totalSize, java.util.List<java.lang.Integer> size);
-    field public static final androidx.ui.layout.Arrangement.Top INSTANCE;
+    field public static final androidx.compose.foundation.layout.Arrangement.Top INSTANCE;
   }
 
   public static interface Arrangement.Vertical {
@@ -97,237 +97,237 @@
   }
 
   public final class ChainStyle {
-    field public static final androidx.ui.layout.ChainStyle.Companion Companion;
+    field public static final androidx.compose.foundation.layout.ChainStyle.Companion Companion;
   }
 
   public static final class ChainStyle.Companion {
-    method public androidx.ui.layout.ChainStyle Packed(float bias);
-    method public androidx.ui.layout.ChainStyle getPacked();
-    method public androidx.ui.layout.ChainStyle getSpread();
-    method public androidx.ui.layout.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ChainStyle Packed;
-    property public final androidx.ui.layout.ChainStyle Spread;
-    property public final androidx.ui.layout.ChainStyle SpreadInside;
+    method public androidx.compose.foundation.layout.ChainStyle Packed(float bias);
+    method public androidx.compose.foundation.layout.ChainStyle getPacked();
+    method public androidx.compose.foundation.layout.ChainStyle getSpread();
+    method public androidx.compose.foundation.layout.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ChainStyle SpreadInside;
   }
 
   public final class ColumnKt {
-    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Column(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Vertical verticalArrangement = Arrangement.Top, androidx.ui.core.Alignment.Horizontal horizontalGravity = Alignment.Start, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class ColumnScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class ColumnScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.VerticalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Horizontal align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.ColumnScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.ColumnScope INSTANCE;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstrainScope {
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
-    method public void centerAround(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
-    method public void centerHorizontallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public void centerVerticallyTo(androidx.ui.layout.ConstrainedLayoutReference other);
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
-    method public androidx.ui.layout.ConstrainScope.BaselineAnchorable getBaseline();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getBottom();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getEnd();
-    method public androidx.ui.layout.Dimension getHeight();
-    method public androidx.ui.layout.ConstrainedLayoutReference getParent();
-    method public androidx.ui.layout.ConstrainScope.VerticalAnchorable getStart();
-    method public androidx.ui.layout.ConstrainScope.HorizontalAnchorable getTop();
-    method public androidx.ui.layout.Dimension getWidth();
-    method public void linkTo-MrnifDM(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-h2XOreo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
-    method public void linkTo-tsa2a54(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
-    method public void setHeight(androidx.ui.layout.Dimension value);
-    method public void setWidth(androidx.ui.layout.Dimension value);
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable absoluteRight;
-    property public final androidx.ui.layout.ConstrainScope.BaselineAnchorable baseline;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable bottom;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable end;
-    property public final androidx.ui.layout.Dimension height;
-    property public final androidx.ui.layout.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstrainScope.VerticalAnchorable start;
-    property public final androidx.ui.layout.ConstrainScope.HorizontalAnchorable top;
-    property public final androidx.ui.layout.Dimension width;
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstrainScope {
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor);
+    method public void centerAround(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor);
+    method public void centerHorizontallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public void centerVerticallyTo(androidx.compose.foundation.layout.ConstrainedLayoutReference other);
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable getBaseline();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getBottom();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getEnd();
+    method public androidx.compose.foundation.layout.Dimension getHeight();
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference getParent();
+    method public androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable getStart();
+    method public androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable getTop();
+    method public androidx.compose.foundation.layout.Dimension getWidth();
+    method public void linkTo-G1ipIQs(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float topMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-TkcoPiE(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, float startMargin = 0.dp, float endMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float bias = 0.5f);
+    method public void linkTo-xxHMemQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end, androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom, float startMargin = 0.dp, float topMargin = 0.dp, float endMargin = 0.dp, float bottomMargin = 0.dp, @FloatRange(from=0.0, to=1.0) float horizontalBias = 0.5f, @FloatRange(from=0.0, to=1.0) float verticalBias = 0.5f);
+    method public void setHeight(androidx.compose.foundation.layout.Dimension value);
+    method public void setWidth(androidx.compose.foundation.layout.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstrainScope.BaselineAnchorable baseline;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable bottom;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable end;
+    property public final androidx.compose.foundation.layout.Dimension height;
+    property public final androidx.compose.foundation.layout.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstrainScope.VerticalAnchorable start;
+    property public final androidx.compose.foundation.layout.ConstrainScope.HorizontalAnchorable top;
+    property public final androidx.compose.foundation.layout.Dimension width;
   }
 
   public final class ConstrainScope.BaselineAnchorable {
-    method public void linkTo-oRbSkj8(androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
+    method public void linkTo-oVJf39w(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.HorizontalAnchorable {
-    method public void linkTo-TJhmEpo(androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-9lY5dKQ(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainScope.VerticalAnchorable {
-    method public void linkTo-sp3QI2o(androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
+    method public void linkTo-EGV1AEI(androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor anchor, float margin = 0.dp);
   }
 
   public final class ConstrainedLayoutReference {
     ctor public ConstrainedLayoutReference(Object id);
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteLeft();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getAbsoluteRight();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor getBaseline();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getBottom();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getEnd();
     method public Object getId();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
-    property public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor getStart();
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteLeft;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor absoluteRight;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor end;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor start;
+    property public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor top;
   }
 
   public abstract class ConstraintLayoutBaseScope {
     ctor public ConstraintLayoutBaseScope();
-    method public final void applyTo(androidx.ui.layout.State state);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method public final void createHorizontalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.ui.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
-    method public final void createVerticalChain(androidx.ui.layout.ConstrainedLayoutReference![] elements, androidx.ui.layout.ChainStyle chainStyle = ChainStyle.Spread);
-    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> getTasks();
+    method public final void applyTo(androidx.compose.foundation.layout.State state);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteLeftBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createAbsoluteRightBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createBottomBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createEndBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteLeft-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromAbsoluteRight-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromEnd-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createGuidelineFromStart-ipo6vVg(float offset);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop(float fraction);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method public final void createHorizontalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor createStartBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor createTopBarrier-AuEMxJ0(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, float margin = 0.dp);
+    method public final void createVerticalChain(androidx.compose.foundation.layout.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ChainStyle chainStyle = ChainStyle.Spread);
+    method protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> getTasks();
     method public final void reset();
-    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.ui.layout.State,kotlin.Unit>> tasks;
+    property protected final java.util.List<kotlin.jvm.functions.Function1<androidx.compose.foundation.layout.State,kotlin.Unit>> tasks;
   }
 
   public static final class ConstraintLayoutBaseScope.BaselineAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.BaselineAnchor copy(Object id);
   }
 
   public static final class ConstraintLayoutBaseScope.HorizontalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.HorizontalAnchor copy(Object id, int index);
   }
 
   public static final class ConstraintLayoutBaseScope.VerticalAnchor {
-    method public androidx.ui.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
+    method public androidx.compose.foundation.layout.ConstraintLayoutBaseScope.VerticalAnchor copy(Object id, int index);
   }
 
   public final class ConstraintLayoutKt {
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintLayoutScope,kotlin.Unit> children);
-    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @Deprecated public static androidx.ui.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstraintSetScope,kotlin.Unit> description);
-    method public static androidx.ui.layout.Dimension.MaxCoercible atLeast-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atLeastWrapContent-pX8Pf4s(androidx.ui.layout.Dimension.MinCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MinCoercible atMost-UKaBGfc(androidx.ui.layout.Dimension.Coercible, float dp);
-    method public static androidx.ui.layout.Dimension atMost-bf1TpX8(androidx.ui.layout.Dimension.MaxCoercible, float dp);
-    method public static androidx.ui.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtLeastWrapContent(androidx.ui.layout.Dimension.MinCoercible);
-    method public static androidx.ui.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.ui.layout.Dimension.Coercible);
-    method public static androidx.ui.layout.Dimension getAtMostWrapContent(androidx.ui.layout.Dimension.MaxCoercible);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintLayoutScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void ConstraintLayout(androidx.compose.foundation.layout.ConstraintSet constraintSet, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @Deprecated public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetBuilderScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.ConstraintSet ConstraintSet2(kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstraintSetScope,kotlin.Unit> description);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible atLeast-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atLeastWrapContent-vg8ks8g(androidx.compose.foundation.layout.Dimension.MinCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible atMost-FX2K-0s(androidx.compose.foundation.layout.Dimension.Coercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension atMost-GXOViVg(androidx.compose.foundation.layout.Dimension.MaxCoercible, float dp);
+    method public static androidx.compose.foundation.layout.Dimension.MaxCoercible getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtLeastWrapContent(androidx.compose.foundation.layout.Dimension.MinCoercible);
+    method public static androidx.compose.foundation.layout.Dimension.MinCoercible getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.Coercible);
+    method public static androidx.compose.foundation.layout.Dimension getAtMostWrapContent(androidx.compose.foundation.layout.Dimension.MaxCoercible);
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRef();
-    method public androidx.ui.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintLayoutScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.ui.core.Modifier constrainAs(androidx.ui.core.Modifier, androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRef();
+    method public androidx.compose.foundation.layout.ConstraintLayoutScope.ConstrainedLayoutReferences createRefs();
   }
 
   public final class ConstraintLayoutScope.ConstrainedLayoutReferences {
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component1();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component10();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component11();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component12();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component13();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component14();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component15();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component16();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component2();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component3();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component4();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component5();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component6();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component7();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component8();
-    method public operator androidx.ui.layout.ConstrainedLayoutReference component9();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component1();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component10();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component11();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component12();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component13();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component14();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component15();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component16();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component2();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component3();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component4();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component5();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component6();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component7();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component8();
+    method public operator androidx.compose.foundation.layout.ConstrainedLayoutReference component9();
   }
 
   @androidx.compose.Immutable public interface ConstraintSet {
-    method public void applyTo(androidx.ui.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
+    method public void applyTo(androidx.compose.foundation.layout.State state, java.util.List<? extends androidx.ui.core.Measurable> measurables);
   }
 
   @Deprecated public final class ConstraintSetBuilderScope {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension max-FmNbr68(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension min-O_hxsMo(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-p2ctyXY(androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension maxWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension minWrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createBottomBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromBottom-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromLeft-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor createGuidelineFromRight-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor createGuidelineFromTop-ipo6vVg(float offset);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalChain createHorizontalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createLeftBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor createRightBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor createTopBarrier(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference... elements);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalChain createVerticalChain(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference![] elements, androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle chainStyle = ChainStyle.Spread);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMaxWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getMinWrap(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference getParent();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible getWrap();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWrapFixed();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension max-FDSvgxs(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible max-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible min-SAszZ0E(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension min-_Goc9uA(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible, float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension percent(float percent);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference tag(Object tag);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible value-ipo6vVg(float dp);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension valueFixed-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MinCoercible maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension maxWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.MaxCoercible minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension minWrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference parent;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension.Coercible wrap;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension wrapFixed;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle {
-    field @Deprecated public static final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
+    field @Deprecated public static final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle.Companion Companion;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ChainStyle.Companion {
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Packed;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle Spread;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed(float bias);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getPacked();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpread();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle getSpreadInside();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Packed;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle Spread;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ChainStyle SpreadInside;
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
-    method @Deprecated public androidx.ui.layout.State getState();
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor other);
+    method @Deprecated public androidx.compose.foundation.layout.State getState();
     method @Deprecated public Object getTag();
   }
 
@@ -335,165 +335,165 @@
     method @Deprecated public void center();
     method @Deprecated public void centerHorizontally();
     method @Deprecated public void centerVertically();
-    method @Deprecated public infix void constrainHorizontallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public infix void constrainVerticallyTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getHeight();
+    method @Deprecated public infix void constrainHorizontallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public infix void constrainVerticallyTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor getBaseline();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getHeight();
     method @Deprecated public float getHorizontalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
     method @Deprecated public Object getTag();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
     method @Deprecated public float getVerticalBias();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.Dimension getWidth();
-    method @Deprecated public void setBaseline(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
-    method @Deprecated public void setBottom(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
-    method @Deprecated public void setHeight(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension getWidth();
+    method @Deprecated public void setBaseline(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor p);
+    method @Deprecated public void setBottom(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setHeight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
     method @Deprecated public void setHorizontalBias(float value);
-    method @Deprecated public void setRight(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
+    method @Deprecated public void setRight(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor p);
     method @Deprecated public void setVerticalBias(float value);
-    method @Deprecated public void setWidth(androidx.ui.layout.ConstraintSetBuilderScope.Dimension value);
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension height;
+    method @Deprecated public void setWidth(androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension value);
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutBaselineAnchor baseline;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension height;
     property public final float horizontalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
     property public final float verticalBias;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.Dimension width;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension width;
   }
 
   @Deprecated public static interface ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.Coercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MaxCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
-  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.ui.layout.ConstraintSetBuilderScope.Dimension {
+  @Deprecated public static interface ConstraintSetBuilderScope.Dimension.MinCoercible extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.Dimension {
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.HorizontalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.HorizontalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.HorizontalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getLeft();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor getRight();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor left;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor right;
   }
 
   @Deprecated public abstract static sealed class ConstraintSetBuilderScope.VerticalAnchor {
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.BarrierAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor other);
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.ConstrainedLayoutAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor other);
     method @Deprecated public int getIndex$lintWithKotlin();
     method @Deprecated public float getMargin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
     method @Deprecated public void setMargin-ipo6vVg(float value);
     property public final float margin;
     property public Object tag;
   }
 
-  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.ui.layout.ConstraintSetBuilderScope.VerticalAnchor {
+  @Deprecated public static final class ConstraintSetBuilderScope.VerticalAnchor.GuidelineAnchor extends androidx.compose.foundation.layout.ConstraintSetBuilderScope.VerticalAnchor {
     method @Deprecated public int getIndex$lintWithKotlin();
-    method @Deprecated public androidx.ui.layout.State getState$lintWithKotlin();
+    method @Deprecated public androidx.compose.foundation.layout.State getState$lintWithKotlin();
     method @Deprecated public Object getTag$lintWithKotlin();
   }
 
   @Deprecated public static final class ConstraintSetBuilderScope.VerticalChain {
-    method @Deprecated public infix void constrainTo(androidx.ui.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
-    method @Deprecated public androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
-    property public final androidx.ui.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
+    method @Deprecated public infix void constrainTo(androidx.compose.foundation.layout.ConstraintSetBuilderScope.ConstrainedLayoutReference other);
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getBottom();
+    method @Deprecated public androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor getTop();
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor bottom;
+    property public final androidx.compose.foundation.layout.ConstraintSetBuilderScope.HorizontalAnchor.ConstrainedLayoutAnchor top;
   }
 
-  @androidx.ui.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.ui.layout.ConstraintLayoutBaseScope {
-    method public androidx.ui.layout.ConstrainScope constrain(androidx.ui.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ConstrainScope,kotlin.Unit> constrainBlock);
-    method public androidx.ui.layout.ConstrainedLayoutReference createRefFor(Object id);
+  @androidx.compose.foundation.layout.LayoutScopeMarker public final class ConstraintSetScope extends androidx.compose.foundation.layout.ConstraintLayoutBaseScope {
+    method public androidx.compose.foundation.layout.ConstrainScope constrain(androidx.compose.foundation.layout.ConstrainedLayoutReference ref, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ConstrainScope,kotlin.Unit> constrainBlock);
+    method public androidx.compose.foundation.layout.ConstrainedLayoutReference createRefFor(Object id);
   }
 
   @androidx.compose.Immutable public abstract sealed class CrossAxisAlignment {
-    field public static final androidx.ui.layout.CrossAxisAlignment.Companion Companion;
+    field public static final androidx.compose.foundation.layout.CrossAxisAlignment.Companion Companion;
   }
 
   public static final class CrossAxisAlignment.Companion {
-    method public androidx.ui.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
-    method public androidx.ui.layout.CrossAxisAlignment getCenter();
-    method public androidx.ui.layout.CrossAxisAlignment getEnd();
-    method public androidx.ui.layout.CrossAxisAlignment getStart();
-    property public final androidx.ui.layout.CrossAxisAlignment Center;
-    property public final androidx.ui.layout.CrossAxisAlignment End;
-    property public final androidx.ui.layout.CrossAxisAlignment Start;
+    method public androidx.compose.foundation.layout.CrossAxisAlignment AlignmentLine(androidx.ui.core.AlignmentLine alignmentLine);
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getCenter();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getEnd();
+    method public androidx.compose.foundation.layout.CrossAxisAlignment getStart();
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Center;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment End;
+    property public final androidx.compose.foundation.layout.CrossAxisAlignment Start;
   }
 
   public interface Dimension {
-    field public static final androidx.ui.layout.Dimension.Companion Companion;
+    field public static final androidx.compose.foundation.layout.Dimension.Companion Companion;
   }
 
-  public static interface Dimension.Coercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.Coercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   public static final class Dimension.Companion {
-    method public androidx.ui.layout.Dimension getFillToConstraints();
-    method public androidx.ui.layout.Dimension.Coercible getPreferredWrapContent();
-    method public androidx.ui.layout.Dimension getWrapContent();
-    method public androidx.ui.layout.Dimension percent(float percent);
-    method public androidx.ui.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
-    method public androidx.ui.layout.Dimension value-ipo6vVg(float dp);
-    property public final androidx.ui.layout.Dimension fillToConstraints;
-    property public final androidx.ui.layout.Dimension.Coercible preferredWrapContent;
-    property public final androidx.ui.layout.Dimension wrapContent;
+    method public androidx.compose.foundation.layout.Dimension getFillToConstraints();
+    method public androidx.compose.foundation.layout.Dimension.Coercible getPreferredWrapContent();
+    method public androidx.compose.foundation.layout.Dimension getWrapContent();
+    method public androidx.compose.foundation.layout.Dimension percent(float percent);
+    method public androidx.compose.foundation.layout.Dimension.Coercible preferredValue-ipo6vVg(float dp);
+    method public androidx.compose.foundation.layout.Dimension value-ipo6vVg(float dp);
+    property public final androidx.compose.foundation.layout.Dimension fillToConstraints;
+    property public final androidx.compose.foundation.layout.Dimension.Coercible preferredWrapContent;
+    property public final androidx.compose.foundation.layout.Dimension wrapContent;
   }
 
-  public static interface Dimension.MaxCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MaxCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
-  public static interface Dimension.MinCoercible extends androidx.ui.layout.Dimension {
+  public static interface Dimension.MinCoercible extends androidx.compose.foundation.layout.Dimension {
   }
 
   @androidx.compose.Immutable public final class DpConstraints {
@@ -501,47 +501,47 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.DpConstraints copy-rIHlIKc(float minWidth, float maxWidth, float minHeight, float maxHeight);
     method public float getMaxHeight();
     method public float getMaxWidth();
     method public float getMinHeight();
     method public float getMinWidth();
-    field public static final androidx.ui.layout.DpConstraints.Companion Companion;
+    field public static final androidx.compose.foundation.layout.DpConstraints.Companion Companion;
   }
 
   public static final class DpConstraints.Companion {
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixed-98Cn76g(float width, float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedHeight-ipo6vVg(float height);
-    method @androidx.compose.Stable public androidx.ui.layout.DpConstraints fixedWidth-ipo6vVg(float width);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixed-98Cn76g(float width, float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedHeight-ipo6vVg(float height);
+    method @androidx.compose.Stable public androidx.compose.foundation.layout.DpConstraints fixedWidth-ipo6vVg(float width);
   }
 
   public final class DpConstraintsKt {
-    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.ui.layout.DpConstraints dpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints enforce(androidx.ui.layout.DpConstraints, androidx.ui.layout.DpConstraints otherConstraints);
-    method public static boolean getHasBoundedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasBoundedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedHeight(androidx.ui.layout.DpConstraints);
-    method public static boolean getHasFixedWidth(androidx.ui.layout.DpConstraints);
-    method public static boolean getSatisfiable(androidx.ui.layout.DpConstraints);
-    method public static boolean isZero(androidx.ui.layout.DpConstraints);
-    method @androidx.compose.Stable public static androidx.ui.layout.DpConstraints offset-bB8corQ(androidx.ui.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
+    method @androidx.compose.Stable public static androidx.ui.core.Constraints Constraints(androidx.ui.unit.Density, androidx.compose.foundation.layout.DpConstraints dpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints DpConstraints(androidx.ui.unit.Density, androidx.ui.core.Constraints constraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints enforce(androidx.compose.foundation.layout.DpConstraints, androidx.compose.foundation.layout.DpConstraints otherConstraints);
+    method public static boolean getHasBoundedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasBoundedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedHeight(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getHasFixedWidth(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean getSatisfiable(androidx.compose.foundation.layout.DpConstraints);
+    method public static boolean isZero(androidx.compose.foundation.layout.DpConstraints);
+    method @androidx.compose.Stable public static androidx.compose.foundation.layout.DpConstraints offset-H8zAE6E(androidx.compose.foundation.layout.DpConstraints, float horizontal = 0.dp, float vertical = 0.dp);
   }
 
   @kotlin.RequiresOptIn(message="The API of this layout is experimental and is likely to change in the future.") public @interface ExperimentalLayout {
   }
 
   public enum FlowCrossAxisAlignment {
-    method public static androidx.ui.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.FlowCrossAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.FlowCrossAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.FlowCrossAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.FlowCrossAxisAlignment Start;
   }
 
   public final class FlowKt {
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowColumn-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Composable @androidx.ui.layout.ExperimentalLayout public static void FlowRow-UKRdXhE(androidx.ui.layout.SizeMode mainAxisSize = androidx.ui.layout.SizeMode.Wrap, androidx.ui.layout.MainAxisAlignment mainAxisAlignment = androidx.ui.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.ui.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.ui.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.ui.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowColumn-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+    method @androidx.compose.Composable @androidx.compose.foundation.layout.ExperimentalLayout public static void FlowRow-A2g23mI(androidx.compose.foundation.layout.SizeMode mainAxisSize = androidx.compose.foundation.layout.SizeMode.Wrap, androidx.compose.foundation.layout.MainAxisAlignment mainAxisAlignment = androidx.compose.foundation.layout.MainAxisAlignment.Start, float mainAxisSpacing = 0.dp, androidx.compose.foundation.layout.FlowCrossAxisAlignment crossAxisAlignment = androidx.compose.foundation.layout.FlowCrossAxisAlignment.Start, float crossAxisSpacing = 0.dp, androidx.compose.foundation.layout.MainAxisAlignment lastLineMainAxisAlignment = mainAxisAlignment, kotlin.jvm.functions.Function0<kotlin.Unit> children);
   }
 
   @androidx.compose.Immutable public final class InnerPadding {
@@ -549,7 +549,7 @@
     method public float component2();
     method public float component3();
     method public float component4();
-    method @androidx.compose.Immutable public androidx.ui.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
+    method @androidx.compose.Immutable public androidx.compose.foundation.layout.InnerPadding copy-rIHlIKc(float start, float top, float end, float bottom);
     method public float getBottom();
     method public float getEnd();
     method public float getStart();
@@ -561,15 +561,15 @@
     method @Deprecated @androidx.compose.Composable public static void MaxIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicHeight(kotlin.jvm.functions.Function0<kotlin.Unit> children);
     method @Deprecated @androidx.compose.Composable public static void MinIntrinsicWidth(kotlin.jvm.functions.Function0<kotlin.Unit> children);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
-    method @androidx.compose.Stable @androidx.ui.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.ui.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredHeight(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
+    method @androidx.compose.Stable @androidx.compose.foundation.layout.ExperimentalLayout public static androidx.ui.core.Modifier preferredWidth(androidx.ui.core.Modifier, androidx.compose.foundation.layout.IntrinsicSize intrinsicSize);
   }
 
   public enum IntrinsicSize {
-    method public static androidx.ui.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.IntrinsicSize[] values();
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Max;
-    enum_constant public static final androidx.ui.layout.IntrinsicSize Min;
+    method public static androidx.compose.foundation.layout.IntrinsicSize valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.IntrinsicSize[] values();
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Max;
+    enum_constant public static final androidx.compose.foundation.layout.IntrinsicSize Min;
   }
 
   public final class LayoutAspectRatioKt {
@@ -588,7 +588,7 @@
 
   public final class LayoutPaddingKt {
     method @androidx.compose.Stable public static androidx.ui.core.Modifier absolutePadding-AwkAAmk(androidx.ui.core.Modifier, float left = 0.dp, float top = 0.dp, float right = 0.dp, float bottom = 0.dp);
-    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.ui.layout.InnerPadding padding);
+    method public static androidx.ui.core.Modifier padding(androidx.ui.core.Modifier, androidx.compose.foundation.layout.InnerPadding padding);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-AwkAAmk(androidx.ui.core.Modifier, float start = 0.dp, float top = 0.dp, float end = 0.dp, float bottom = 0.dp);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-H3qe284(androidx.ui.core.Modifier, float all);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier padding-qJOR85M(androidx.ui.core.Modifier, float horizontal = 0.dp, float vertical = 0.dp);
@@ -608,13 +608,13 @@
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredHeightIn-qJOR85M(androidx.ui.core.Modifier, float minHeight = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSize-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredSizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidth-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier preferredWidthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-H3qe284(androidx.ui.core.Modifier, float size);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier size-qJOR85M(androidx.ui.core.Modifier, float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.ui.layout.DpConstraints constraints);
+    method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn(androidx.ui.core.Modifier, androidx.compose.foundation.layout.DpConstraints constraints);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier sizeIn-AwkAAmk(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float minHeight = Dp.Unspecified, float maxWidth = Dp.Unspecified, float maxHeight = Dp.Unspecified);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier width-H3qe284(androidx.ui.core.Modifier, float width);
     method @androidx.compose.Stable public static androidx.ui.core.Modifier widthIn-qJOR85M(androidx.ui.core.Modifier, float minWidth = Dp.Unspecified, float maxWidth = Dp.Unspecified);
@@ -624,36 +624,36 @@
   }
 
   public enum MainAxisAlignment {
-    method public static androidx.ui.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.MainAxisAlignment[] values();
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Center;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment End;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceAround;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceBetween;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment SpaceEvenly;
-    enum_constant public static final androidx.ui.layout.MainAxisAlignment Start;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.MainAxisAlignment[] values();
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Center;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment End;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceAround;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceBetween;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment SpaceEvenly;
+    enum_constant public static final androidx.compose.foundation.layout.MainAxisAlignment Start;
   }
 
   public final class RowColumnImplKt {
   }
 
   public final class RowKt {
-    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.ui.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Row(androidx.ui.core.Modifier modifier = Modifier, androidx.compose.foundation.layout.Arrangement.Horizontal horizontalArrangement = Arrangement.Start, androidx.ui.core.Alignment.Vertical verticalGravity = Alignment.Top, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class RowScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class RowScope {
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, androidx.ui.core.HorizontalAlignmentLine alignmentLine);
     method @androidx.compose.Stable public androidx.ui.core.Modifier alignWithSiblings(androidx.ui.core.Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.core.Measured,java.lang.Integer> alignmentLineBlock);
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment.Vertical align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier weight(androidx.ui.core.Modifier, @FloatRange(from=0.0, to=3.4E38, fromInclusive=false) float weight, boolean fill = true);
-    field public static final androidx.ui.layout.RowScope INSTANCE;
+    field public static final androidx.compose.foundation.layout.RowScope INSTANCE;
   }
 
   public enum SizeMode {
-    method public static androidx.ui.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
-    method public static androidx.ui.layout.SizeMode[] values();
-    enum_constant public static final androidx.ui.layout.SizeMode Expand;
-    enum_constant public static final androidx.ui.layout.SizeMode Wrap;
+    method public static androidx.compose.foundation.layout.SizeMode valueOf(String name) throws java.lang.IllegalArgumentException;
+    method public static androidx.compose.foundation.layout.SizeMode[] values();
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Expand;
+    enum_constant public static final androidx.compose.foundation.layout.SizeMode Wrap;
   }
 
   public final class SpacerKt {
@@ -661,10 +661,10 @@
   }
 
   public final class StackKt {
-    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.StackScope,kotlin.Unit> children);
+    method @androidx.compose.Composable public static void Stack(androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.StackScope,kotlin.Unit> children);
   }
 
-  @androidx.compose.Immutable @androidx.ui.layout.LayoutScopeMarker public final class StackScope {
+  @androidx.compose.Immutable @androidx.compose.foundation.layout.LayoutScopeMarker public final class StackScope {
     ctor public StackScope();
     method @androidx.compose.Stable public androidx.ui.core.Modifier gravity(androidx.ui.core.Modifier, androidx.ui.core.Alignment align);
     method @androidx.compose.Stable public androidx.ui.core.Modifier matchParentSize(androidx.ui.core.Modifier);
diff --git a/ui/ui-layout/integration-tests/layout-demos/src/main/AndroidManifest.xml b/ui/ui-layout/integration-tests/layout-demos/src/main/AndroidManifest.xml
index 6b6f392..0d68fba 100644
--- a/ui/ui-layout/integration-tests/layout-demos/src/main/AndroidManifest.xml
+++ b/ui/ui-layout/integration-tests/layout-demos/src/main/AndroidManifest.xml
@@ -14,4 +14,4 @@
   ~ limitations under the License
   -->
 
-<manifest package="androidx.ui.layout.demos"/>
\ No newline at end of file
+<manifest package="androidx.compose.foundation.layout.demos"/>
\ No newline at end of file
diff --git a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemo.kt b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/ComplexLayoutDemo.kt
similarity index 79%
rename from ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemo.kt
rename to ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/ComplexLayoutDemo.kt
index 117255c..8c3ac33 100644
--- a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ComplexLayoutDemo.kt
+++ b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/ComplexLayoutDemo.kt
@@ -14,18 +14,18 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.demos
+package androidx.compose.foundation.layout.demos
 
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.ltr
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.rtl
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.ltr
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.rtl
 import androidx.ui.unit.dp
 
 @Composable
diff --git a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ConstraintLayoutDemo.kt b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/ConstraintLayoutDemo.kt
similarity index 82%
rename from ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ConstraintLayoutDemo.kt
rename to ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/ConstraintLayoutDemo.kt
index 02dc4e4..14b12fc 100644
--- a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/ConstraintLayoutDemo.kt
+++ b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/ConstraintLayoutDemo.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.demos
+package androidx.compose.foundation.layout.demos
 
 import androidx.compose.Composable
 
@@ -29,10 +29,10 @@
 
 @Composable
 fun DemoInlineDSL() {
-    androidx.ui.layout.samples.DemoInlineDSL()
+    androidx.compose.foundation.layout.samples.DemoInlineDSL()
 }
 
 @Composable
 fun DemoConstraintSet() {
-    androidx.ui.layout.samples.DemoConstraintSet()
+    androidx.compose.foundation.layout.samples.DemoConstraintSet()
 }
\ No newline at end of file
diff --git a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/LayoutDemos.kt b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/LayoutDemos.kt
similarity index 91%
rename from ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/LayoutDemos.kt
rename to ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/LayoutDemos.kt
index 10554b7..746367f 100644
--- a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/LayoutDemos.kt
+++ b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/LayoutDemos.kt
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.demos
+package androidx.compose.foundation.layout.demos
 
 import androidx.ui.demos.common.ComposableDemo
 import androidx.ui.demos.common.DemoCategory
-import androidx.ui.layout.samples.SimpleFlowRow
+import androidx.compose.foundation.layout.samples.SimpleFlowRow
 
 val LayoutDemos = DemoCategory("Layout", listOf(
     ComposableDemo("Complex layout") { ComplexLayoutDemo() },
diff --git a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/RtlDemo.kt b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/RtlDemo.kt
similarity index 92%
rename from ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/RtlDemo.kt
rename to ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/RtlDemo.kt
index bbece26..65cc66b 100644
--- a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/RtlDemo.kt
+++ b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/RtlDemo.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.demos
+package androidx.compose.foundation.layout.demos
 
 import androidx.compose.Composable
 import androidx.ui.core.Alignment
@@ -25,14 +25,14 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.ltr
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.rtl
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.ltr
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.rtl
 import androidx.ui.unit.IntOffset
 import androidx.ui.unit.dp
 @Composable
diff --git a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/SimpleLayoutDemo.kt b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/SimpleLayoutDemo.kt
similarity index 88%
rename from ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/SimpleLayoutDemo.kt
rename to ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/SimpleLayoutDemo.kt
index 16ada98..32ed9bb 100644
--- a/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/ui/layout/demos/SimpleLayoutDemo.kt
+++ b/ui/ui-layout/integration-tests/layout-demos/src/main/java/androidx/compose/foundation/layout/demos/SimpleLayoutDemo.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.demos
+package androidx.compose.foundation.layout.demos
 
 import androidx.compose.Composable
 import androidx.ui.core.Alignment
@@ -23,16 +23,16 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.dp
 import androidx.ui.unit.sp
 
diff --git a/ui/ui-layout/samples/src/main/AndroidManifest.xml b/ui/ui-layout/samples/src/main/AndroidManifest.xml
index abecbd5..4f8cca0 100644
--- a/ui/ui-layout/samples/src/main/AndroidManifest.xml
+++ b/ui/ui-layout/samples/src/main/AndroidManifest.xml
@@ -14,4 +14,4 @@
   limitations under the License.
   -->
 
-<manifest package="androidx.ui.layout.samples" />
\ No newline at end of file
+<manifest package="androidx.compose.foundation.layout.samples" />
\ No newline at end of file
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/AspectRatioSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/AspectRatioSample.kt
similarity index 85%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/AspectRatioSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/AspectRatioSample.kt
index 7054102..79546bc 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/AspectRatioSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/AspectRatioSample.kt
@@ -14,15 +14,15 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ColumnSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ColumnSample.kt
similarity index 95%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ColumnSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ColumnSample.kt
index 53c5fbd..9274cc3 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ColumnSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ColumnSample.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 import kotlin.math.max
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ConstraintLayoutSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ConstraintLayoutSample.kt
similarity index 89%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ConstraintLayoutSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ConstraintLayoutSample.kt
index 280a99f..c0519fd 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/ConstraintLayoutSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/ConstraintLayoutSample.kt
@@ -14,17 +14,17 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.ui.core.layoutId
 import androidx.compose.foundation.Text
-import androidx.ui.layout.ConstraintLayout
-import androidx.ui.layout.ConstraintSet2
-import androidx.ui.layout.Dimension
-import androidx.ui.layout.atMost
+import androidx.compose.foundation.layout.ConstraintLayout
+import androidx.compose.foundation.layout.ConstraintSet2
+import androidx.compose.foundation.layout.Dimension
+import androidx.compose.foundation.layout.atMost
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/FlowSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/FlowSample.kt
similarity index 85%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/FlowSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/FlowSample.kt
index e64d803..dd1f61c 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/FlowSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/FlowSample.kt
@@ -14,17 +14,17 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.ExperimentalLayout
-import androidx.ui.layout.FlowColumn
-import androidx.ui.layout.FlowRow
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.ExperimentalLayout
+import androidx.compose.foundation.layout.FlowColumn
+import androidx.compose.foundation.layout.FlowRow
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 val sizes = listOf(
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/IntrinsicSample.kt
similarity index 89%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/IntrinsicSample.kt
index b07ee16..ae4f699 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/IntrinsicSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/IntrinsicSample.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
@@ -22,17 +22,17 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.ExperimentalLayout
-import androidx.ui.layout.IntrinsicSize
-import androidx.ui.layout.Row
-import androidx.ui.layout.Stack
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ExperimentalLayout
+import androidx.compose.foundation.layout.IntrinsicSize
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/LayoutOffsetSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutOffsetSample.kt
similarity index 85%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/LayoutOffsetSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutOffsetSample.kt
index d076406..fb1de9c 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/LayoutOffsetSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutOffsetSample.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
@@ -23,10 +23,10 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.gesture.tapGestureFilter
 import androidx.compose.foundation.Text
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.offset
-import androidx.ui.layout.offsetPx
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.offsetPx
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/LayoutPaddingSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutPaddingSample.kt
similarity index 87%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/LayoutPaddingSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutPaddingSample.kt
index 6b04826..955570c 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/LayoutPaddingSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/LayoutPaddingSample.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
@@ -22,11 +22,11 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Stack
-import androidx.ui.layout.absolutePadding
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.absolutePadding
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/RelativePaddingFromSamples.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/RelativePaddingFromSamples.kt
similarity index 89%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/RelativePaddingFromSamples.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/RelativePaddingFromSamples.kt
index c3d2be4..afd891e6 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/RelativePaddingFromSamples.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/RelativePaddingFromSamples.kt
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Text
-import androidx.ui.layout.relativePaddingFrom
+import androidx.compose.foundation.layout.relativePaddingFrom
 import androidx.ui.text.FirstBaseline
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/RowSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/RowSample.kt
similarity index 92%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/RowSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/RowSample.kt
index 6ab9aef..1b2ebb3 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/RowSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/RowSample.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/SizeModifierSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SizeModifierSample.kt
similarity index 87%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/SizeModifierSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SizeModifierSample.kt
index 73501b2..a83b087 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/SizeModifierSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SizeModifierSample.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
@@ -24,23 +24,23 @@
 import androidx.compose.foundation.ContentGravity
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Stack
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.defaultMinSizeConstraints
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.height
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredSizeIn
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.size
-import androidx.ui.layout.sizeIn
-import androidx.ui.layout.width
-import androidx.ui.layout.wrapContentHeight
-import androidx.ui.layout.wrapContentSize
-import androidx.ui.layout.wrapContentWidth
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.defaultMinSizeConstraints
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSizeIn
+import androidx.compose.foundation.layout.preferredWidth
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.sizeIn
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.layout.wrapContentSize
+import androidx.compose.foundation.layout.wrapContentWidth
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/SpacerSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SpacerSample.kt
similarity index 81%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/SpacerSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SpacerSample.kt
index a81f5bc..0105995 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/SpacerSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/SpacerSample.kt
@@ -14,17 +14,17 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/StackSample.kt b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/StackSample.kt
similarity index 86%
rename from ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/StackSample.kt
rename to ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/StackSample.kt
index f220396..2acc242 100644
--- a/ui/ui-layout/samples/src/main/java/androidx/ui/layout/samples/StackSample.kt
+++ b/ui/ui-layout/samples/src/main/java/androidx/compose/foundation/layout/samples/StackSample.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.samples
+package androidx.compose.foundation.layout.samples
 
 import androidx.annotation.Sampled
 import androidx.compose.Composable
@@ -22,10 +22,10 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 
 @Sampled
diff --git a/ui/ui-layout/src/androidAndroidTest/AndroidManifest.xml b/ui/ui-layout/src/androidAndroidTest/AndroidManifest.xml
index c3ad434..b78e515 100644
--- a/ui/ui-layout/src/androidAndroidTest/AndroidManifest.xml
+++ b/ui/ui-layout/src/androidAndroidTest/AndroidManifest.xml
@@ -15,7 +15,7 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    package="androidx.ui.layout.test">
+    package="androidx.compose.foundation.layout">
 
     <!--
       ~ Important: disable debuggable for accurate performance results
@@ -28,7 +28,7 @@
         tools:replace="android:debuggable">
 
         <activity
-            android:name="androidx.ui.layout.test.TestActivity"
+            android:name="androidx.compose.foundation.layout.TestActivity"
             android:theme="@android:style/Theme.Material.NoActionBar.Fullscreen" />
     </application>
 </manifest>
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/AlignmentLineTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AlignmentLineTest.kt
similarity index 98%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/AlignmentLineTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AlignmentLineTest.kt
index 6630c15..581f9a8 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/AlignmentLineTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/AlignmentLineTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.test.filters.SmallTest
 import androidx.ui.core.HorizontalAlignmentLine
@@ -26,9 +26,6 @@
 import androidx.ui.core.onPositioned
 import androidx.ui.core.positionInRoot
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSizeIn
-import androidx.ui.layout.relativePaddingFrom
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
 import org.junit.Assert
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/ConstraintLayoutTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/ConstraintLayoutTest.kt
similarity index 98%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/ConstraintLayoutTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/ConstraintLayoutTest.kt
index fbc631c..8f39c7e 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/ConstraintLayoutTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/ConstraintLayoutTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.compose.mutableStateOf
 import androidx.test.filters.SmallTest
@@ -26,19 +26,6 @@
 import androidx.ui.core.positionInParent
 import androidx.compose.foundation.Box
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.ConstrainScope
-import androidx.ui.layout.ConstraintLayout
-import androidx.ui.layout.ConstraintSet2
-import androidx.ui.layout.Dimension
-import androidx.ui.layout.ExperimentalLayout
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.rtl
-import androidx.ui.layout.size
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.runOnIdle
 import androidx.ui.unit.IntSize
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/ContainerTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/ContainerTest.kt
similarity index 98%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/ContainerTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/ContainerTest.kt
index 716da65..cc05f03 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/ContainerTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/ContainerTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.mutableStateOf
@@ -29,12 +29,6 @@
 import androidx.ui.core.onPositioned
 import androidx.ui.core.positionInRoot
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
 import androidx.ui.unit.Dp
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/FlowTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/FlowTest.kt
similarity index 99%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/FlowTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/FlowTest.kt
index 9781347..84bf8e9 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/FlowTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/FlowTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.test.filters.SmallTest
 import androidx.ui.core.LayoutCoordinates
@@ -22,14 +22,6 @@
 import androidx.ui.core.Ref
 import androidx.ui.core.onPositioned
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.ExperimentalLayout
-import androidx.ui.layout.FlowColumn
-import androidx.ui.layout.FlowCrossAxisAlignment
-import androidx.ui.layout.FlowMainAxisAlignment
-import androidx.ui.layout.FlowRow
-import androidx.ui.layout.SizeMode
-import androidx.ui.layout.Stack
 import androidx.ui.unit.IntSize
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/IntrinsicTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/IntrinsicTest.kt
similarity index 98%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/IntrinsicTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/IntrinsicTest.kt
index 70974e1..f856cf9 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/IntrinsicTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/IntrinsicTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.emptyContent
@@ -27,12 +27,6 @@
 import androidx.ui.core.constrainWidth
 import androidx.ui.core.onChildPositioned
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.ExperimentalLayout
-import androidx.ui.layout.Stack
-import androidx.ui.layout.IntrinsicSize
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredWidth
 import androidx.ui.unit.Dp
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutAlignTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutAlignTest.kt
similarity index 97%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutAlignTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutAlignTest.kt
index 910338a..898450a 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutAlignTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutAlignTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.test.filters.SmallTest
@@ -27,15 +27,6 @@
 import androidx.ui.core.enforce
 import androidx.ui.core.onPositioned
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Stack
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.rtl
-import androidx.ui.layout.wrapContentHeight
-import androidx.ui.layout.wrapContentSize
-import androidx.ui.layout.wrapContentWidth
 import androidx.ui.unit.IntOffset
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutAspectRatioTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutAspectRatioTest.kt
similarity index 97%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutAspectRatioTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutAspectRatioTest.kt
index be667da..49bc5fb 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutAspectRatioTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutAspectRatioTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.test.filters.SmallTest
@@ -23,7 +23,6 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.Ref
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.aspectRatio
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
 import org.junit.Assert.assertEquals
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutDirectionModifierTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutDirectionModifierTest.kt
similarity index 93%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutDirectionModifierTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutDirectionModifierTest.kt
index 9c91946..00e2474 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutDirectionModifierTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutDirectionModifierTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.emptyContent
@@ -25,12 +25,6 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.Ref
 import androidx.ui.core.localeLayoutDirection
-import androidx.ui.layout.ExperimentalLayout
-import androidx.ui.layout.IntrinsicSize
-import androidx.ui.layout.Stack
-import androidx.ui.layout.ltr
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.rtl
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNotNull
 import org.junit.Assert.assertTrue
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutOffsetTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutOffsetTest.kt
similarity index 95%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutOffsetTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutOffsetTest.kt
index e25a02d..14c88f0 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutOffsetTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutOffsetTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import android.os.Build
 import androidx.compose.state
@@ -26,13 +26,6 @@
 import androidx.ui.core.positionInRoot
 import androidx.ui.core.onPositioned
 import androidx.compose.foundation.Box
-import androidx.ui.layout.Stack
-import androidx.ui.layout.offset
-import androidx.ui.layout.offsetPx
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.rtl
-import androidx.ui.layout.size
-import androidx.ui.layout.wrapContentSize
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.onNodeWithTag
 import androidx.ui.test.runOnIdle
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutPaddingTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutPaddingTest.kt
similarity index 97%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutPaddingTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutPaddingTest.kt
index b776557..f4822b3 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutPaddingTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutPaddingTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.test.filters.SmallTest
@@ -28,18 +28,6 @@
 import androidx.ui.core.onPositioned
 import androidx.ui.core.positionInRoot
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Column
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Row
-import androidx.ui.layout.Stack
-import androidx.ui.layout.absolutePadding
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.ltr
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.rtl
 import androidx.ui.unit.Dp
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
@@ -126,7 +114,7 @@
     }
 
     /**
-     * Tests the top-level [padding] modifier factory with a single [androidx.ui.layout
+     * Tests the top-level [padding] modifier factory with a single [androidx.compose.foundation.layout
      * .InnerPadding] argument, checking that padding is applied to a child when plenty of space
      * is available for both content and padding.
      */
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutSizeTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutSizeTest.kt
similarity index 97%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutSizeTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutSizeTest.kt
index fc1a54c..d3483d8 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutSizeTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutSizeTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import android.content.res.Resources
 import androidx.compose.Composable
@@ -29,27 +29,6 @@
 import androidx.ui.core.onPositioned
 import androidx.compose.foundation.Box
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.Stack
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.defaultMinSizeConstraints
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.height
-import androidx.ui.layout.heightIn
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredHeightIn
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredSizeIn
-import androidx.ui.layout.preferredWidth
-import androidx.ui.layout.preferredWidthIn
-import androidx.ui.layout.size
-import androidx.ui.layout.sizeIn
-import androidx.ui.layout.width
-import androidx.ui.layout.widthIn
-import androidx.ui.layout.wrapContentSize
 import androidx.ui.unit.Dp
 import androidx.ui.unit.IntSize
 import org.junit.Assert.assertEquals
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutTest.kt
similarity index 98%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutTest.kt
index 1ad5805..1b5f5cf 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/LayoutTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/LayoutTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import android.app.Activity
 import android.os.Handler
@@ -44,10 +44,6 @@
 import androidx.ui.core.setContent
 import androidx.ui.geometry.Offset
 import androidx.ui.geometry.Size
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Constraints
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.InnerPadding
 import androidx.ui.unit.Density
 import androidx.ui.unit.Dp
 import androidx.ui.unit.IntSize
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/OnPositionedTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/OnPositionedTest.kt
similarity index 98%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/OnPositionedTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/OnPositionedTest.kt
index a662196..bb0a8a7 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/OnPositionedTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/OnPositionedTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import android.widget.FrameLayout
 import androidx.compose.Composable
@@ -32,10 +32,6 @@
 import androidx.ui.core.positionInParent
 import androidx.ui.core.positionInRoot
 import androidx.ui.core.setContent
-import androidx.ui.layout.Row
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
 import androidx.ui.unit.Dp
 import androidx.ui.geometry.Offset
 import androidx.ui.unit.dp
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/RowColumnTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/RowColumnTest.kt
similarity index 99%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/RowColumnTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/RowColumnTest.kt
index 227856d..f70cc5a 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/RowColumnTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/RowColumnTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.emptyContent
@@ -31,25 +31,7 @@
 import androidx.ui.core.WithConstraints
 import androidx.ui.core.positionInRoot
 import androidx.ui.core.onPositioned
-import androidx.ui.core.positionInRoot
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.AbsoluteArrangement
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredHeightIn
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidthIn
-import androidx.ui.layout.rtl
-import androidx.ui.layout.wrapContentSize
 import androidx.ui.unit.Dp
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/SpacerTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SpacerTest.kt
similarity index 95%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/SpacerTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SpacerTest.kt
index 98f0baa..b3a400b 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/SpacerTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/SpacerTest.kt
@@ -14,18 +14,12 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.test.filters.MediumTest
 import androidx.ui.core.LayoutCoordinates
 import androidx.ui.core.Modifier
 import androidx.ui.core.onPositioned
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
 import com.google.common.truth.Truth
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/StackTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/StackTest.kt
similarity index 97%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/StackTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/StackTest.kt
index e10ecc1..53e924b 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/StackTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/StackTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.test.filters.SmallTest
@@ -25,14 +25,6 @@
 import androidx.ui.core.Ref
 import androidx.ui.core.onPositioned
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.Stack
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.rtl
-import androidx.ui.layout.wrapContentSize
 import androidx.ui.unit.IntSize
 import androidx.ui.unit.dp
 import org.junit.Assert.assertEquals
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/TestActivity.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/TestActivity.kt
similarity index 95%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/TestActivity.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/TestActivity.kt
index 1c05782f..0616103 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/TestActivity.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/TestActivity.kt
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.activity.ComponentActivity
 import java.util.concurrent.CountDownLatch
diff --git a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/TextLayoutDirectionModifierTest.kt b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/TextLayoutDirectionModifierTest.kt
similarity index 97%
rename from ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/TextLayoutDirectionModifierTest.kt
rename to ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/TextLayoutDirectionModifierTest.kt
index 68a9e6e..7d70741 100644
--- a/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/ui/layout/test/TextLayoutDirectionModifierTest.kt
+++ b/ui/ui-layout/src/androidAndroidTest/kotlin/androidx/compose/foundation/layout/TextLayoutDirectionModifierTest.kt
@@ -14,13 +14,12 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
 import androidx.test.filters.SmallTest
 import androidx.ui.core.LayoutDirection
 import androidx.ui.core.Modifier
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.rtl
 import androidx.ui.text.AnnotatedString
 import androidx.ui.text.CoreText
 import androidx.ui.text.CoreTextField
diff --git a/ui/ui-layout/src/androidMain/AndroidManifest.xml b/ui/ui-layout/src/androidMain/AndroidManifest.xml
index 9a0c1e6..195d65f 100644
--- a/ui/ui-layout/src/androidMain/AndroidManifest.xml
+++ b/ui/ui-layout/src/androidMain/AndroidManifest.xml
@@ -13,4 +13,4 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<manifest package="androidx.ui.layout" />
+<manifest package="androidx.compose.foundation.layout" />
diff --git a/ui/ui-layout/src/androidMain/kotlin/androidx/ui/layout/ConstraintLayout.kt b/ui/ui-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/ConstraintLayout.kt
similarity index 98%
rename from ui/ui-layout/src/androidMain/kotlin/androidx/ui/layout/ConstraintLayout.kt
rename to ui/ui-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/ConstraintLayout.kt
index 6479339..2df1901 100644
--- a/ui/ui-layout/src/androidMain/kotlin/androidx/ui/layout/ConstraintLayout.kt
+++ b/ui/ui-layout/src/androidMain/kotlin/androidx/compose/foundation/layout/ConstraintLayout.kt
@@ -16,7 +16,7 @@
 
 @file:Suppress("Deprecation")
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import android.annotation.SuppressLint
 import android.util.Log
@@ -49,10 +49,10 @@
 import androidx.ui.core.hasFixedHeight
 import androidx.ui.core.hasFixedWidth
 import androidx.ui.core.id
-import androidx.ui.layout.ConstraintSetBuilderScope.Companion.baselineAnchorFunction
-import androidx.ui.layout.ConstraintSetBuilderScope.Companion.horizontalAnchorFunctions
-import androidx.ui.layout.ConstraintSetBuilderScope.Companion.verticalAnchorFunctions
-import androidx.ui.layout.ConstraintSetBuilderScope.Companion.verticalAnchorIndexToFunctionIndex
+import androidx.compose.foundation.layout.ConstraintSetBuilderScope.Companion.baselineAnchorFunction
+import androidx.compose.foundation.layout.ConstraintSetBuilderScope.Companion.horizontalAnchorFunctions
+import androidx.compose.foundation.layout.ConstraintSetBuilderScope.Companion.verticalAnchorFunctions
+import androidx.compose.foundation.layout.ConstraintSetBuilderScope.Companion.verticalAnchorIndexToFunctionIndex
 import androidx.ui.unit.Density
 import androidx.ui.unit.Dp
 import androidx.ui.unit.IntSize
@@ -63,7 +63,7 @@
  * Layout that positions its children according to the constraints between them.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.DemoInlineDSL
+ * @sample androidx.compose.foundation.layout.samples.DemoInlineDSL
  */
 @Composable
 fun ConstraintLayout(
@@ -113,7 +113,7 @@
  * Layout that positions its children according to the constraints between them.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.DemoConstraintSet
+ * @sample androidx.compose.foundation.layout.samples.DemoConstraintSet
  */
 @Composable
 fun ConstraintLayout(
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/AlignmentLine.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/AlignmentLine.kt
similarity index 96%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/AlignmentLine.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/AlignmentLine.kt
index 5525634..7836805 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/AlignmentLine.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/AlignmentLine.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.Stable
@@ -50,8 +50,8 @@
             "the children",
     replaceWith = ReplaceWith(
         "Stack(Modifier.relativePaddingFrom(alignmentLine, before, after), children)",
-        "import androidx.ui.layout.relativePaddingFrom",
-        "import androidx.ui.layout.Stack"
+        "import androidx.compose.foundation.layout.relativePaddingFrom",
+        "import androidx.compose.foundation.layout.Stack"
     )
 )
 @Composable
@@ -111,7 +111,7 @@
  * the container's end edge and the vertical alignment line
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.RelativePaddingFromSample
+ * @sample androidx.compose.foundation.layout.samples.RelativePaddingFromSample
  */
 @Stable
 fun Modifier.relativePaddingFrom(
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Column.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Column.kt
similarity index 91%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Column.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Column.kt
index 3761df3..c17862d 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Column.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Column.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.Immutable
@@ -23,8 +23,8 @@
 import androidx.ui.core.Measured
 import androidx.ui.core.Modifier
 import androidx.ui.core.VerticalAlignmentLine
-import androidx.ui.layout.ColumnScope.alignWithSiblings
-import androidx.ui.layout.RowScope.alignWithSiblings
+import androidx.compose.foundation.layout.ColumnScope.alignWithSiblings
+import androidx.compose.foundation.layout.RowScope.alignWithSiblings
 import androidx.ui.util.annotation.FloatRange
 
 /**
@@ -51,7 +51,7 @@
  *
  * Example usage:
  *
- * @sample androidx.ui.layout.samples.SimpleColumn
+ * @sample androidx.compose.foundation.layout.samples.SimpleColumn
  *
  * @param modifier The modifier to be applied to the Column.
  * @param verticalArrangement The vertical arrangement of the layout's children.
@@ -88,7 +88,7 @@
      * Position the element horizontally within the [Column] according to [align].
      *
      * Example usage:
-     * @sample androidx.ui.layout.samples.SimpleGravityInColumn
+     * @sample androidx.compose.foundation.layout.samples.SimpleGravityInColumn
      */
     @Stable
     fun Modifier.gravity(align: Alignment.Horizontal) = this + HorizontalGravityModifier(align)
@@ -107,7 +107,7 @@
      * as if it had [Alignment.Start] gravity.
      *
      * Example usage:
-     * @sample androidx.ui.layout.samples.SimpleRelativeToSiblingsInColumn
+     * @sample androidx.compose.foundation.layout.samples.SimpleRelativeToSiblingsInColumn
      */
     @Stable
     fun Modifier.alignWithSiblings(alignmentLine: VerticalAlignmentLine) =
@@ -121,7 +121,7 @@
      * Otherwise, the element is allowed to be smaller - this will result in [Column] being smaller,
      * as the unused allocated height will not be redistributed to other siblings.
      *
-     * @sample androidx.ui.layout.samples.SimpleColumn
+     * @sample androidx.compose.foundation.layout.samples.SimpleColumn
      */
     @Stable
     fun Modifier.weight(
@@ -148,7 +148,7 @@
      * as if it had [Alignment.Start] gravity.
      *
      * Example usage:
-     * @sample androidx.ui.layout.samples.SimpleRelativeToSiblings
+     * @sample androidx.compose.foundation.layout.samples.SimpleRelativeToSiblings
      */
     @Stable
     fun Modifier.alignWithSiblings(
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/DpConstraints.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/DpConstraints.kt
similarity index 98%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/DpConstraints.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/DpConstraints.kt
index fcdbe26..be13777 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/DpConstraints.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/DpConstraints.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Immutable
 import androidx.compose.Stable
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/ExperimentalLayout.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/ExperimentalLayout.kt
similarity index 94%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/ExperimentalLayout.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/ExperimentalLayout.kt
index 853706a..63fdeeb 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/ExperimentalLayout.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/ExperimentalLayout.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 @RequiresOptIn("The API of this layout is experimental and is likely to change in the future.")
 annotation class ExperimentalLayout
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Flow.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Flow.kt
similarity index 97%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Flow.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Flow.kt
index 437afd1..e1f4117 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Flow.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Flow.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.ui.core.Alignment
@@ -35,7 +35,7 @@
  *
  * Example usage:
  *
- * @sample androidx.ui.layout.samples.SimpleFlowRow
+ * @sample androidx.compose.foundation.layout.samples.SimpleFlowRow
  *
  * @param mainAxisSize The size of the layout in the main axis direction.
  * @param mainAxisAlignment The alignment of each row's children in the main axis direction.
@@ -75,7 +75,7 @@
  *
  * Example usage:
  *
- * @sample androidx.ui.layout.samples.SimpleFlowColumn
+ * @sample androidx.compose.foundation.layout.samples.SimpleFlowColumn
  *
  * @param mainAxisSize The size of the layout in the main axis direction.
  * @param mainAxisAlignment The alignment of each column's children in the main axis direction.
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Intrinsic.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Intrinsic.kt
similarity index 96%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Intrinsic.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Intrinsic.kt
index a16a59c..d19ba5a 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Intrinsic.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Intrinsic.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.Stable
@@ -38,10 +38,10 @@
  * Also see [preferredWidth] and [preferredWidthIn] for other options to set the preferred width.
  *
  * Example usage for min intrinsic:
- * @sample androidx.ui.layout.samples.SameWidthBoxes
+ * @sample androidx.compose.foundation.layout.samples.SameWidthBoxes
  *
  * Example usage for max intrinsic:
- * @sample androidx.ui.layout.samples.SameWidthTextBoxes
+ * @sample androidx.compose.foundation.layout.samples.SameWidthTextBoxes
  */
 @ExperimentalLayout
 @Stable
@@ -59,10 +59,10 @@
  * Also see [preferredHeight] and [preferredHeightIn] for other options to set the preferred height.
  *
  * Example usage for min intrinsic:
- * @sample androidx.ui.layout.samples.MatchParentDividerForText
+ * @sample androidx.compose.foundation.layout.samples.MatchParentDividerForText
  *
  * Example usage for max intrinsic:
- * @sample androidx.ui.layout.samples.MatchParentDividerForAspectRatio
+ * @sample androidx.compose.foundation.layout.samples.MatchParentDividerForAspectRatio
  */
 @ExperimentalLayout
 @Stable
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutAspectRatio.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutAspectRatio.kt
similarity index 97%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutAspectRatio.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutAspectRatio.kt
index 4c891a2..858842f5 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutAspectRatio.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutAspectRatio.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Stable
 import androidx.ui.core.Constraints
@@ -37,7 +37,7 @@
  * The size in the other dimension is determined by the aspect ratio.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleAspectRatio
+ * @sample androidx.compose.foundation.layout.samples.SimpleAspectRatio
  *
  * @param ratio the desired width/height positive ratio
  */
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutDirections.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutDirections.kt
similarity index 98%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutDirections.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutDirections.kt
index 5253a30..4a275ff 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutDirections.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutDirections.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.ui.core.Constraints
 import androidx.ui.core.IntrinsicMeasurable
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutOffset.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutOffset.kt
similarity index 92%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutOffset.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutOffset.kt
index 96a7168..2bdf3a1 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutOffset.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutOffset.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Stable
 import androidx.compose.State
@@ -33,7 +33,7 @@
  * Offset the content by ([x] dp, [y] dp). The offsets can be positive as well as non positive.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.LayoutOffsetModifier
+ * @sample androidx.compose.foundation.layout.samples.LayoutOffsetModifier
  */
 @Stable
 fun Modifier.offset(x: Dp = 0.dp, y: Dp = 0.dp) = this + OffsetModifier(x, y)
@@ -43,7 +43,7 @@
  * This modifier is designed to be used for offsets that change, possibly due to user interactions.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.LayoutOffsetPxModifier
+ * @sample androidx.compose.foundation.layout.samples.LayoutOffsetPxModifier
  */
 fun Modifier.offsetPx(
     x: State<Float> = mutableStateOf(0f),
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutPadding.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutPadding.kt
similarity index 92%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutPadding.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutPadding.kt
index 54762d8..a2791bd 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutPadding.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutPadding.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Immutable
 import androidx.compose.Stable
@@ -39,7 +39,7 @@
  * Negative padding is not permitted. See [offset].
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.PaddingModifier
+ * @sample androidx.compose.foundation.layout.samples.PaddingModifier
  */
 @Stable
 fun Modifier.padding(
@@ -64,7 +64,7 @@
  * Negative padding is not permitted. See [offset].
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SymmetricPaddingModifier
+ * @sample androidx.compose.foundation.layout.samples.SymmetricPaddingModifier
  */
 @Stable
 fun Modifier.padding(
@@ -86,7 +86,7 @@
  * Negative padding is not permitted. See [offset].
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.PaddingAllModifier
+ * @sample androidx.compose.foundation.layout.samples.PaddingAllModifier
  */
 @Stable
 fun Modifier.padding(all: Dp) =
@@ -100,7 +100,7 @@
  * Negative padding is not permitted. See [offset].
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.PaddingInnerPaddingModifier
+ * @sample androidx.compose.foundation.layout.samples.PaddingInnerPaddingModifier
  */
 fun Modifier.padding(padding: InnerPadding) =
     this + PaddingModifier(
@@ -120,7 +120,7 @@
  * Negative padding is not permitted. See [offset].
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.AbsolutePaddingModifier
+ * @sample androidx.compose.foundation.layout.samples.AbsolutePaddingModifier
  */
 @Stable
 fun Modifier.absolutePadding(
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutScopeMarker.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutScopeMarker.kt
similarity index 93%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutScopeMarker.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutScopeMarker.kt
index 09aac5a..b90fcf3 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutScopeMarker.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutScopeMarker.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 @DslMarker
 annotation class LayoutScopeMarker
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutSize.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutSize.kt
similarity index 94%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutSize.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutSize.kt
index 21e2b15..f67f65a 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/LayoutSize.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/LayoutSize.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Stable
 import androidx.ui.core.Alignment
@@ -44,7 +44,7 @@
  * See [preferredWidthIn], [preferredHeightIn] or [preferredSizeIn] to set a preferred size range.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimplePreferredWidthModifier
+ * @sample androidx.compose.foundation.layout.samples.SimplePreferredWidthModifier
  */
 @Stable
 fun Modifier.preferredWidth(width: Dp) = preferredSizeIn(minWidth = width, maxWidth = width)
@@ -58,7 +58,7 @@
  * See [preferredWidthIn], [preferredHeightIn] or [preferredSizeIn] to set a preferred size range.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimplePreferredHeightModifier
+ * @sample androidx.compose.foundation.layout.samples.SimplePreferredHeightModifier
  */
 @Stable
 fun Modifier.preferredHeight(height: Dp) = preferredSizeIn(minHeight = height, maxHeight = height)
@@ -72,7 +72,7 @@
  * See [preferredWidthIn], [preferredHeightIn] or [preferredSizeIn] to set a preferred size range.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimplePreferredSizeModifier
+ * @sample androidx.compose.foundation.layout.samples.SimplePreferredSizeModifier
  */
 @Stable
 fun Modifier.preferredSize(size: Dp) = preferredSizeIn(size, size, size, size)
@@ -87,7 +87,7 @@
  * See [preferredWidthIn], [preferredHeightIn] or [preferredSizeIn] to set a preferred size range.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimplePreferredSizeModifier
+ * @sample androidx.compose.foundation.layout.samples.SimplePreferredSizeModifier
  */
 @Stable
 fun Modifier.preferredSize(width: Dp, height: Dp) = preferredSizeIn(
@@ -162,7 +162,7 @@
  * constraints allow it.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleWidthModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleWidthModifier
  */
 @Stable
 fun Modifier.width(width: Dp) = sizeIn(minWidth = width, maxWidth = width)
@@ -180,7 +180,7 @@
  * constraints allow it.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleHeightModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleHeightModifier
  */
 @Stable
 fun Modifier.height(height: Dp) = sizeIn(minHeight = height, maxHeight = height)
@@ -198,7 +198,7 @@
  * constraints allow it.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleSizeModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleSizeModifier
  */
 @Stable
 fun Modifier.size(size: Dp) = sizeIn(size, size, size, size)
@@ -216,7 +216,7 @@
  * constraints allow it.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleWidthModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleWidthModifier
  */
 @Stable
 fun Modifier.size(width: Dp, height: Dp) = sizeIn(
@@ -290,7 +290,7 @@
  * modifier will have no effect.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleFillWidthModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleFillWidthModifier
  */
 @Stable
 fun Modifier.fillMaxWidth() = this + FillModifier(Direction.Horizontal)
@@ -302,7 +302,7 @@
  * modifier will have no effect.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleFillHeightModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleFillHeightModifier
  */
 @Stable
 fun Modifier.fillMaxHeight() = this + FillModifier(Direction.Vertical)
@@ -315,7 +315,7 @@
  * is [Constraints.Infinity] this modifier will have no effect in that dimension.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleFillModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleFillModifier
  */
 @Stable
 fun Modifier.fillMaxSize() = this + FillModifier(Direction.Both)
@@ -326,7 +326,7 @@
  * than the minimum width constraint, [align] it within that minimum width space.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleWrapContentHorizontallyAlignedModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleWrapContentHorizontallyAlignedModifier
  */
 @Stable
 // TODO(popam): avoid recreating modifier for common align
@@ -341,7 +341,7 @@
  * than the minimum height constraint, [align] it within that minimum height space.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleWrapContentVerticallyAlignedModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleWrapContentVerticallyAlignedModifier
  */
 // TODO(popam): avoid recreating modifier for common align
 @Stable
@@ -357,7 +357,7 @@
  * within that minimum sized space.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.SimpleWrapContentAlignedModifier
+ * @sample androidx.compose.foundation.layout.samples.SimpleWrapContentAlignedModifier
  */
 @Stable
 fun Modifier.wrapContentSize(align: Alignment = Alignment.Center) =
@@ -373,7 +373,7 @@
  * while still allowing it to be overidden with smaller min sizes across usages.
  *
  * Example usage:
- * @sample androidx.ui.layout.samples.DefaultMinSizeConstraintsSample
+ * @sample androidx.compose.foundation.layout.samples.DefaultMinSizeConstraintsSample
  */
 @Stable
 fun Modifier.defaultMinSizeConstraints(
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Row.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Row.kt
similarity index 94%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Row.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Row.kt
index ece82731..6e361cf 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Row.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Row.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.Immutable
@@ -49,7 +49,7 @@
  *
  * Example usage:
  *
- * @sample androidx.ui.layout.samples.SimpleRow
+ * @sample androidx.compose.foundation.layout.samples.SimpleRow
  *
  * @param modifier The modifier to be applied to the Row.
  * @param horizontalArrangement The horizontal arrangement of the layout's children.
@@ -86,7 +86,7 @@
      * Position the element vertically within the [Row] according to [align].
      *
      * Example usage:
-     * @sample androidx.ui.layout.samples.SimpleGravityInRow
+     * @sample androidx.compose.foundation.layout.samples.SimpleGravityInRow
      */
     @Stable
     fun Modifier.gravity(align: Alignment.Vertical) = this + VerticalGravityModifier(align)
@@ -107,7 +107,7 @@
      * as if it had [Alignment.Top] gravity.
      *
      * Example usage:
-     * @sample androidx.ui.layout.samples.SimpleRelativeToSiblingsInRow
+     * @sample androidx.compose.foundation.layout.samples.SimpleRelativeToSiblingsInRow
      */
     @Stable
     fun Modifier.alignWithSiblings(alignmentLine: HorizontalAlignmentLine) =
@@ -146,7 +146,7 @@
      * as if it had [Alignment.Top] gravity.
      *
      * Example usage:
-     * @sample androidx.ui.layout.samples.SimpleRelativeToSiblings
+     * @sample androidx.compose.foundation.layout.samples.SimpleRelativeToSiblings
      */
     @Stable
     fun Modifier.alignWithSiblings(
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/RowColumnImpl.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/RowColumnImpl.kt
similarity index 99%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/RowColumnImpl.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/RowColumnImpl.kt
index e968409..97f4f42 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/RowColumnImpl.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/RowColumnImpl.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.Immutable
@@ -30,8 +30,8 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.ParentDataModifier
 import androidx.ui.core.Placeable
-import androidx.ui.layout.LayoutOrientation.Horizontal
-import androidx.ui.layout.LayoutOrientation.Vertical
+import androidx.compose.foundation.layout.LayoutOrientation.Horizontal
+import androidx.compose.foundation.layout.LayoutOrientation.Vertical
 import androidx.ui.unit.Density
 import androidx.ui.util.fastForEach
 import kotlin.math.max
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Spacer.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Spacer.kt
similarity index 92%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Spacer.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Spacer.kt
index 8a098b3..30c39d5 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Spacer.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Spacer.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.emptyContent
@@ -27,7 +27,7 @@
  * Component that represents an empty space layout, whose size can be defined using the [LayoutWidth],
  * [LayoutHeight] and [LayoutSize] modifiers.
  *
- * @sample androidx.ui.layout.samples.SpacerExample
+ * @sample androidx.compose.foundation.layout.samples.SpacerExample
  *
  * @param modifier modifiers to set to this spacer
  */
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Stack.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Stack.kt
similarity index 97%
rename from ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Stack.kt
rename to ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Stack.kt
index 9e8e654..a147306 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Stack.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/Stack.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout
+package androidx.compose.foundation.layout
 
 import androidx.compose.Composable
 import androidx.compose.Immutable
@@ -39,7 +39,7 @@
  *
  * Example usage:
  *
- * @sample androidx.ui.layout.samples.SimpleStack
+ * @sample androidx.compose.foundation.layout.samples.SimpleStack
  */
 @Composable
 fun Stack(
diff --git a/ui/ui-layout/src/test/java/androidx/ui/layout/test/DpConstraintsTest.kt b/ui/ui-layout/src/test/java/androidx/compose/foundation/layout/DpConstraintsTest.kt
similarity index 92%
rename from ui/ui-layout/src/test/java/androidx/ui/layout/test/DpConstraintsTest.kt
rename to ui/ui-layout/src/test/java/androidx/compose/foundation/layout/DpConstraintsTest.kt
index b3bd4d9..3815d2c 100644
--- a/ui/ui-layout/src/test/java/androidx/ui/layout/test/DpConstraintsTest.kt
+++ b/ui/ui-layout/src/test/java/androidx/compose/foundation/layout/DpConstraintsTest.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2019 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,16 +14,8 @@
  * limitations under the License.
  */
 
-package androidx.ui.layout.test
+package androidx.compose.foundation.layout
 
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.enforce
-import androidx.ui.layout.hasBoundedHeight
-import androidx.ui.layout.hasBoundedWidth
-import androidx.ui.layout.hasFixedHeight
-import androidx.ui.layout.hasFixedWidth
-import androidx.ui.layout.isZero
-import androidx.ui.layout.offset
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 import org.junit.Assert.assertFalse
diff --git a/ui/ui-material/api/0.1.0-dev16.txt b/ui/ui-material/api/0.1.0-dev16.txt
index 265e627..c07ad46 100644
--- a/ui/ui-material/api/0.1.0-dev16.txt
+++ b/ui/ui-material/api/0.1.0-dev16.txt
@@ -14,9 +14,9 @@
   }
 
   public final class AppBarKt {
-    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
-    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
+    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public enum BottomDrawerState {
@@ -28,7 +28,7 @@
   }
 
   public final class BottomNavigationKt {
-    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.Composable public static void BottomNavigationItem-dOPBtLY(kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> text = emptyContent(), boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, androidx.ui.core.Modifier modifier = Modifier, boolean alwaysShowLabels = true, long activeColor = contentColor(), long inactiveColor = EmphasisAmbient.current.medium.applyEmphasis(activeColor));
   }
 
@@ -37,12 +37,12 @@
     method public long getDefaultDisabledContentColor();
     method public float getDefaultIconSize();
     method public float getDefaultIconSpacing();
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
     method public float getDefaultMinHeight();
     method public float getDefaultMinWidth();
     property public final float DefaultIconSize;
     property public final float DefaultIconSpacing;
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     property public final float DefaultMinHeight;
     property public final float DefaultMinWidth;
     property public final long defaultDisabledBackgroundColor;
@@ -51,9 +51,9 @@
   }
 
   public final class ButtonKt {
-    method @androidx.compose.Composable public static void Button-5Wokvs4(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void OutlinedButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void TextButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void Button-wxP3gvE(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void OutlinedButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void TextButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public final class CardKt {
@@ -171,7 +171,7 @@
   }
 
   public final class MenuKt {
-    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> dropdownContent);
+    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> dropdownContent);
     method @androidx.compose.Composable public static void DropdownMenuItem(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
@@ -226,7 +226,7 @@
   public final class ScaffoldKt {
     method @androidx.compose.Composable public static void Scaffold-1z1vkZI(androidx.ui.material.ScaffoldState scaffoldState = remember({ 
     return <init>()
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.ui.layout.InnerPadding,kotlin.Unit> bodyContent);
+}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.InnerPadding,kotlin.Unit> bodyContent);
   }
 
   @androidx.compose.Stable public final class ScaffoldState {
@@ -304,8 +304,8 @@
   }
 
   public final class TextButtonConstants {
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     field public static final androidx.ui.material.TextButtonConstants INSTANCE;
   }
 
diff --git a/ui/ui-material/api/current.txt b/ui/ui-material/api/current.txt
index 265e627..c07ad46 100644
--- a/ui/ui-material/api/current.txt
+++ b/ui/ui-material/api/current.txt
@@ -14,9 +14,9 @@
   }
 
   public final class AppBarKt {
-    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
-    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
+    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public enum BottomDrawerState {
@@ -28,7 +28,7 @@
   }
 
   public final class BottomNavigationKt {
-    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.Composable public static void BottomNavigationItem-dOPBtLY(kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> text = emptyContent(), boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, androidx.ui.core.Modifier modifier = Modifier, boolean alwaysShowLabels = true, long activeColor = contentColor(), long inactiveColor = EmphasisAmbient.current.medium.applyEmphasis(activeColor));
   }
 
@@ -37,12 +37,12 @@
     method public long getDefaultDisabledContentColor();
     method public float getDefaultIconSize();
     method public float getDefaultIconSpacing();
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
     method public float getDefaultMinHeight();
     method public float getDefaultMinWidth();
     property public final float DefaultIconSize;
     property public final float DefaultIconSpacing;
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     property public final float DefaultMinHeight;
     property public final float DefaultMinWidth;
     property public final long defaultDisabledBackgroundColor;
@@ -51,9 +51,9 @@
   }
 
   public final class ButtonKt {
-    method @androidx.compose.Composable public static void Button-5Wokvs4(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void OutlinedButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void TextButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void Button-wxP3gvE(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void OutlinedButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void TextButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public final class CardKt {
@@ -171,7 +171,7 @@
   }
 
   public final class MenuKt {
-    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> dropdownContent);
+    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> dropdownContent);
     method @androidx.compose.Composable public static void DropdownMenuItem(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
@@ -226,7 +226,7 @@
   public final class ScaffoldKt {
     method @androidx.compose.Composable public static void Scaffold-1z1vkZI(androidx.ui.material.ScaffoldState scaffoldState = remember({ 
     return <init>()
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.ui.layout.InnerPadding,kotlin.Unit> bodyContent);
+}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.InnerPadding,kotlin.Unit> bodyContent);
   }
 
   @androidx.compose.Stable public final class ScaffoldState {
@@ -304,8 +304,8 @@
   }
 
   public final class TextButtonConstants {
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     field public static final androidx.ui.material.TextButtonConstants INSTANCE;
   }
 
diff --git a/ui/ui-material/api/public_plus_experimental_0.1.0-dev16.txt b/ui/ui-material/api/public_plus_experimental_0.1.0-dev16.txt
index 265e627..c07ad46 100644
--- a/ui/ui-material/api/public_plus_experimental_0.1.0-dev16.txt
+++ b/ui/ui-material/api/public_plus_experimental_0.1.0-dev16.txt
@@ -14,9 +14,9 @@
   }
 
   public final class AppBarKt {
-    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
-    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
+    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public enum BottomDrawerState {
@@ -28,7 +28,7 @@
   }
 
   public final class BottomNavigationKt {
-    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.Composable public static void BottomNavigationItem-dOPBtLY(kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> text = emptyContent(), boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, androidx.ui.core.Modifier modifier = Modifier, boolean alwaysShowLabels = true, long activeColor = contentColor(), long inactiveColor = EmphasisAmbient.current.medium.applyEmphasis(activeColor));
   }
 
@@ -37,12 +37,12 @@
     method public long getDefaultDisabledContentColor();
     method public float getDefaultIconSize();
     method public float getDefaultIconSpacing();
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
     method public float getDefaultMinHeight();
     method public float getDefaultMinWidth();
     property public final float DefaultIconSize;
     property public final float DefaultIconSpacing;
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     property public final float DefaultMinHeight;
     property public final float DefaultMinWidth;
     property public final long defaultDisabledBackgroundColor;
@@ -51,9 +51,9 @@
   }
 
   public final class ButtonKt {
-    method @androidx.compose.Composable public static void Button-5Wokvs4(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void OutlinedButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void TextButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void Button-wxP3gvE(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void OutlinedButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void TextButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public final class CardKt {
@@ -171,7 +171,7 @@
   }
 
   public final class MenuKt {
-    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> dropdownContent);
+    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> dropdownContent);
     method @androidx.compose.Composable public static void DropdownMenuItem(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
@@ -226,7 +226,7 @@
   public final class ScaffoldKt {
     method @androidx.compose.Composable public static void Scaffold-1z1vkZI(androidx.ui.material.ScaffoldState scaffoldState = remember({ 
     return <init>()
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.ui.layout.InnerPadding,kotlin.Unit> bodyContent);
+}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.InnerPadding,kotlin.Unit> bodyContent);
   }
 
   @androidx.compose.Stable public final class ScaffoldState {
@@ -304,8 +304,8 @@
   }
 
   public final class TextButtonConstants {
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     field public static final androidx.ui.material.TextButtonConstants INSTANCE;
   }
 
diff --git a/ui/ui-material/api/public_plus_experimental_current.txt b/ui/ui-material/api/public_plus_experimental_current.txt
index 265e627..c07ad46 100644
--- a/ui/ui-material/api/public_plus_experimental_current.txt
+++ b/ui/ui-material/api/public_plus_experimental_current.txt
@@ -14,9 +14,9 @@
   }
 
   public final class AppBarKt {
-    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
-    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
+    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public enum BottomDrawerState {
@@ -28,7 +28,7 @@
   }
 
   public final class BottomNavigationKt {
-    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.Composable public static void BottomNavigationItem-dOPBtLY(kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> text = emptyContent(), boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, androidx.ui.core.Modifier modifier = Modifier, boolean alwaysShowLabels = true, long activeColor = contentColor(), long inactiveColor = EmphasisAmbient.current.medium.applyEmphasis(activeColor));
   }
 
@@ -37,12 +37,12 @@
     method public long getDefaultDisabledContentColor();
     method public float getDefaultIconSize();
     method public float getDefaultIconSpacing();
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
     method public float getDefaultMinHeight();
     method public float getDefaultMinWidth();
     property public final float DefaultIconSize;
     property public final float DefaultIconSpacing;
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     property public final float DefaultMinHeight;
     property public final float DefaultMinWidth;
     property public final long defaultDisabledBackgroundColor;
@@ -51,9 +51,9 @@
   }
 
   public final class ButtonKt {
-    method @androidx.compose.Composable public static void Button-5Wokvs4(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void OutlinedButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void TextButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void Button-wxP3gvE(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void OutlinedButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void TextButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public final class CardKt {
@@ -171,7 +171,7 @@
   }
 
   public final class MenuKt {
-    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> dropdownContent);
+    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> dropdownContent);
     method @androidx.compose.Composable public static void DropdownMenuItem(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
@@ -226,7 +226,7 @@
   public final class ScaffoldKt {
     method @androidx.compose.Composable public static void Scaffold-1z1vkZI(androidx.ui.material.ScaffoldState scaffoldState = remember({ 
     return <init>()
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.ui.layout.InnerPadding,kotlin.Unit> bodyContent);
+}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.InnerPadding,kotlin.Unit> bodyContent);
   }
 
   @androidx.compose.Stable public final class ScaffoldState {
@@ -304,8 +304,8 @@
   }
 
   public final class TextButtonConstants {
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     field public static final androidx.ui.material.TextButtonConstants INSTANCE;
   }
 
diff --git a/ui/ui-material/api/restricted_0.1.0-dev16.txt b/ui/ui-material/api/restricted_0.1.0-dev16.txt
index 676b622..038854a 100644
--- a/ui/ui-material/api/restricted_0.1.0-dev16.txt
+++ b/ui/ui-material/api/restricted_0.1.0-dev16.txt
@@ -14,9 +14,9 @@
   }
 
   public final class AppBarKt {
-    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
-    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
+    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public enum BottomDrawerState {
@@ -28,7 +28,7 @@
   }
 
   public final class BottomNavigationKt {
-    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.Composable public static void BottomNavigationItem-dOPBtLY(kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> text = emptyContent(), boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, androidx.ui.core.Modifier modifier = Modifier, boolean alwaysShowLabels = true, long activeColor = contentColor(), long inactiveColor = EmphasisAmbient.current.medium.applyEmphasis(activeColor));
   }
 
@@ -37,12 +37,12 @@
     method public long getDefaultDisabledContentColor();
     method public float getDefaultIconSize();
     method public float getDefaultIconSpacing();
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
     method public float getDefaultMinHeight();
     method public float getDefaultMinWidth();
     property public final float DefaultIconSize;
     property public final float DefaultIconSpacing;
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     property public final float DefaultMinHeight;
     property public final float DefaultMinWidth;
     property public final long defaultDisabledBackgroundColor;
@@ -51,9 +51,9 @@
   }
 
   public final class ButtonKt {
-    method @androidx.compose.Composable public static void Button-5Wokvs4(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void OutlinedButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void TextButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void Button-wxP3gvE(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void OutlinedButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void TextButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     field @kotlin.PublishedApi internal static final float OutlinedStrokeOpacity = 0.12f;
   }
 
@@ -172,7 +172,7 @@
   }
 
   public final class MenuKt {
-    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> dropdownContent);
+    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> dropdownContent);
     method @androidx.compose.Composable public static void DropdownMenuItem(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
@@ -227,7 +227,7 @@
   public final class ScaffoldKt {
     method @androidx.compose.Composable public static void Scaffold-1z1vkZI(androidx.ui.material.ScaffoldState scaffoldState = remember({ 
     return <init>()
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.ui.layout.InnerPadding,kotlin.Unit> bodyContent);
+}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.InnerPadding,kotlin.Unit> bodyContent);
   }
 
   @androidx.compose.Stable public final class ScaffoldState {
@@ -305,8 +305,8 @@
   }
 
   public final class TextButtonConstants {
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     field public static final androidx.ui.material.TextButtonConstants INSTANCE;
   }
 
diff --git a/ui/ui-material/api/restricted_current.txt b/ui/ui-material/api/restricted_current.txt
index 676b622..038854a 100644
--- a/ui/ui-material/api/restricted_current.txt
+++ b/ui/ui-material/api/restricted_current.txt
@@ -14,9 +14,9 @@
   }
 
   public final class AppBarKt {
-    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
-    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomAppBar-ZxkkWmU(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), androidx.ui.graphics.Shape? cutoutShape = null, float elevation = androidx.ui.material.AppBarKt.BottomAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void TopAppBar-FikZsjU(kotlin.jvm.functions.Function0<kotlin.Unit> title, androidx.ui.core.Modifier modifier = Modifier, kotlin.jvm.functions.Function0<kotlin.Unit>? navigationIcon = null, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> actions = {}, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation);
+    method @androidx.compose.Composable public static void TopAppBar-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.AppBarKt.TopAppBarElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
   }
 
   public enum BottomDrawerState {
@@ -28,7 +28,7 @@
   }
 
   public final class BottomNavigationKt {
-    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void BottomNavigation-oP-1cd0(androidx.ui.core.Modifier modifier = Modifier, long backgroundColor = MaterialTheme.colors.primarySurface, long contentColor = contentColorFor(backgroundColor), float elevation = androidx.ui.material.BottomNavigationKt.BottomNavigationElevation, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     method @androidx.compose.Composable public static void BottomNavigationItem-dOPBtLY(kotlin.jvm.functions.Function0<kotlin.Unit> icon, kotlin.jvm.functions.Function0<kotlin.Unit> text = emptyContent(), boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onSelected, androidx.ui.core.Modifier modifier = Modifier, boolean alwaysShowLabels = true, long activeColor = contentColor(), long inactiveColor = EmphasisAmbient.current.medium.applyEmphasis(activeColor));
   }
 
@@ -37,12 +37,12 @@
     method public long getDefaultDisabledContentColor();
     method public float getDefaultIconSize();
     method public float getDefaultIconSpacing();
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
     method public float getDefaultMinHeight();
     method public float getDefaultMinWidth();
     property public final float DefaultIconSize;
     property public final float DefaultIconSpacing;
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     property public final float DefaultMinHeight;
     property public final float DefaultMinWidth;
     property public final long defaultDisabledBackgroundColor;
@@ -51,9 +51,9 @@
   }
 
   public final class ButtonKt {
-    method @androidx.compose.Composable public static void Button-5Wokvs4(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void OutlinedButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
-    method @androidx.compose.Composable public static inline void TextButton-LSc0Q_U(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.ui.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.ui.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static void Button-wxP3gvE(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 2.dp, float disabledElevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = MaterialTheme.colors.primary, long disabledBackgroundColor = ButtonConstants.defaultDisabledBackgroundColor, long contentColor = contentColorFor(backgroundColor), long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void OutlinedButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = Border(1.dp, MaterialTheme.colors.onSurface.copy(OutlinedStrokeOpacity)), long backgroundColor = MaterialTheme.colors.surface, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = ButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
+    method @androidx.compose.Composable public static inline void TextButton-JbNc7zM(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, float elevation = 0.dp, androidx.ui.graphics.Shape shape = small, androidx.compose.foundation.Border? border = null, long backgroundColor = Color.Transparent, long contentColor = MaterialTheme.colors.primary, long disabledContentColor = ButtonConstants.defaultDisabledContentColor, androidx.compose.foundation.layout.InnerPadding padding = TextButtonConstants.DefaultInnerPadding, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.RowScope,kotlin.Unit> content);
     field @kotlin.PublishedApi internal static final float OutlinedStrokeOpacity = 0.12f;
   }
 
@@ -172,7 +172,7 @@
   }
 
   public final class MenuKt {
-    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.ui.layout.ColumnScope,kotlin.Unit> dropdownContent);
+    method @androidx.compose.Composable public static void DropdownMenu-1DTJxuk(kotlin.jvm.functions.Function0<kotlin.Unit> toggle, boolean expanded, kotlin.jvm.functions.Function0<kotlin.Unit> onDismissRequest, androidx.ui.core.Modifier toggleModifier = Modifier, long dropdownOffset = Position(0.dp, 0.dp), androidx.ui.core.Modifier dropdownModifier = Modifier, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.ColumnScope,kotlin.Unit> dropdownContent);
     method @androidx.compose.Composable public static void DropdownMenuItem(kotlin.jvm.functions.Function0<kotlin.Unit> onClick, androidx.ui.core.Modifier modifier = Modifier, boolean enabled = true, kotlin.jvm.functions.Function0<kotlin.Unit> content);
   }
 
@@ -227,7 +227,7 @@
   public final class ScaffoldKt {
     method @androidx.compose.Composable public static void Scaffold-1z1vkZI(androidx.ui.material.ScaffoldState scaffoldState = remember({ 
     return <init>()
-}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.ui.layout.InnerPadding,kotlin.Unit> bodyContent);
+}), kotlin.jvm.functions.Function0<kotlin.Unit>? topBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? bottomBar = null, kotlin.jvm.functions.Function0<kotlin.Unit>? floatingActionButton = null, androidx.ui.material.Scaffold.FabPosition floatingActionButtonPosition = androidx.ui.material.Scaffold.FabPosition.End, boolean isFloatingActionButtonDocked = false, kotlin.jvm.functions.Function0<kotlin.Unit>? drawerContent = null, androidx.ui.graphics.Shape drawerShape = large, float drawerElevation = DrawerConstants.DefaultElevation, long backgroundColor = MaterialTheme.colors.background, kotlin.jvm.functions.Function1<? super androidx.compose.foundation.layout.InnerPadding,kotlin.Unit> bodyContent);
   }
 
   @androidx.compose.Stable public final class ScaffoldState {
@@ -305,8 +305,8 @@
   }
 
   public final class TextButtonConstants {
-    method public androidx.ui.layout.InnerPadding getDefaultInnerPadding();
-    property public final androidx.ui.layout.InnerPadding DefaultInnerPadding;
+    method public androidx.compose.foundation.layout.InnerPadding getDefaultInnerPadding();
+    property public final androidx.compose.foundation.layout.InnerPadding DefaultInnerPadding;
     field public static final androidx.ui.material.TextButtonConstants INSTANCE;
   }
 
diff --git a/ui/ui-material/icons/extended/src/androidTest/java/androidx/ui/material/icons/test/IconComparisonTest.kt b/ui/ui-material/icons/extended/src/androidTest/java/androidx/ui/material/icons/test/IconComparisonTest.kt
index cef0373..6fe0529 100644
--- a/ui/ui-material/icons/extended/src/androidTest/java/androidx/ui/material/icons/test/IconComparisonTest.kt
+++ b/ui/ui-material/icons/extended/src/androidTest/java/androidx/ui/material/icons/test/IconComparisonTest.kt
@@ -36,9 +36,9 @@
 import androidx.ui.graphics.ColorFilter
 import androidx.ui.graphics.vector.VectorAsset
 import androidx.ui.graphics.vector.VectorPainter
-import androidx.ui.layout.Row
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.res.vectorResource
 import androidx.ui.test.android.AndroidComposeTestRule
 import androidx.ui.test.captureToBitmap
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarDemo.kt
index ea5c90f..f497bb4 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/AppBarDemo.kt
@@ -18,8 +18,8 @@
 
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
 import androidx.ui.material.samples.SimpleBottomAppBar
 import androidx.ui.material.samples.SimpleTopAppBar
 
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/BottomNavigationDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/BottomNavigationDemo.kt
index 74de35b..6258cc4 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/BottomNavigationDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/BottomNavigationDemo.kt
@@ -24,14 +24,14 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.selection.selectable
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.width
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.width
 import androidx.ui.material.RadioButton
 import androidx.ui.material.samples.BottomNavigationSample
 import androidx.ui.material.samples.BottomNavigationWithOnlySelectedLabelsSample
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ButtonDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ButtonDemo.kt
index a85e813..27247d2 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ButtonDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ButtonDemo.kt
@@ -23,13 +23,13 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.shape.GenericShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.Button
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.OutlinedButton
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt
index 8940dd0..a4882a2 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ColorPickerDemo.kt
@@ -53,18 +53,18 @@
 import androidx.ui.graphics.isSet
 import androidx.ui.graphics.toArgb
 import androidx.ui.graphics.toPixelMap
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.offset
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.Surface
 import androidx.ui.material.TopAppBar
 import androidx.ui.text.style.TextAlign
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt
index e85ab79..6e6bf63 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/DynamicThemeActivity.kt
@@ -35,10 +35,10 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.lerp
 import androidx.ui.graphics.toArgb
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.BottomAppBar
 import androidx.ui.material.ColorPalette
 import androidx.ui.material.ExtendedFloatingActionButton
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ElevationDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ElevationDemo.kt
index 9b12cd9..973c0d4 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ElevationDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ElevationDemo.kt
@@ -26,12 +26,12 @@
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.shape.corner.RoundedCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.Card
 import androidx.ui.material.MaterialTheme
 import androidx.ui.unit.Dp
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialTextField.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialTextField.kt
index 5d80f4a..8bd1dd8 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialTextField.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialTextField.kt
@@ -27,16 +27,16 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.selection.selectable
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.ColumnScope.gravity
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.ColumnScope.gravity
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.material.Checkbox
 import androidx.ui.material.EmphasisAmbient
 import androidx.ui.material.MaterialTheme
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeDemo.kt
index d646456..bf7972e 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MaterialThemeDemo.kt
@@ -18,9 +18,9 @@
 
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxHeight
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxHeight
 import androidx.ui.material.samples.MaterialThemeSample
 import androidx.ui.material.samples.ThemeColorSample
 import androidx.ui.material.samples.ThemeTextStyleSample
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MenuDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MenuDemo.kt
index 4c2ceb3..31bd3cf 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MenuDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/MenuDemo.kt
@@ -24,11 +24,11 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Icon
 import androidx.compose.foundation.Text
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.core.LayoutDirection
-import androidx.ui.layout.Stack
-import androidx.ui.layout.ltr
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.ltr
 import androidx.ui.material.DropdownMenu
 import androidx.ui.material.DropdownMenuItem
 import androidx.ui.material.IconButton
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt
index ae13870..bcc8a37 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/ProgressIndicatorDemo.kt
@@ -30,9 +30,9 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.ScrollableColumn
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.ui.material.CircularProgressIndicator
 import androidx.ui.material.LinearProgressIndicator
 
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsDemo.kt
index 329664b..40f7b7d 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SelectionControlsDemo.kt
@@ -20,10 +20,10 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.height
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.height
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.samples.RadioButtonSample
 import androidx.ui.material.samples.RadioGroupSample
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SliderDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SliderDemo.kt
index 7d25ab8..15521ef 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SliderDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SliderDemo.kt
@@ -19,10 +19,10 @@
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.height
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.samples.SliderSample
 import androidx.ui.material.samples.StepsSliderSample
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SnackbarDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SnackbarDemo.kt
index 59082e3..bb7af35 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SnackbarDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/SnackbarDemo.kt
@@ -20,8 +20,8 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.Text
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Snackbar
 import androidx.ui.material.TextButton
diff --git a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabDemo.kt b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabDemo.kt
index 2bb3e31..34c723e 100644
--- a/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabDemo.kt
+++ b/ui/ui-material/integration-tests/material-demos/src/main/java/androidx/ui/material/demos/TabDemo.kt
@@ -23,9 +23,9 @@
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.height
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.Button
 import androidx.ui.material.samples.FancyIndicatorContainerTabs
 import androidx.ui.material.samples.FancyIndicatorTabs
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/AccountsScreen.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/AccountsScreen.kt
index ab35755..e6ccf50 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/AccountsScreen.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/AccountsScreen.kt
@@ -22,12 +22,12 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.Card
 import androidx.ui.material.MaterialTheme
 import androidx.ui.unit.dp
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/BillsScreen.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/BillsScreen.kt
index d5b15ed..cc641b6 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/BillsScreen.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/BillsScreen.kt
@@ -22,12 +22,12 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.verticalScroll
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.Card
 import androidx.ui.material.MaterialTheme
 import androidx.ui.unit.dp
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/CommonUi.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/CommonUi.kt
index 0e1e448..fbf2fa8 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/CommonUi.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/CommonUi.kt
@@ -23,13 +23,13 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.material.Divider
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.icons.Icons
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/Icons.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/Icons.kt
index 780fc9b..767e771 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/Icons.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/Icons.kt
@@ -24,7 +24,7 @@
 import androidx.ui.graphics.ColorFilter
 import androidx.ui.graphics.vector.VectorAsset
 import androidx.ui.graphics.vector.VectorPainter
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.icons.Icons
 import androidx.ui.material.icons.lazyMaterialIcon
 import androidx.ui.material.icons.materialPath
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/OverviewScreen.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/OverviewScreen.kt
index 0dc07d0..757a33d 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/OverviewScreen.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/OverviewScreen.kt
@@ -25,14 +25,14 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.Card
 import androidx.ui.material.Divider
 import androidx.ui.material.IconButton
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyActivity.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyActivity.kt
index c317775..9fdbd8f 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyActivity.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyActivity.kt
@@ -25,7 +25,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.setContent
 import androidx.compose.foundation.Box
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.material.Scaffold
 
 /**
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyAlertDialog.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyAlertDialog.kt
index a5266be..f801aff 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyAlertDialog.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/RallyAlertDialog.kt
@@ -20,10 +20,10 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.RectangleShape
-import androidx.ui.layout.Column
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
 import androidx.ui.material.AlertDialog
 import androidx.ui.material.Divider
 import androidx.ui.material.MaterialTheme
diff --git a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/TopAppBar.kt b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/TopAppBar.kt
index 6b18f9a..7e23a61 100644
--- a/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/TopAppBar.kt
+++ b/ui/ui-material/integration-tests/material-studies/src/main/java/androidx/ui/material/studies/rally/TopAppBar.kt
@@ -28,12 +28,12 @@
 import androidx.compose.foundation.selection.selectable
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.vector.VectorAsset
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Surface
 import androidx.ui.material.ripple.RippleIndication
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AlertDialogSample.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AlertDialogSample.kt
index a920502..d20b16f 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AlertDialogSample.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AlertDialogSample.kt
@@ -21,10 +21,10 @@
 import androidx.compose.state
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
 import androidx.ui.material.AlertDialog
 import androidx.ui.material.AlertDialogButtonLayout
 import androidx.ui.material.Button
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AppBarSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AppBarSamples.kt
index 9bfb18a..ad43c33 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AppBarSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/AppBarSamples.kt
@@ -21,7 +21,7 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Icon
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Spacer
+import androidx.compose.foundation.layout.Spacer
 import androidx.ui.material.BottomAppBar
 import androidx.ui.material.IconButton
 import androidx.ui.material.TopAppBar
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ButtonSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ButtonSamples.kt
index 13125ff..86cf493 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ButtonSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ButtonSamples.kt
@@ -21,8 +21,8 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Icon
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.size
 import androidx.ui.material.Button
 import androidx.ui.material.ButtonConstants
 import androidx.ui.material.OutlinedButton
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/DrawerSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/DrawerSamples.kt
index 2dec86c..64b8ca6 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/DrawerSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/DrawerSamples.kt
@@ -23,11 +23,11 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.ContentGravity
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.BottomDrawerLayout
 import androidx.ui.material.BottomDrawerState
 import androidx.ui.material.Button
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/EmphasisSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/EmphasisSamples.kt
index df847d9..9bf5512 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/EmphasisSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/EmphasisSamples.kt
@@ -19,7 +19,7 @@
 import androidx.annotation.Sampled
 import androidx.compose.Composable
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.EmphasisAmbient
 import androidx.ui.material.ProvideEmphasis
 
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/FloatingActionButtonSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/FloatingActionButtonSamples.kt
index cdf10d7..33cbd6c 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/FloatingActionButtonSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/FloatingActionButtonSamples.kt
@@ -21,7 +21,7 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Icon
 import androidx.compose.foundation.Text
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.ui.material.ExtendedFloatingActionButton
 import androidx.ui.material.FloatingActionButton
 import androidx.ui.material.icons.Icons
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ListSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ListSamples.kt
index ae355e8..5eb1447 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ListSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ListSamples.kt
@@ -28,7 +28,7 @@
 import androidx.ui.graphics.ColorFilter
 import androidx.ui.graphics.ImageAsset
 import androidx.ui.graphics.vector.VectorAsset
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.Checkbox
 import androidx.ui.material.Divider
 import androidx.ui.material.ListItem
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/MenuSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/MenuSamples.kt
index a651afd..e46583c 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/MenuSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/MenuSamples.kt
@@ -25,8 +25,8 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Icon
 import androidx.compose.foundation.Text
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.material.Divider
 import androidx.ui.material.DropdownMenu
 import androidx.ui.material.DropdownMenuItem
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt
index 1aa5d33..98f3e0b 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ScaffoldSamples.kt
@@ -30,8 +30,8 @@
 import androidx.compose.foundation.shape.corner.CutCornerShape
 import androidx.compose.foundation.shape.corner.RoundedCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.BottomAppBar
 import androidx.ui.material.DrawerState
 import androidx.ui.material.ExtendedFloatingActionButton
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SelectionControlsSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SelectionControlsSamples.kt
index 7b7dc75..7e953ea 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SelectionControlsSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/SelectionControlsSamples.kt
@@ -28,11 +28,11 @@
 import androidx.compose.foundation.selection.ToggleableState
 import androidx.compose.foundation.selection.selectable
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.Checkbox
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.RadioButton
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
index 8946fe5..c254098 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TabSamples.kt
@@ -39,16 +39,16 @@
 import androidx.compose.foundation.drawBorder
 import androidx.compose.foundation.shape.corner.RoundedCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.offset
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.offset
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Tab
 import androidx.ui.material.TabRow
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TextFieldSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TextFieldSamples.kt
index 0a7d7ee..219475a 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TextFieldSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/TextFieldSamples.kt
@@ -27,8 +27,8 @@
 import androidx.ui.input.KeyboardType
 import androidx.ui.input.PasswordVisualTransformation
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.Column
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.padding
 import androidx.ui.material.EmphasisAmbient
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.OutlinedTextField
diff --git a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt
index 2a77413..4b024a9 100644
--- a/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt
+++ b/ui/ui-material/samples/src/main/java/androidx/ui/material/samples/ThemeSamples.kt
@@ -24,8 +24,8 @@
 import androidx.compose.foundation.background
 import androidx.compose.foundation.isSystemInDarkTheme
 import androidx.ui.graphics.Color
-import androidx.ui.layout.aspectRatio
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.material.ExtendedFloatingActionButton
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Typography
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonScreenshotTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonScreenshotTest.kt
index 4b57178..ced4dc4 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonScreenshotTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonScreenshotTest.kt
@@ -22,9 +22,9 @@
 import androidx.test.screenshot.assertAgainstGolden
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Stack
-import androidx.ui.layout.size
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.center
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
index d7845d9..b452f96 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/ButtonTest.kt
@@ -41,19 +41,19 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.RectangleShape
 import androidx.ui.graphics.compositeOver
-import androidx.ui.layout.Column
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.RowScope
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.height
-import androidx.ui.layout.heightIn
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.size
-import androidx.ui.layout.width
-import androidx.ui.layout.widthIn
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.heightIn
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.widthIn
 import androidx.ui.test.assertHasClickAction
 import androidx.ui.test.assertHasNoClickAction
 import androidx.ui.test.assertHeightIsAtLeast
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/CardTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/CardTest.kt
index 9b70e93..3e1613e 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/CardTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/CardTest.kt
@@ -26,8 +26,8 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.shape.corner.CutCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.assertShape
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
index fa4ed1c..7cb40ae 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxScreenshotTest.kt
@@ -26,7 +26,7 @@
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.selection.ToggleableState
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.center
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxUiTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxUiTest.kt
index 4e751a9..57149a4 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxUiTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/CheckboxUiTest.kt
@@ -24,7 +24,7 @@
 import androidx.compose.foundation.selection.ToggleableState.Indeterminate
 import androidx.compose.foundation.selection.ToggleableState.Off
 import androidx.compose.foundation.selection.ToggleableState.On
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.test.assertHasNoClickAction
 import androidx.ui.test.assertIsEnabled
 import androidx.ui.test.assertIsOff
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/DrawerScreenshotTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/DrawerScreenshotTest.kt
index 4453e59..fcd4eaa 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/DrawerScreenshotTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/DrawerScreenshotTest.kt
@@ -25,8 +25,8 @@
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.size
 import androidx.ui.test.ComposeTestRule
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/DrawerTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/DrawerTest.kt
index 58f1759..e4689f4 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/DrawerTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/DrawerTest.kt
@@ -29,8 +29,8 @@
 import androidx.compose.foundation.clickable
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.rtl
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.rtl
 import androidx.ui.test.GestureScope
 import androidx.ui.test.assertIsEqualTo
 import androidx.ui.test.assertLeftPositionInRootIsEqualTo
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/ElevationOverlayTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/ElevationOverlayTest.kt
index 1b9578f..7933ad8 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/ElevationOverlayTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/ElevationOverlayTest.kt
@@ -23,7 +23,7 @@
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.assertPixels
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/FloatingActionButtonTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/FloatingActionButtonTest.kt
index 1fac94f..86585ad 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/FloatingActionButtonTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/FloatingActionButtonTest.kt
@@ -30,11 +30,11 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.shape.corner.CutCornerShape
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.size
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.icons.Icons
 import androidx.ui.material.icons.filled.Favorite
 import androidx.ui.test.assertHeightIsEqualTo
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/IconButtonTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/IconButtonTest.kt
index f1d9f00..679dd3f 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/IconButtonTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/IconButtonTest.kt
@@ -20,7 +20,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.samples.IconButtonSample
 import androidx.ui.material.samples.IconToggleButtonSample
 import androidx.ui.test.assertHeightIsEqualTo
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/MaterialTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/MaterialTest.kt
index 67ab9c6..a53d90a 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/MaterialTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/MaterialTest.kt
@@ -21,9 +21,9 @@
 import androidx.ui.core.ExperimentalLayoutNodeApi
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSizeIn
+import androidx.compose.foundation.layout.DpConstraints
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSizeIn
 import androidx.ui.test.ComposeTestRule
 import androidx.ui.test.SemanticsNodeInteraction
 import androidx.ui.test.assertHeightIsEqualTo
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/MenuTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/MenuTest.kt
index cee3b34..143d9486 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/MenuTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/MenuTest.kt
@@ -30,8 +30,8 @@
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.contentColor
 import androidx.ui.graphics.Color
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.size
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.performClick
 import androidx.ui.test.onNode
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
index 8508a4f..ac6c316 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonScreenshotTest.kt
@@ -26,7 +26,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.center
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonTest.kt
index ec771b0..7e61b92 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/RadioButtonTest.kt
@@ -21,7 +21,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Strings
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.test.SemanticsNodeInteraction
 import androidx.ui.test.assertIsInMutuallyExclusiveGroup
 import androidx.ui.test.assertIsSelected
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/ScaffoldTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/ScaffoldTest.kt
index e85e0d6..5df5db3 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/ScaffoldTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/ScaffoldTest.kt
@@ -34,12 +34,12 @@
 import androidx.compose.foundation.background
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.DpConstraints
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.size
 import androidx.ui.material.icons.Icons
 import androidx.ui.material.icons.filled.Favorite
 import androidx.ui.test.assertHeightIsEqualTo
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/SliderTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/SliderTest.kt
index e16141d..51255c7 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/SliderTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/SliderTest.kt
@@ -28,9 +28,9 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.compositeOver
 import androidx.ui.graphics.toArgb
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.ltr
-import androidx.ui.layout.rtl
+import androidx.compose.foundation.layout.DpConstraints
+import androidx.compose.foundation.layout.ltr
+import androidx.compose.foundation.layout.rtl
 import androidx.ui.test.assertHeightIsEqualTo
 import androidx.ui.test.assertValueEquals
 import androidx.ui.test.assertWidthIsEqualTo
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
index 86dde6a..719675a 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/SnackbarTest.kt
@@ -27,8 +27,8 @@
 import androidx.compose.foundation.shape.corner.CutCornerShape
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.compositeOver
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.DpConstraints
+import androidx.compose.foundation.layout.Stack
 import androidx.ui.test.assertHeightIsEqualTo
 import androidx.ui.test.assertIsEqualTo
 import androidx.ui.test.assertIsNotEqualTo
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/SurfaceTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/SurfaceTest.kt
index f57a8c6..f773316 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/SurfaceTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/SurfaceTest.kt
@@ -27,9 +27,9 @@
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.RectangleShape
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.assertShape
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchScreenshotTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchScreenshotTest.kt
index 702c035..fbe5515 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchScreenshotTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchScreenshotTest.kt
@@ -27,8 +27,8 @@
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.rtl
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.rtl
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.captureToBitmap
 import androidx.ui.test.center
 import androidx.ui.test.createComposeRule
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchTest.kt
index 01f7a14..73d375c 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/SwitchTest.kt
@@ -22,9 +22,9 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Strings
-import androidx.ui.layout.Column
-import androidx.ui.layout.Stack
-import androidx.ui.layout.rtl
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.rtl
 import androidx.ui.test.assertHasNoClickAction
 import androidx.ui.test.assertHeightIsEqualTo
 import androidx.ui.test.assertIsEnabled
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/TabTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/TabTest.kt
index d678777..59b5277 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/TabTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/TabTest.kt
@@ -27,8 +27,8 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.material.icons.Icons
 import androidx.ui.material.icons.filled.Favorite
 import androidx.ui.material.samples.ScrollingTextTabs
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/ripple/RippleIndicationTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/ripple/RippleIndicationTest.kt
index bad9f43..093aa7c 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/ripple/RippleIndicationTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/ripple/RippleIndicationTest.kt
@@ -39,10 +39,10 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.compositeOver
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.material.GOLDEN_MATERIAL
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Surface
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/FilledTextFieldTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/FilledTextFieldTest.kt
index 9102602..b16be09 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/FilledTextFieldTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/FilledTextFieldTest.kt
@@ -41,11 +41,11 @@
 import androidx.ui.input.PasswordVisualTransformation
 import androidx.ui.input.TextFieldValue
 import androidx.ui.input.TextInputService
-import androidx.ui.layout.Column
-import androidx.ui.layout.Stack
-import androidx.ui.layout.height
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.TextField
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.runOnIdleWithDensity
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/OutlinedTextFieldTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/OutlinedTextFieldTest.kt
index e83d1902..f367ca5 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/OutlinedTextFieldTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/OutlinedTextFieldTest.kt
@@ -40,9 +40,9 @@
 import androidx.ui.input.PasswordVisualTransformation
 import androidx.ui.input.TextFieldValue
 import androidx.ui.input.TextInputService
-import androidx.ui.layout.Column
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.OutlinedTextField
 import androidx.ui.material.runOnIdleWithDensity
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldScreenshotTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldScreenshotTest.kt
index 3c0a560..db16868 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldScreenshotTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldScreenshotTest.kt
@@ -26,7 +26,7 @@
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.rtl
+import androidx.compose.foundation.layout.rtl
 import androidx.ui.material.GOLDEN_MATERIAL
 import androidx.ui.material.OutlinedTextField
 import androidx.ui.material.TextField
diff --git a/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldTest.kt b/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldTest.kt
index 83769e7..ebe9a71 100644
--- a/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldTest.kt
+++ b/ui/ui-material/src/androidTest/java/androidx/ui/material/textfield/TextFieldTest.kt
@@ -27,8 +27,8 @@
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.Stack
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.TextFieldScroller
 import androidx.ui.material.TextFieldScrollerPosition
 import androidx.compose.runtime.savedinstancestate.rememberSavedInstanceState
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt b/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt
index a1f37eb..2477d05 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/AlertDialog.kt
@@ -24,14 +24,14 @@
 import androidx.compose.foundation.Dialog
 import androidx.compose.foundation.ProvideTextStyle
 import androidx.ui.graphics.Shape
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.material.AlertDialogButtonLayout.SideBySide
 import androidx.ui.material.AlertDialogButtonLayout.Stacked
 import androidx.ui.unit.dp
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt b/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
index 3fc314d..58b5a07 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/AppBar.kt
@@ -30,16 +30,16 @@
 import androidx.ui.graphics.RectangleShape
 import androidx.ui.graphics.Shape
 import androidx.ui.graphics.addOutline
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Row
-import androidx.ui.layout.RowScope
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.Density
 import androidx.ui.unit.Dp
 import androidx.ui.unit.PxBounds
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/BottomNavigation.kt b/ui/ui-material/src/main/java/androidx/ui/material/BottomNavigation.kt
index 6f37083..6dc8135 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/BottomNavigation.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/BottomNavigation.kt
@@ -40,11 +40,11 @@
 import androidx.compose.foundation.selection.selectable
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.lerp
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.Row
-import androidx.ui.layout.RowScope
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.text.LastBaseline
 import androidx.ui.text.style.TextAlign
 import androidx.ui.unit.Dp
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Button.kt b/ui/ui-material/src/main/java/androidx/ui/material/Button.kt
index a34671d..f94f104 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Button.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Button.kt
@@ -32,12 +32,12 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.Shape
 import androidx.ui.graphics.compositeOver
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Row
-import androidx.ui.layout.RowScope
-import androidx.ui.layout.defaultMinSizeConstraints
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.defaultMinSizeConstraints
+import androidx.compose.foundation.layout.padding
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Checkbox.kt b/ui/ui-material/src/main/java/androidx/ui/material/Checkbox.kt
index 12752af..713aadf 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Checkbox.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Checkbox.kt
@@ -43,9 +43,9 @@
 import androidx.ui.graphics.drawscope.DrawScope
 import androidx.ui.graphics.drawscope.Fill
 import androidx.ui.graphics.drawscope.Stroke
-import androidx.ui.layout.padding
-import androidx.ui.layout.size
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.material.ripple.RippleIndication
 import androidx.ui.unit.dp
 import androidx.ui.util.lerp
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Divider.kt b/ui/ui-material/src/main/java/androidx/ui/material/Divider.kt
index e25aa40..b2b9420 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Divider.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Divider.kt
@@ -21,9 +21,9 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Drawer.kt b/ui/ui-material/src/main/java/androidx/ui/material/Drawer.kt
index 50d4d6f..c2801cb 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Drawer.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Drawer.kt
@@ -29,12 +29,12 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Canvas
 import androidx.ui.graphics.Shape
-import androidx.ui.layout.DpConstraints
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.offsetPx
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSizeIn
+import androidx.compose.foundation.layout.DpConstraints
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.offsetPx
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSizeIn
 import androidx.ui.material.internal.fixedThresholds
 import androidx.ui.material.internal.stateDraggable
 import androidx.ui.unit.Dp
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/FloatingActionButton.kt b/ui/ui-material/src/main/java/androidx/ui/material/FloatingActionButton.kt
index 6e565ca..e824c07 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/FloatingActionButton.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/FloatingActionButton.kt
@@ -31,12 +31,12 @@
 import androidx.compose.foundation.shape.corner.CornerSize
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.Shape
-import androidx.ui.layout.Row
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.defaultMinSizeConstraints
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSizeIn
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.defaultMinSizeConstraints
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSizeIn
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/IconButton.kt b/ui/ui-material/src/main/java/androidx/ui/material/IconButton.kt
index ffcc537..246a25c 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/IconButton.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/IconButton.kt
@@ -22,7 +22,7 @@
 import androidx.compose.foundation.ContentGravity
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.selection.toggleable
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.ripple.RippleIndication
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt b/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
index 03fffa6..c00fdfa 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/ListItem.kt
@@ -29,11 +29,11 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.clickable
 import androidx.ui.graphics.ImageAsset
-import androidx.ui.layout.Row
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeightIn
-import androidx.ui.layout.preferredSizeIn
-import androidx.ui.layout.preferredWidthIn
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeightIn
+import androidx.compose.foundation.layout.preferredSizeIn
+import androidx.compose.foundation.layout.preferredWidthIn
 import androidx.ui.material.ripple.RippleIndication
 import androidx.ui.text.FirstBaseline
 import androidx.ui.text.LastBaseline
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Menu.kt b/ui/ui-material/src/main/java/androidx/ui/material/Menu.kt
index b5feadd..52da391 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Menu.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Menu.kt
@@ -39,13 +39,13 @@
 import androidx.compose.foundation.ProvideTextStyle
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.clickable
-import androidx.ui.layout.ColumnScope
-import androidx.ui.layout.ExperimentalLayout
-import androidx.ui.layout.IntrinsicSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSizeIn
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.ColumnScope
+import androidx.compose.foundation.layout.ExperimentalLayout
+import androidx.compose.foundation.layout.IntrinsicSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSizeIn
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.material.ripple.RippleIndication
 import androidx.ui.unit.Density
 import androidx.ui.unit.IntBounds
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/OutlinedTextField.kt b/ui/ui-material/src/main/java/androidx/ui/material/OutlinedTextField.kt
index 2cdaf41..050e4ac 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/OutlinedTextField.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/OutlinedTextField.kt
@@ -50,7 +50,7 @@
 import androidx.ui.input.KeyboardType
 import androidx.ui.input.TextFieldValue
 import androidx.ui.input.VisualTransformation
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.text.InternalTextApi
 import androidx.ui.text.SoftwareKeyboardController
 import androidx.ui.text.TextStyle
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/ProgressIndicator.kt b/ui/ui-material/src/main/java/androidx/ui/material/ProgressIndicator.kt
index 6abdf6ce..cd8e332 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/ProgressIndicator.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/ProgressIndicator.kt
@@ -42,8 +42,8 @@
 import androidx.ui.graphics.drawscope.DrawScope
 import androidx.ui.graphics.drawscope.Stroke
 import androidx.ui.graphics.vectormath.degrees
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.semantics.accessibilityValue
 import androidx.ui.unit.Dp
 import androidx.ui.unit.dp
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt b/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt
index 9e4cfa6..d15a81a 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/RadioButton.kt
@@ -34,12 +34,12 @@
 import androidx.ui.graphics.drawscope.DrawScope
 import androidx.ui.graphics.drawscope.Fill
 import androidx.ui.graphics.drawscope.Stroke
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.size
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.material.ripple.RippleIndication
 import androidx.ui.text.TextStyle
 import androidx.ui.unit.Dp
@@ -119,9 +119,9 @@
                 "}",
         "androidx.ui.material.RadioButton",
         "androidx.compose.foundation.Text",
-        "androidx.ui.layout.Row",
-        "androidx.ui.layout.Column",
-        "androidx.ui.layout.fillMaxWidth",
+        "androidx.compose.foundation.layout.Row",
+        "androidx.compose.foundation.layout.Column",
+        "androidx.compose.foundation.layout.fillMaxWidth",
         "androidx.ui.core.Modifier",
         "androidx.ui.unit.dp",
         "androidx.compose.foundation.selection.selectable"
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Scaffold.kt b/ui/ui-material/src/main/java/androidx/ui/material/Scaffold.kt
index a6f6076..e1a5976 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Scaffold.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Scaffold.kt
@@ -35,12 +35,12 @@
 import androidx.ui.core.zIndex
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.Shape
-import androidx.ui.layout.Column
-import androidx.ui.layout.InnerPadding
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.InnerPadding
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
 import androidx.ui.material.Scaffold.FabPosition
 import androidx.ui.unit.Dp
 import androidx.ui.unit.PxBounds
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Slider.kt b/ui/ui-material/src/main/java/androidx/ui/material/Slider.kt
index 81b90c3..fd8803d 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Slider.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Slider.kt
@@ -51,13 +51,13 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.PointMode
 import androidx.ui.graphics.StrokeCap
-import androidx.ui.layout.Spacer
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeightIn
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidthIn
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeightIn
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidthIn
 import androidx.ui.material.ripple.RippleIndication
 import androidx.ui.semantics.AccessibilityRangeInfo
 import androidx.ui.semantics.accessibilityValue
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Snackbar.kt b/ui/ui-material/src/main/java/androidx/ui/material/Snackbar.kt
index ba8a580..16549d8 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Snackbar.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Snackbar.kt
@@ -28,10 +28,10 @@
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.Shape
 import androidx.ui.graphics.compositeOver
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.relativePaddingFrom
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.relativePaddingFrom
 import androidx.ui.text.FirstBaseline
 import androidx.ui.text.LastBaseline
 import androidx.ui.unit.Dp
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Switch.kt b/ui/ui-material/src/main/java/androidx/ui/material/Switch.kt
index 36e08a5..2c4b034 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Switch.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Switch.kt
@@ -38,11 +38,11 @@
 import androidx.ui.graphics.StrokeCap
 import androidx.ui.graphics.compositeOver
 import androidx.ui.graphics.drawscope.DrawScope
-import androidx.ui.layout.Stack
-import androidx.ui.layout.StackScope
-import androidx.ui.layout.offsetPx
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.StackScope
+import androidx.compose.foundation.layout.offsetPx
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.material.SwitchDefaults.disabledUncheckedThumbColor
 import androidx.ui.material.SwitchDefaults.disabledUncheckedTrackColor
 import androidx.ui.material.SwitchDefaults.makeDisabledCheckedThumbColor
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
index 4a91d30..94b37f4 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/Tab.kt
@@ -51,13 +51,13 @@
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.selection.selectable
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Row
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredHeight
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredHeight
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.material.TabRow.IndicatorTransition
 import androidx.ui.material.TabRow.TabPosition
 import androidx.ui.text.FirstBaseline
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/TextField.kt b/ui/ui-material/src/main/java/androidx/ui/material/TextField.kt
index b7af387..4ae73ba 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/TextField.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/TextField.kt
@@ -41,7 +41,7 @@
 import androidx.ui.input.KeyboardType
 import androidx.ui.input.TextFieldValue
 import androidx.ui.input.VisualTransformation
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.text.InternalTextApi
 import androidx.ui.text.LastBaseline
 import androidx.ui.text.SoftwareKeyboardController
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/TextFieldImpl.kt b/ui/ui-material/src/main/java/androidx/ui/material/TextFieldImpl.kt
index 6c3c1fe..b10aa09 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/TextFieldImpl.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/TextFieldImpl.kt
@@ -65,8 +65,8 @@
 import androidx.ui.input.KeyboardType
 import androidx.ui.input.TextFieldValue
 import androidx.ui.input.VisualTransformation
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSizeIn
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSizeIn
 import androidx.ui.material.ripple.RippleIndication
 import androidx.compose.runtime.savedinstancestate.Saver
 import androidx.compose.runtime.savedinstancestate.rememberSavedInstanceState
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/AssertExistsTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/AssertExistsTest.kt
index fda4c79..c9faf4b 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/AssertExistsTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/AssertExistsTest.kt
@@ -22,7 +22,7 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.Button
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Surface
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/AssertsTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/AssertsTest.kt
index 9f95a65..e0eb970 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/AssertsTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/AssertsTest.kt
@@ -23,7 +23,7 @@
 import androidx.compose.foundation.semantics.inMutuallyExclusiveGroup
 import androidx.compose.foundation.semantics.selected
 import androidx.compose.foundation.semantics.toggleableState
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.semantics.SemanticsPropertyReceiver
 import androidx.ui.semantics.hidden
 import androidx.ui.semantics.testTag
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/BitmapCapturingTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/BitmapCapturingTest.kt
index 1ee4a23..60da49f 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/BitmapCapturingTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/BitmapCapturingTest.kt
@@ -26,11 +26,11 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.test.android.AndroidComposeTestRule
 import androidx.ui.unit.IntOffset
 import androidx.ui.unit.IntSize
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/CallSemanticsActionTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/CallSemanticsActionTest.kt
index e58171a..e813186 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/CallSemanticsActionTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/CallSemanticsActionTest.kt
@@ -21,7 +21,7 @@
 import androidx.test.filters.MediumTest
 import androidx.ui.core.Modifier
 import androidx.ui.core.semantics.semantics
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.semantics.AccessibilityAction
 import androidx.ui.semantics.SemanticsPropertyKey
 import androidx.ui.semantics.SemanticsPropertyReceiver
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/ComposeIdlingResourceTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/ComposeIdlingResourceTest.kt
index 8b8c7f7..0b2dc7c 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/ComposeIdlingResourceTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/ComposeIdlingResourceTest.kt
@@ -36,7 +36,7 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.geometry.Size
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.test.android.ComposeIdlingResource
 import com.google.common.truth.Truth.assertThat
 import org.junit.Rule
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/CustomActivityTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/CustomActivityTest.kt
index bcfc53a..0dfdb44 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/CustomActivityTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/CustomActivityTest.kt
@@ -21,7 +21,7 @@
 import androidx.test.filters.MediumTest
 import androidx.ui.core.setContent
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import androidx.ui.material.Button
 import androidx.ui.material.MaterialTheme
 import androidx.ui.test.android.AndroidComposeTestRule
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/ErrorMessagesTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/ErrorMessagesTest.kt
index 8637f28..0dd5872 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/ErrorMessagesTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/ErrorMessagesTest.kt
@@ -24,7 +24,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.clickable
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Surface
 import androidx.ui.semantics.SemanticsActions
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/FindAllTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/FindAllTest.kt
index 494ac91..01b7e32 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/FindAllTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/FindAllTest.kt
@@ -18,7 +18,7 @@
 
 import androidx.compose.state
 import androidx.test.filters.MediumTest
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.Checkbox
 import androidx.ui.material.MaterialTheme
 import androidx.ui.material.Surface
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/FindersTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/FindersTest.kt
index 0084446..7148d8d 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/FindersTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/FindersTest.kt
@@ -20,7 +20,7 @@
 import androidx.test.filters.MediumTest
 import androidx.ui.core.Modifier
 import androidx.ui.core.semantics.semantics
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.semantics.SemanticsPropertyReceiver
 import androidx.ui.semantics.accessibilityLabel
 import androidx.ui.semantics.testTag
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/FirstDrawTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/FirstDrawTest.kt
index de98b5e..094dd70 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/FirstDrawTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/FirstDrawTest.kt
@@ -27,7 +27,7 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Canvas
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.test.android.AndroidComposeTestRule
 import com.google.common.truth.Truth.assertThat
 import org.junit.Rule
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/IsDisplayedTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/IsDisplayedTest.kt
index 5e2e6ff..4e3fc36 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/IsDisplayedTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/IsDisplayedTest.kt
@@ -39,13 +39,13 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.ScrollableColumn
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Row
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.height
-import androidx.ui.layout.size
-import androidx.ui.layout.width
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.width
 import androidx.ui.test.android.AndroidComposeTestRule
 import androidx.ui.test.util.BoundaryNode
 import androidx.ui.unit.Dp
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/LayoutCoordinatesHelperTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/LayoutCoordinatesHelperTest.kt
index dfd7856..f49f82b 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/LayoutCoordinatesHelperTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/LayoutCoordinatesHelperTest.kt
@@ -25,9 +25,9 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.ContentGravity
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Column
-import androidx.ui.layout.preferredSize
-import androidx.ui.layout.preferredWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.preferredSize
+import androidx.compose.foundation.layout.preferredWidth
 import androidx.ui.unit.dp
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/MultipleActivitiesClickTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/MultipleActivitiesClickTest.kt
index 5e4432c..84f78cb 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/MultipleActivitiesClickTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/MultipleActivitiesClickTest.kt
@@ -26,7 +26,7 @@
 import androidx.ui.core.setContent
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.test.android.AndroidComposeTestRule
 import androidx.ui.test.util.SinglePointerInputRecorder
 import com.google.common.truth.Truth.assertThat
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/PrintToStringTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/PrintToStringTest.kt
index 459469f..c625139 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/PrintToStringTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/PrintToStringTest.kt
@@ -22,7 +22,7 @@
 import androidx.ui.core.semantics.semantics
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.Button
 import androidx.ui.material.MaterialTheme
 import androidx.ui.semantics.disabled
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/ScrollToTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/ScrollToTest.kt
index c81dd53..8b0f057 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/ScrollToTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/ScrollToTest.kt
@@ -23,8 +23,8 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Canvas
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.semantics.scrollBy
 import androidx.ui.unit.dp
 import com.google.common.truth.Truth
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/TestAnimationClockTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/TestAnimationClockTest.kt
index 8c83feb..e2b6c96 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/TestAnimationClockTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/TestAnimationClockTest.kt
@@ -38,7 +38,7 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.geometry.Size
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.test.android.ComposeIdlingResource
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.runBlocking
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/TimeOutTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/TimeOutTest.kt
index 2b7fe7e..79bf41d 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/TimeOutTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/TimeOutTest.kt
@@ -30,7 +30,7 @@
 import androidx.ui.core.onPositioned
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Stack
+import androidx.compose.foundation.layout.Stack
 import androidx.ui.test.android.AndroidComposeTestRule
 import androidx.ui.test.android.ComposeNotIdleException
 import androidx.ui.test.util.expectError
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/assertions/BoundsAssertionsTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/assertions/BoundsAssertionsTest.kt
index 7437587..66ac801 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/assertions/BoundsAssertionsTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/assertions/BoundsAssertionsTest.kt
@@ -23,10 +23,10 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.padding
-import androidx.ui.layout.size
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.assertHeightIsAtLeast
 import androidx.ui.test.assertHeightIsEqualTo
 import androidx.ui.test.assertIsEqualTo
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendClickTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendClickTest.kt
index 5a7d189..b738a85 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendClickTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendClickTest.kt
@@ -25,7 +25,7 @@
 import androidx.ui.core.pointerinput.PointerInputModifier
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.test.ActivityWithActionBar
 import androidx.ui.test.android.AndroidComposeTestRule
 import androidx.ui.test.performGesture
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendLongClickTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendLongClickTest.kt
index 2f92087..a16cfff 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendLongClickTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendLongClickTest.kt
@@ -21,9 +21,9 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.gesture.longPressGestureFilter
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.performGesture
 import androidx.ui.test.onNodeWithTag
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendPinchTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendPinchTest.kt
index 9eb2539..ba023d3 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendPinchTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendPinchTest.kt
@@ -19,8 +19,8 @@
 import androidx.test.filters.MediumTest
 import androidx.ui.core.Modifier
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.test.InputDispatcher.Companion.eventPeriod
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.performGesture
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendSwipeTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendSwipeTest.kt
index 310e37f..bd2b599 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendSwipeTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendSwipeTest.kt
@@ -21,9 +21,9 @@
 import androidx.ui.core.Alignment
 import androidx.ui.core.Modifier
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.bottomRight
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.performGesture
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendSwipeVelocityTest.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendSwipeVelocityTest.kt
index 5cabd0b..c9063e15 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendSwipeVelocityTest.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/gesturescope/SendSwipeVelocityTest.kt
@@ -20,9 +20,9 @@
 import androidx.ui.core.Alignment
 import androidx.ui.core.Modifier
 import androidx.ui.geometry.Offset
-import androidx.ui.layout.Stack
-import androidx.ui.layout.fillMaxSize
-import androidx.ui.layout.wrapContentSize
+import androidx.compose.foundation.layout.Stack
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.wrapContentSize
 import androidx.ui.test.InputDispatcher.InputDispatcherTestRule
 import androidx.ui.test.createComposeRule
 import androidx.ui.test.performGesture
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/util/BoundaryNodes.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/util/BoundaryNodes.kt
index 559c716..0227aad 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/util/BoundaryNodes.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/util/BoundaryNodes.kt
@@ -19,7 +19,7 @@
 import androidx.compose.Composable
 import androidx.ui.core.Modifier
 import androidx.ui.core.testTag
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 
 @Composable
 fun BoundaryNode(
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/util/ClickableTestBox.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/util/ClickableTestBox.kt
index 1b08563..b1efd9a 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/util/ClickableTestBox.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/util/ClickableTestBox.kt
@@ -22,7 +22,7 @@
 import androidx.ui.core.testTag
 import androidx.compose.foundation.Box
 import androidx.ui.graphics.Color
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.size
 import androidx.ui.test.util.ClickableTestBox.defaultColor
 import androidx.ui.test.util.ClickableTestBox.defaultSize
 import androidx.ui.test.util.ClickableTestBox.defaultTag
diff --git a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeText.kt b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeText.kt
index 58def49..82818b3 100644
--- a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeText.kt
+++ b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeText.kt
@@ -23,10 +23,10 @@
 import androidx.ui.geometry.Offset
 import androidx.ui.graphics.Color
 import androidx.ui.graphics.Shadow
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.ui.intl.LocaleList
 import androidx.ui.text.SpanStyle
 import androidx.ui.text.TextStyle
diff --git a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelection.kt b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelection.kt
index 601baf0..8fe94bd 100644
--- a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelection.kt
+++ b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelection.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
 import androidx.ui.intl.LocaleList
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.fillMaxHeight
-import androidx.ui.layout.fillMaxWidth
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.ui.text.SpanStyle
 import androidx.ui.text.TextStyle
 import androidx.ui.text.annotatedString
diff --git a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt
index bfb08aac..258dbbe 100644
--- a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt
+++ b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/ComposeTextSelectionSample.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.ScrollableColumn
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
-import androidx.ui.layout.padding
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.text.SpanStyle
 import androidx.ui.text.TextStyle
 import androidx.ui.text.annotatedString
diff --git a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TailFollowingTextField.kt b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TailFollowingTextField.kt
index 70c47d8..a000c43 100644
--- a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TailFollowingTextField.kt
+++ b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TailFollowingTextField.kt
@@ -25,10 +25,10 @@
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.Column
-import androidx.ui.layout.fillMaxWidth
-import androidx.ui.layout.height
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
 import androidx.compose.runtime.savedinstancestate.savedInstanceState
 import androidx.ui.text.CoreTextField
 import androidx.ui.text.TextStyle
diff --git a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TextFieldWIthScroller.kt b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TextFieldWIthScroller.kt
index 34d811b..15c86b6 100644
--- a/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TextFieldWIthScroller.kt
+++ b/ui/ui-text/integration-tests/ui-text-compose-demos/src/main/java/androidx/ui/text/demos/TextFieldWIthScroller.kt
@@ -21,7 +21,7 @@
 import androidx.ui.core.Modifier
 import androidx.compose.foundation.ScrollableColumn
 import androidx.ui.input.TextFieldValue
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.padding
 import androidx.ui.text.CoreTextField
 import androidx.ui.unit.dp
 
diff --git a/ui/ui-text/samples/src/main/java/androidx/ui/text/samples/InlineTextContentSample.kt b/ui/ui-text/samples/src/main/java/androidx/ui/text/samples/InlineTextContentSample.kt
index 522c99a..382ed0d 100644
--- a/ui/ui-text/samples/src/main/java/androidx/ui/text/samples/InlineTextContentSample.kt
+++ b/ui/ui-text/samples/src/main/java/androidx/ui/text/samples/InlineTextContentSample.kt
@@ -23,7 +23,7 @@
 import androidx.compose.foundation.Text
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.text.InlineTextContent
 import androidx.ui.text.Placeholder
 import androidx.ui.text.PlaceholderVerticalAlign
diff --git a/ui/ui-text/src/androidAndroidTest/kotlin/androidx/ui/text/selection/SelectionContainerTest.kt b/ui/ui-text/src/androidAndroidTest/kotlin/androidx/ui/text/selection/SelectionContainerTest.kt
index 8765c6b..8405c25 100644
--- a/ui/ui-text/src/androidAndroidTest/kotlin/androidx/ui/text/selection/SelectionContainerTest.kt
+++ b/ui/ui-text/src/androidAndroidTest/kotlin/androidx/ui/text/selection/SelectionContainerTest.kt
@@ -30,7 +30,7 @@
 import androidx.ui.core.hapticfeedback.HapticFeedbackType
 import androidx.ui.core.selection.Selection
 import androidx.ui.core.selection.SelectionContainer
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import androidx.ui.test.android.AndroidComposeTestRule
 import androidx.ui.test.runOnIdle
 import androidx.ui.text.AnnotatedString
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/BoundsTest.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/BoundsTest.kt
index 3327a0a..f488a78 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/BoundsTest.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/BoundsTest.kt
@@ -27,8 +27,8 @@
 import androidx.ui.core.WithConstraints
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.Text
-import androidx.ui.layout.Column
-import androidx.ui.layout.padding
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.padding
 import androidx.ui.unit.Density
 import androidx.ui.unit.dp
 import org.junit.Assert
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ComposeViewAdapterTest.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ComposeViewAdapterTest.kt
index 9df6523..5fd0f32 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ComposeViewAdapterTest.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ComposeViewAdapterTest.kt
@@ -111,7 +111,7 @@
                     .sorted()
                     .toTypedArray())
             // Verify that all calls generate the correct offset information
-            assertArrayEquals(arrayOf(1163, 1200, 1221, 1349, 1397, 1419, 1436, 1459, 1476),
+            assertArrayEquals(arrayOf(1195, 1232, 1253, 1381, 1429, 1451, 1468, 1491, 1508),
                 viewInfos
                     .map { it.location?.offset ?: -1 }
                     .sorted()
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/InspectableTests.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/InspectableTests.kt
index ee14f58..5586e84 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/InspectableTests.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/InspectableTests.kt
@@ -24,8 +24,8 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.preferredSize
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.preferredSize
 import androidx.ui.unit.dp
 import androidx.ui.unit.height
 import androidx.ui.unit.width
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/LineNumberPreview.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/LineNumberPreview.kt
index 5103856..9d071b9 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/LineNumberPreview.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/LineNumberPreview.kt
@@ -19,8 +19,8 @@
 import androidx.compose.Composable
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.Row
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
 import androidx.ui.material.Button
 import androidx.ui.material.Surface
 import androidx.ui.tooling.preview.Preview
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ModifierInfoTest.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ModifierInfoTest.kt
index 7858b63..4b73605 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ModifierInfoTest.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ModifierInfoTest.kt
@@ -28,9 +28,9 @@
 import androidx.compose.foundation.Box
 import androidx.compose.foundation.background
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
-import androidx.ui.layout.padding
-import androidx.ui.layout.size
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertTrue
 import org.junit.Test
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ToolingTest.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ToolingTest.kt
index 82b531f..e9ef5b1 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ToolingTest.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/ToolingTest.kt
@@ -23,7 +23,7 @@
 import androidx.ui.core.onPositioned
 import androidx.ui.core.setContent
 import androidx.compose.foundation.Box
-import androidx.ui.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxSize
 import org.junit.Before
 import org.junit.Rule
 import java.util.concurrent.CountDownLatch
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/LayoutInspectorTreeTest.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/LayoutInspectorTreeTest.kt
index 22b6de0..4df4914 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/LayoutInspectorTreeTest.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/LayoutInspectorTreeTest.kt
@@ -24,7 +24,7 @@
 import androidx.ui.core.OwnedLayer
 import androidx.compose.foundation.Text
 import androidx.ui.graphics.Color
-import androidx.ui.layout.Column
+import androidx.compose.foundation.layout.Column
 import androidx.ui.material.Button
 import androidx.ui.material.Surface
 import androidx.ui.tooling.Group
@@ -159,7 +159,7 @@
         validate(
             name = "RowColumnImpl",
             fileName = "Column.kt",
-            function = "androidx.ui.layout.ColumnKt.Column",
+            function = "androidx.compose.foundation.layout.ColumnKt.Column",
             left = 0.0.dp, top = 0.0.dp, width = viewWidth, height = viewHeight,
             children = listOf("Column")
         ) {
@@ -180,7 +180,7 @@
         validate(
             name = "RowColumnImpl",
             fileName = "Column.kt",
-            function = "androidx.ui.layout.ColumnKt.Column",
+            function = "androidx.compose.foundation.layout.ColumnKt.Column",
             left = 0.0.dp, top = 0.0.dp, width = 70.5.dp, height = 54.9.dp,
             children = listOf("Text", "Surface")
         ) {
@@ -332,7 +332,7 @@
         validate(
             name = "RowColumnImpl",
             fileName = "Column.kt",
-            function = "androidx.ui.layout.ColumnKt.Column",
+            function = "androidx.compose.foundation.layout.ColumnKt.Column",
             left = 0.0.dp, top = 18.9.dp, width = 64.0.dp, height = 36.0.dp,
             children = listOf("ProvideTextStyle")
         ) {
@@ -370,7 +370,7 @@
         validate(
             name = "RowColumnImpl",
             fileName = "Row.kt",
-            function = "androidx.ui.layout.RowKt.Row",
+            function = "androidx.compose.foundation.layout.RowKt.Row",
             left = 16.0.dp, top = 26.9.dp, width = 32.0.dp, height = 20.0.dp,
             children = listOf("Text")
         ) {
diff --git a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/ParameterFactoryTest.kt b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/ParameterFactoryTest.kt
index d3f0d362..0c750e1 100644
--- a/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/ParameterFactoryTest.kt
+++ b/ui/ui-tooling/src/androidTest/java/androidx/ui/tooling/inspector/ParameterFactoryTest.kt
@@ -34,9 +34,9 @@
 import androidx.ui.graphics.toArgb
 import androidx.ui.intl.Locale
 import androidx.ui.intl.LocaleList
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.CrossAxisAlignment
-import androidx.ui.layout.InnerPadding
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.CrossAxisAlignment
+import androidx.compose.foundation.layout.InnerPadding
 import androidx.ui.text.AnnotatedString
 import androidx.ui.text.TextStyle
 import androidx.ui.text.font.FontFamily
diff --git a/ui/ui-tooling/src/main/java/androidx/ui/tooling/inspector/ParameterFactory.kt b/ui/ui-tooling/src/main/java/androidx/ui/tooling/inspector/ParameterFactory.kt
index 42e84f9..6ee0daa 100644
--- a/ui/ui-tooling/src/main/java/androidx/ui/tooling/inspector/ParameterFactory.kt
+++ b/ui/ui-tooling/src/main/java/androidx/ui/tooling/inspector/ParameterFactory.kt
@@ -31,9 +31,9 @@
 import androidx.ui.graphics.toArgb
 import androidx.ui.intl.Locale
 import androidx.ui.intl.LocaleList
-import androidx.ui.layout.Arrangement
-import androidx.ui.layout.CrossAxisAlignment
-import androidx.ui.layout.InnerPadding
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.CrossAxisAlignment
+import androidx.compose.foundation.layout.InnerPadding
 import androidx.ui.text.AnnotatedString
 import androidx.ui.text.TextStyle
 import androidx.ui.text.font.FontFamily
