[go: nahoru, domu]

Kotlin Rebase ComposeUI 1.4

Change-Id: Ie3a00900a8be81e606e1715d1c45955f86ffd537
diff --git a/benchmark/common/src/main/java/androidx/benchmark/CpuInfo.kt b/benchmark/common/src/main/java/androidx/benchmark/CpuInfo.kt
index 4aaa75c..81b08dd 100644
--- a/benchmark/common/src/main/java/androidx/benchmark/CpuInfo.kt
+++ b/benchmark/common/src/main/java/androidx/benchmark/CpuInfo.kt
@@ -69,6 +69,8 @@
             )
         } ?: emptyList()
 
+        @Suppress("DEPRECATION")
+        // TODO: Rename `max`->`maxOrNull` when all of androidx (not just compose) uses Kotlin 1.4
         maxFreqHz = coreDirs
             .filter { it.maxFreqKhz != -1L }
             .maxBy { it.maxFreqKhz }
@@ -83,6 +85,8 @@
     fun isCpuLocked(coreDirs: List<CoreDir>): Boolean {
         val  { it.online }
 
+        @Suppress("DEPRECATION")
+        // TODO: Rename `max`->`maxOrNull` when all of androidx (not just compose) uses Kotlin 1.4
         if (onlineCores.any { it.availableFreqs.max() != onlineCores[0].availableFreqs.max() }) {
             Log.d(TAG, "Clocks not locked: cores with different max frequencies")
             return false
@@ -93,6 +97,8 @@
             return false
         }
 
+        @Suppress("DEPRECATION")
+        // TODO: Rename `min`->`minOrNull` when all of androidx (not just compose) uses Kotlin 1.4
         if (onlineCores.any { it.availableFreqs.min() == it.currentMinFreq }) {
             Log.d(TAG, "Clocks not locked: online cores with min freq == min avail freq")
             return false
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index ca13915..16bbf61 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -42,6 +42,7 @@
             freeCompilerArgs += [
                     "-Werror",
                     "-Xskip-runtime-version-check",
+                    "-Xskip-metadata-version-check",
                     // Allow `@OptIn` and `@UseExperimental`
                     "-Xopt-in=kotlin.RequiresOptIn"
             ]
diff --git a/buildSrc/build_dependencies.gradle b/buildSrc/build_dependencies.gradle
index 8c68635..db08734 100644
--- a/buildSrc/build_dependencies.gradle
+++ b/buildSrc/build_dependencies.gradle
@@ -20,7 +20,7 @@
 
 // NOTE: lint versions *must* be kept in sync with agp
 if (isUiProject) {
-    build_versions.kotlin = "1.3.70"
+    build_versions.kotlin = "1.4.0"
     build_versions.kotlin_coroutines = "1.3.6"
     build_versions.agp = '4.1.0-alpha08'
     build_versions.lint = '27.1.0-alpha08'
diff --git a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
index 325760c..60e2db4 100644
--- a/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/AndroidXPlugin.kt
@@ -716,7 +716,11 @@
     if (hasProperty(ALL_WARNINGS_AS_ERRORS)) {
         task.kotlinOptions.allWarningsAsErrors = true
     }
-    task.kotlinOptions.freeCompilerArgs += listOf("-Xskip-runtime-version-check")
+    task.kotlinOptions.freeCompilerArgs += listOf(
+        "-Xskip-runtime-version-check",
+        "-Xskip-metadata-version-check",
+        "-XXLanguage:-NewInference"
+    )
 }
 
 /**
diff --git a/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt b/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt
index d921383..c9a8b91 100644
--- a/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/DiffAndDocs.kt
@@ -445,7 +445,7 @@
     it.apply {
         dependsOn(generateDocs)
         from(generateDocs.map {
-            it.destinationDir
+            it.destinationDir!!
         })
         val baseName = "androidx-$ruleName-docs"
         val buildId = getBuildId()
diff --git a/buildSrc/src/main/kotlin/androidx/build/ErrorProneConfiguration.kt b/buildSrc/src/main/kotlin/androidx/build/ErrorProneConfiguration.kt
index c415c6b..0f64c8a 100644
--- a/buildSrc/src/main/kotlin/androidx/build/ErrorProneConfiguration.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/ErrorProneConfiguration.kt
@@ -157,7 +157,8 @@
         name = ERROR_PRONE_TASK,
         >
             val compileTask = compileTaskProvider.get()
-            it.classpath = compileTask.classpath
+            it.classpath = compileTask.classpath +
+                project.files("${project.buildDir}/classes/kotlin/main")
 
             it.source = compileTask.source
             it.destinationDir = file(buildDir.resolve("errorProne"))
diff --git a/compose/compose-compiler-hosted/build.gradle b/compose/compose-compiler-hosted/build.gradle
index 1dbc6a8..c7d757d 100644
--- a/compose/compose-compiler-hosted/build.gradle
+++ b/compose/compose-compiler-hosted/build.gradle
@@ -32,13 +32,12 @@
     compileOnly(KOTLIN_STDLIB)
     compileOnly("org.jetbrains.kotlin:kotlin-compiler:$KOTLIN_VERSION")
     compileOnly("org.jetbrains.kotlin:kotlin-plugin:$KOTLIN_VERSION")
-    compileOnly("org.jetbrains.kotlin:kotlin-intellij-core:$KOTLIN_VERSION")
-    compileOnly("org.jetbrains.kotlin:kotlin-platform-api:$KOTLIN_VERSION")
 }
 
 tasks.withType(KotlinCompile).configureEach {
     kotlinOptions {
         jvmTarget = "1.8"
+        freeCompilerArgs = ["-Xskip-metadata-version-check", "-Xjvm-default=enable"]
     }
 }
 
diff --git a/compose/compose-compiler-hosted/integration-tests/build.gradle b/compose/compose-compiler-hosted/integration-tests/build.gradle
index bd63a06..bb273581 100644
--- a/compose/compose-compiler-hosted/integration-tests/build.gradle
+++ b/compose/compose-compiler-hosted/integration-tests/build.gradle
@@ -66,7 +66,7 @@
 tasks.withType(KotlinCompile).configureEach {
     kotlinOptions {
         jvmTarget = "1.8"
-        freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn"]
+        freeCompilerArgs += ["-Xopt-in=kotlin.RequiresOptIn", "-Xallow-jvm-ir-dependencies"]
     }
 }
 
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCodegenSignatureTest.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCodegenSignatureTest.kt
index 37fbc95..dfa5b63 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCodegenSignatureTest.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCodegenSignatureTest.kt
@@ -38,12 +38,12 @@
                         append("An unresolved call was found in the generated bytecode of '")
                         append(name)
                         append("'")
-                        appendln()
-                        appendln()
-                        appendln("Call was: $it")
-                        appendln()
-                        appendln("Entire class file output:")
-                        appendln(classDump)
+                        appendLine()
+                        appendLine()
+                        appendLine("Call was: $it")
+                        appendLine()
+                        appendLine("Entire class file output:")
+                        appendLine(classDump)
                     }
                 )
             }
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCompilerTest.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCompilerTest.kt
index 80a7513..fe8bc41 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCompilerTest.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractCompilerTest.kt
@@ -24,8 +24,8 @@
 import junit.framework.TestCase
 import org.jetbrains.annotations.Contract
 import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
-import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
 import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
+import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSourceLocation
 import org.jetbrains.kotlin.cli.common.messages.MessageCollector
 import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
 import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
@@ -277,7 +277,7 @@
         override fun report(
             severity: CompilerMessageSeverity,
             message: String,
-            location: CompilerMessageLocation?
+            location: CompilerMessageSourceLocation?
         ) {
             if (severity === CompilerMessageSeverity.ERROR) {
                 val prefix = if (location == null)
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractIrTransformTest.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractIrTransformTest.kt
index cef22cc..0b78735 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractIrTransformTest.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractIrTransformTest.kt
@@ -17,23 +17,31 @@
 package androidx.compose.plugins.kotlin
 
 import androidx.compose.plugins.kotlin.compiler.lower.dumpSrc
-import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
+import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
+import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
 import org.jetbrains.kotlin.backend.common.ir.createParameterDeclarations
 import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions
+import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
 import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
 import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
 import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
 import org.jetbrains.kotlin.config.JVMConfigurationKeys
 import org.jetbrains.kotlin.config.JvmTarget
 import org.jetbrains.kotlin.config.languageVersionSettings
+import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin
+import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin
+import org.jetbrains.kotlin.ir.backend.jvm.serialization.EmptyLoggingContext
+import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrLinker
+import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmManglerDesc
 import org.jetbrains.kotlin.ir.builders.declarations.buildClass
 import org.jetbrains.kotlin.ir.declarations.IrClass
 import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
 import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
+import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory
+import org.jetbrains.kotlin.ir.linkage.IrDeserializer
+import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
 import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator
-import org.jetbrains.kotlin.ir.util.IrProvider
 import org.jetbrains.kotlin.ir.util.dump
-import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
 import org.jetbrains.kotlin.load.kotlin.JvmPackagePartSource
 import org.jetbrains.kotlin.psi.KtFile
 import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
@@ -49,18 +57,18 @@
     override fun postProcessingStep(
         module: IrModuleFragment,
         generatorContext: GeneratorContext,
-        irProviders: List<IrProvider>
+        irLinker: IrDeserializer
     ) {
         extension.generate(
             module,
-            IrPluginContext(
+            IrPluginContextImpl(
                 generatorContext.moduleDescriptor,
                 generatorContext.bindingContext,
                 generatorContext.languageVersionSettings,
                 generatorContext.symbolTable,
                 generatorContext.typeTranslator,
                 generatorContext.irBuiltIns,
-                irProviders = irProviders
+                irLinker
             )
         )
     }
@@ -79,7 +87,7 @@
     abstract fun postProcessingStep(
         module: IrModuleFragment,
         generatorContext: GeneratorContext,
-        irProviders: List<IrProvider>
+        irLinker: IrDeserializer
     )
 
     fun verifyComposeIrTransform(
@@ -161,9 +169,13 @@
             myTestRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES
         ).also { setupEnvironment(it) }
 
+        val mangler = JvmManglerDesc(null)
+        val signaturer = JvmIdSignatureDescriptor(mangler)
+
         val psi2ir = Psi2IrTranslator(
             environment.configuration.languageVersionSettings,
-            Psi2IrConfiguration(ignoreErrors = false)
+            Psi2IrConfiguration(ignoreErrors = false),
+            signaturer
         )
 
         val analysisResult = JvmResolveUtil.analyze(files, environment)
@@ -177,29 +189,62 @@
             analysisResult.bindingContext,
             extensions = extensions
         )
-
-        val irProviders = generateTypicalIrProviderList(
-            analysisResult.moduleDescriptor,
+        val stubGenerator = DeclarationStubGenerator(
+            generatorContext.moduleDescriptor,
+            generatorContext.symbolTable,
+            generatorContext.irBuiltIns.languageVersionSettings,
+            extensions
+        )
+        val functionFactory = IrFunctionFactory(
+            generatorContext.irBuiltIns,
+            generatorContext.symbolTable
+        )
+        generatorContext.irBuiltIns.functionFactory = functionFactory
+        val irLinker = JvmIrLinker(
+            generatorContext.moduleDescriptor,
+            EmptyLoggingContext,
             generatorContext.irBuiltIns,
             generatorContext.symbolTable,
-            extensions = extensions
+            functionFactory,
+            stubGenerator,
+            mangler
         )
 
+        generatorContext.moduleDescriptor.allDependencyModules.map {
+            val capability = it.getCapability(KlibModuleOrigin.CAPABILITY)
+            val kotlinLibrary = (capability as? DeserializedKlibModuleOrigin)?.library
+            irLinker.deserializeIrModuleHeader(it, kotlinLibrary)
+        }
+
+        val irProviders = listOf(irLinker)
+
+        stubGenerator.setIrProviders(irProviders)
+
         ExternalDependenciesGenerator(
             generatorContext.symbolTable,
-            irProviders
+            irProviders,
+            generatorContext.languageVersionSettings
         ).generateUnboundSymbolsAsDependencies()
 
         psi2ir.addPostprocessingStep { module ->
-            postProcessingStep(module, generatorContext, irProviders)
+            val old = stubGenerator.unboundSymbolGeneration
+            try {
+                stubGenerator.unboundSymbolGeneration = true
+                postProcessingStep(module, generatorContext, irLinker)
+            } finally {
+                stubGenerator.unboundSymbolGeneration = old
+            }
         }
 
-        return psi2ir.generateModuleFragment(
+        val irModuleFragment = psi2ir.generateModuleFragment(
             generatorContext,
             files,
-            irProviders = irProviders,
+            irProviders,
+            IrGenerationExtension.getInstances(myEnvironment!!.project),
             expectDescriptorToSymbol = null
         )
+        irLinker.postProcess()
+        return irModuleFragment
     }
 
     fun facadeClassGenerator(source: DeserializedContainerSource): IrClass? {
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractMultiPlatformIntegrationTest.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractMultiPlatformIntegrationTest.kt
index 5b59a93..514c819 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractMultiPlatformIntegrationTest.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/AbstractMultiPlatformIntegrationTest.kt
@@ -141,7 +141,7 @@
                     ClassReader.SKIP_CODE or ClassReader.SKIP_DEBUG or ClassReader.SKIP_FRAMES
                 )
                 sb.append(os.toString())
-                sb.appendln()
+                sb.appendLine()
             }
 
         assertEquals(output.trimIndent(), printPublicApi(sb.toString(), "test"))
@@ -159,8 +159,8 @@
                 commonSources?.absolutePath?.let("-Xcommon-sources="::plus)) +
                     "-Xmulti-platform" + mainArguments
         )
-        appendln("Exit code: $exitCode")
-        appendln("Output:")
-        appendln(output)
+        appendLine("Exit code: $exitCode")
+        appendLine("Output:")
+        appendLine(output)
     }.trimTrailingWhitespacesAndAddNewlineAtEOF().trimEnd('\r', '\n')
 }
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallLoweringTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallLoweringTests.kt
index 2acb0dc..009a910 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallLoweringTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeCallLoweringTests.kt
@@ -2069,8 +2069,7 @@
             }
 
             @Composable
-            // TODO: Investigate making this private; looks like perhaps a compiler bug as of rebase
-            fun Item(id: Int, onMove: (Int) -> Unit) {
+            private fun Item(id: Int, onMove: (Int) -> Unit) {
                 val count = state { 0 }
                 LinearLayout(orientation=LinearLayout.HORIZONTAL) {
                     TextView(id=(id+$tvId), text="id: ${'$'}id amt: ${'$'}{count.value}")
@@ -2153,16 +2152,15 @@
     fun testKeyTag(): Unit = ensureSetup {
         compose(
             """
-            val list = mutableListOf(0,1,2,3)
+            val list = mutableStateListOf(0,1,2,3)
 
             @Composable
             fun Reordering() {
                 LinearLayout {
-                    val recompose = invalidate
                     Button(
                       id=50,
                       text="Recompose!",
-                       list.add(list.removeAt(0)); recompose(); }
+                       list.add(list.removeAt(0)); }
                     )
                     LinearLayout(id=100) {
                         for(id in list) {
@@ -2175,8 +2173,7 @@
             }
 
             @Composable
-            // TODO: Investigate making this private; looks like perhaps a compiler bug as of rebase
-            fun StatefulButton() {
+            private fun StatefulButton() {
                 val count = state { 0 }
                 Button(text="Clicked ${'$'}{count.value} times!",  count.value++ })
             }
@@ -2409,7 +2406,10 @@
               }
             }
 
-            fun forceNewLambda(): () -> Unit = { }
+            fun forceNewLambda(): () -> Unit {
+                val capturedParameter = Math.random()
+                return { capturedParameter }
+            }
 
             @Composable
             fun Main(unchanged: () -> Unit) {
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeMultiPlatformTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeMultiPlatformTests.kt
index 0fb75ed5..ad056da 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeMultiPlatformTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposeMultiPlatformTests.kt
@@ -32,7 +32,7 @@
             public final class JvmKt {
               private final static Ljava/lang/String; foo
               public final static getFoo()Ljava/lang/String;
-              public final static <clinit>()V
+              static <clinit>()V
             }
         """
         )
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposerParamSignatureTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposerParamSignatureTests.kt
index 01f8b90..fc71a48 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposerParamSignatureTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/ComposerParamSignatureTests.kt
@@ -43,11 +43,11 @@
         // the children lambda's restart group because we are using the lambda itself.
         """
             public final class TestKt {
-              public final static Foo(Lkotlin/jvm/functions/Function3;Landroidx/compose/Composer;II)V
-              public final static Bar(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Foo%1 null null
+              public final static Foo(Lkotlin/jvm/functions/Function3;Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Bar%1 null null
               final static INNERCLASS TestKt%Bar%2 null null
+              public final static Bar(Landroidx/compose/Composer;II)V
             }
             final class TestKt%Foo%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(Lkotlin/jvm/functions/Function3;I)V
@@ -61,7 +61,9 @@
             final class TestKt%Bar%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>()V
               public final invoke(Landroidx/compose/Composer;II)V
+              public final static LTestKt%Bar%1; INSTANCE
               public synthetic bridge invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+              static <clinit>()V
               final static INNERCLASS TestKt%Bar%1 null null
               OUTERCLASS TestKt Bar (Landroidx/compose/Composer;II)V
             }
@@ -227,11 +229,11 @@
         """,
         """
             public final class TestKt {
-              public final static Foo(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Landroidx/compose/Composer;II)V
-              public final static Example(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Foo%1 null null
-              final static INNERCLASS TestKt%Example%1 null null
+              public final static Foo(Ljava/lang/String;Lkotlin/jvm/functions/Function0;Landroidx/compose/Composer;II)V
+              final static INNERCLASS TestKt%Example%1%1 null null
               final static INNERCLASS TestKt%Example%2 null null
+              public final static Example(Landroidx/compose/Composer;II)V
             }
             final class TestKt%Foo%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(Ljava/lang/String;Lkotlin/jvm/functions/Function0;I)V
@@ -243,11 +245,13 @@
               final static INNERCLASS TestKt%Foo%1 null null
               OUTERCLASS TestKt Foo (Ljava/lang/String;Lkotlin/jvm/functions/Function0;Landroidx/compose/Composer;II)V
             }
-            final class TestKt%Example%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function0 {
+            final class TestKt%Example%1%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function0 {
               <init>()V
               public final invoke()V
+              public final static LTestKt%Example%1%1; INSTANCE
               public synthetic bridge invoke()Ljava/lang/Object;
-              final static INNERCLASS TestKt%Example%1 null null
+              static <clinit>()V
+              final static INNERCLASS TestKt%Example%1%1 null null
               OUTERCLASS TestKt Example (Landroidx/compose/Composer;II)V
             }
             final class TestKt%Example%2 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
@@ -274,10 +278,10 @@
             public final class TestKt {
               private final static Landroidx/compose/ProvidableAmbient; a
               public final static getA()Landroidx/compose/ProvidableAmbient;
-              public final static Foo(Landroidx/compose/Composer;II)V
-              public final static <clinit>()V
               final static INNERCLASS TestKt%Foo%1 null null
+              public final static Foo(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%a%1 null null
+              static <clinit>()V
             }
             final class TestKt%Foo%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(I)V
@@ -290,7 +294,9 @@
             final class TestKt%a%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function0 {
               <init>()V
               public final invoke()I
+              public final static LTestKt%a%1; INSTANCE
               public synthetic bridge invoke()Ljava/lang/Object;
+              static <clinit>()V
               final static INNERCLASS TestKt%a%1 null null
               OUTERCLASS TestKt <clinit> ()V
             }
@@ -455,8 +461,8 @@
         """,
         """
             public final class TestKt {
-              public final static Foo(ILandroidx/compose/Composer;III)V
               final static INNERCLASS TestKt%Foo%1 null null
+              public final static Foo(ILandroidx/compose/Composer;III)V
             }
             final class TestKt%Foo%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(III)V
@@ -486,10 +492,10 @@
         """
             public final class TestKt {
               public final static identity(Ljava/lang/Object;Landroidx/compose/Composer;II)Ljava/lang/Object;
-              public final static Foo(ILandroidx/compose/Composer;III)V
-              public final static test(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Foo%1 null null
+              public final static Foo(ILandroidx/compose/Composer;III)V
               final static INNERCLASS TestKt%test%1 null null
+              public final static test(Landroidx/compose/Composer;II)V
             }
             final class TestKt%Foo%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(III)V
@@ -528,10 +534,10 @@
         """,
         """
             public final class TestKt {
-              public final static Foo(ILjava/lang/String;Landroidx/compose/Composer;II)V
-              public final static Bar(ILjava/lang/String;Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Foo%1 null null
+              public final static Foo(ILjava/lang/String;Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Bar%1 null null
+              public final static Bar(ILjava/lang/String;Landroidx/compose/Composer;II)V
             }
             final class TestKt%Foo%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(ILjava/lang/String;I)V
@@ -567,10 +573,10 @@
         """,
         """
             public final class TestKt {
-              public final static Foo(Landroidx/compose/Composer;II)V
-              public final static Bar(ILandroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Foo%2 null null
+              public final static Foo(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Bar%1 null null
+              public final static Bar(ILandroidx/compose/Composer;II)V
             }
             final class TestKt%Foo%2 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(I)V
@@ -604,10 +610,10 @@
             public final class TestKt {
               private final static Lkotlin/jvm/functions/Function4; foo
               public final static getFoo()Lkotlin/jvm/functions/Function4;
-              public final static Bar(Landroidx/compose/Composer;II)V
-              public final static <clinit>()V
               final static INNERCLASS TestKt%Bar%1 null null
+              public final static Bar(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%foo%1 null null
+              static <clinit>()V
             }
             final class TestKt%Bar%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(I)V
@@ -620,7 +626,9 @@
             final class TestKt%foo%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function4 {
               <init>()V
               public final invoke(ILandroidx/compose/Composer;II)V
+              public final static LTestKt%foo%1; INSTANCE
               public synthetic bridge invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+              static <clinit>()V
               final static INNERCLASS TestKt%foo%1 null null
               OUTERCLASS TestKt <clinit> ()V
             }
@@ -638,14 +646,16 @@
         """,
         """
             public final class TestKt {
-              public final static Bar(Lkotlin/jvm/functions/Function3;Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Bar%foo%1 null null
               final static INNERCLASS TestKt%Bar%1 null null
+              public final static Bar(Lkotlin/jvm/functions/Function3;Landroidx/compose/Composer;II)V
             }
             final class TestKt%Bar%foo%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function4 {
               <init>()V
               public final invoke(ILandroidx/compose/Composer;II)V
+              public final static LTestKt%Bar%foo%1; INSTANCE
               public synthetic bridge invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+              static <clinit>()V
               final static INNERCLASS TestKt%Bar%foo%1 null null
               OUTERCLASS TestKt Bar (Lkotlin/jvm/functions/Function3;Landroidx/compose/Composer;II)V
             }
@@ -682,11 +692,11 @@
         """,
         """
             public final class TestKt {
-              public final static Wrap(Lkotlin/jvm/functions/Function4;Landroidx/compose/Composer;II)V
-              public final static App(ILandroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Wrap%1 null null
+              public final static Wrap(Lkotlin/jvm/functions/Function4;Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%App%1 null null
               final static INNERCLASS TestKt%App%2 null null
+              public final static App(ILandroidx/compose/Composer;II)V
             }
             final class TestKt%Wrap%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(Lkotlin/jvm/functions/Function4;I)V
@@ -699,10 +709,10 @@
             }
             final class TestKt%App%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function4 {
               <init>(I)V
+              final static INNERCLASS TestKt%App%1%1 null null
               public final invoke(ILandroidx/compose/Composer;II)V
               private final synthetic I %x
               public synthetic bridge invoke(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-              final static INNERCLASS TestKt%App%1%1 null null
               final static INNERCLASS TestKt%App%1 null null
               OUTERCLASS TestKt App (ILandroidx/compose/Composer;II)V
             }
@@ -745,8 +755,8 @@
             }
             public final class FooImpl implements Foo {
               public <init>()V
-              public bar(Landroidx/compose/Composer;II)V
               final static INNERCLASS FooImpl%bar%1 null null
+              public bar(Landroidx/compose/Composer;II)V
             }
             final class FooImpl%bar%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(LFooImpl;I)V
@@ -778,9 +788,9 @@
               private <init>()V
               public final getCurrent(Landroidx/compose/Composer;II)Ljava/lang/Object;
               public static synthetic getCurrent%annotations()V
+              final static INNERCLASS Ambient2%foo%1 null null
               public final foo(Landroidx/compose/Composer;II)V
               public synthetic <init>(Lkotlin/jvm/internal/DefaultConstructorMarker;)V
-              final static INNERCLASS Ambient2%foo%1 null null
             }
             final class Ambient2%foo%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(LAmbient2;I)V
@@ -793,15 +803,12 @@
             }
             public abstract class ProvidableAmbient2 extends Ambient2 {
               public <init>()V
-              public static synthetic getCurrent%annotations()V
             }
             public final class DynamicProvidableAmbient2 extends ProvidableAmbient2 {
               public <init>()V
-              public static synthetic getCurrent%annotations()V
             }
             public final class StaticProvidableAmbient2 extends ProvidableAmbient2 {
               public <init>()V
-              public static synthetic getCurrent%annotations()V
             }
         """
     )
@@ -904,8 +911,8 @@
             public final class TestKt {
               public final static getBar(Landroidx/compose/Composer;II)I
               public static synthetic getBar%annotations()V
-              public final static Example(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Example%1 null null
+              public final static Example(Landroidx/compose/Composer;II)V
             }
             final class TestKt%Example%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(I)V
@@ -936,8 +943,8 @@
             }
             public final class FooImpl extends BaseFoo {
               public <init>()V
-              public bar(Landroidx/compose/Composer;II)V
               final static INNERCLASS FooImpl%bar%1 null null
+              public bar(Landroidx/compose/Composer;II)V
             }
             final class FooImpl%bar%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(LFooImpl;I)V
@@ -970,14 +977,14 @@
         """,
         """
             public final class TestKt {
-              public final static Wat(Landroidx/compose/Composer;II)V
-              public final static Foo(ILandroidx/compose/Composer;II)V
-              private final static Foo%goo(Landroidx/compose/Composer;II)V
-              public final static synthetic access%Foo%goo(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Wat%1 null null
+              public final static Wat(Landroidx/compose/Composer;II)V
               public final static INNERCLASS TestKt%Foo%Bar null Bar
               final static INNERCLASS TestKt%Foo%1 null null
+              public final static Foo(ILandroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Foo%goo%1 null null
+              private final static Foo%goo(Landroidx/compose/Composer;II)V
+              public final static synthetic access%Foo%goo(Landroidx/compose/Composer;II)V
             }
             final class TestKt%Wat%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(I)V
@@ -989,8 +996,8 @@
             }
             public final class TestKt%Foo%Bar {
               public <init>()V
-              public final baz(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Foo%Bar%baz%1 null null
+              public final baz(Landroidx/compose/Composer;II)V
               public final static INNERCLASS TestKt%Foo%Bar null Bar
               OUTERCLASS TestKt Foo (ILandroidx/compose/Composer;II)V
             }
@@ -1052,12 +1059,12 @@
             public final class TestKt {
               public final static A()V
               public final static getB()I
-              public final static C(I)V
-              public final static I(Lkotlin/jvm/functions/Function0;)V
-              public final static J()V
               public final static INNERCLASS TestKt%C%D null D
               public final static INNERCLASS TestKt%C%g%1 null null
+              public final static C(I)V
+              public final static I(Lkotlin/jvm/functions/Function0;)V
               final static INNERCLASS TestKt%J%1 null null
+              public final static J()V
             }
             public final class TestKt%C%D {
               public <init>()V
@@ -1074,16 +1081,20 @@
             }
             final class TestKt%J%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function0 {
               <init>()V
-              public final invoke()V
-              public synthetic bridge invoke()Ljava/lang/Object;
               final static INNERCLASS TestKt%J%1%1 null null
+              public final invoke()V
+              public final static LTestKt%J%1; INSTANCE
+              public synthetic bridge invoke()Ljava/lang/Object;
+              static <clinit>()V
               final static INNERCLASS TestKt%J%1 null null
               OUTERCLASS TestKt J ()V
             }
             final class TestKt%J%1%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function0 {
               <init>()V
               public final invoke()V
+              public final static LTestKt%J%1%1; INSTANCE
               public synthetic bridge invoke()Ljava/lang/Object;
+              static <clinit>()V
               final static INNERCLASS TestKt%J%1%1 null null
               final static INNERCLASS TestKt%J%1 null null
               OUTERCLASS TestKt%J%1 invoke ()V
@@ -1100,8 +1111,8 @@
         """,
         """
             public final class TestKt {
-              public final static Example(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Example%1 null null
+              public final static Example(Landroidx/compose/Composer;II)V
             }
             final class TestKt%Example%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(I)V
@@ -1128,8 +1139,8 @@
         """
             public final class TestKt {
               public final static Example(Lkotlin/jvm/functions/Function3;Landroidx/compose/Composer;II)V
-              public final static Test(Landroidx/compose/Composer;II)V
               final static INNERCLASS TestKt%Test%2 null null
+              public final static Test(Landroidx/compose/Composer;II)V
             }
             final class TestKt%Test%2 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function3 {
               <init>(I)V
@@ -1152,14 +1163,16 @@
         """,
         """
             public final class TestKt {
+              final static INNERCLASS TestKt%myProperty%1 null null
               public final static getMyProperty(Landroidx/compose/Composer;II)Lkotlin/jvm/functions/Function0;
               public static synthetic getMyProperty%annotations()V
-              final static INNERCLASS TestKt%myProperty%1 null null
             }
             final class TestKt%myProperty%1 extends kotlin/jvm/internal/Lambda implements kotlin/jvm/functions/Function0 {
               <init>()V
               public final invoke()V
+              public final static LTestKt%myProperty%1; INSTANCE
               public synthetic bridge invoke()Ljava/lang/Object;
+              static <clinit>()V
               final static INNERCLASS TestKt%myProperty%1 null null
               OUTERCLASS TestKt getMyProperty (Landroidx/compose/Composer;II)Lkotlin/jvm/functions/Function0;
             }
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FcsTypeResolutionTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FcsTypeResolutionTests.kt
index 6d32c5c..562e598 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FcsTypeResolutionTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FcsTypeResolutionTests.kt
@@ -283,15 +283,15 @@
                 Bar(x=1, value=B(), f=fb)
                 Bar(x=1, value=B(), f={ it.<!UNRESOLVED_REFERENCE!>a<!>() })
                 Bar(x=1, value=A(), f={ it.<!UNRESOLVED_REFERENCE!>b<!>() })
-                <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>Bar<!>(
+                Bar(
                   x=1, 
                   value=A(), 
-                  f=fb
+                  f=<!TYPE_MISMATCH!>fb<!>
                 )
-                <!TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>Bar<!>(
+                Bar(
                   x=1,
                   value=B(), 
-                  f=fa
+                  f=<!TYPE_MISMATCH!>fa<!>
                 )
             }
 
@@ -426,7 +426,7 @@
                 MyNamespace.Bar()
                 MyNamespace.Baz()
                 MyNamespace.<!UNRESOLVED_REFERENCE!>Qoo<!>()
-                MyNamespace.<!FUNCTION_EXPECTED!>someString<!>()
+                MyNamespace.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>someString<!>()
                 MyNamespace.NonComponent()
                 MyNamespace.Bar {}
                 MyNamespace.Baz <!TOO_MANY_ARGUMENTS!>{}<!>
@@ -444,7 +444,7 @@
                 MyNamespace.<!UNRESOLVED_REFERENCE!>Qoo<!> {
                 }
 
-                MyNamespace.<!FUNCTION_EXPECTED!>someString<!> {
+                MyNamespace.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>someString<!> {
                 }
 
                 <!UNRESOLVED_REFERENCE!>SomethingThatDoesntExist<!>.Foo {
@@ -495,8 +495,8 @@
                 MultiChildren { x, y ->
                     println(x + y)
                 }
-                <!NONE_APPLICABLE!>MultiChildren<!> { <!CANNOT_INFER_PARAMETER_TYPE!>x<!>, 
-                <!CANNOT_INFER_PARAMETER_TYPE!>y<!>, <!CANNOT_INFER_PARAMETER_TYPE!>z<!> ->
+                <!NONE_APPLICABLE!>MultiChildren<!> { x, 
+                y, z ->
                     println(x + y + z)
                 }
             }
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FunctionBodySkippingTransformTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FunctionBodySkippingTransformTests.kt
index ca250e8..21c033d 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FunctionBodySkippingTransformTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/FunctionBodySkippingTransformTests.kt
@@ -350,12 +350,8 @@
                   }
                 }
                 val tmp0_orientation = LayoutOrientation.Vertical
-                val tmp1_arrangement = verticalArrangement
-                val tmp2_crossAxisAlignment = horizontalGravity
-                val tmp3_crossAxisSize = SizeMode.Wrap
-                val tmp4_modifier = modifier
-                val tmp5_children = children
-                RowColumnImpl(tmp0_orientation, tmp4_modifier, tmp1_arrangement, tmp2_crossAxisAlignment, tmp3_crossAxisSize, tmp5_children, %composer, <>, 0b011000000110 or 0b00011000 and %dirty shl 0b0010 or 0b01100000 and %dirty shl 0b0010 or 0b000110000000 and %dirty shl 0b0010 or 0b0001100000000000 and %dirty shl 0b0100, 0)
+                val tmp1_crossAxisSize = SizeMode.Wrap
+                RowColumnImpl(tmp0_orientation, modifier, verticalArrangement, horizontalGravity, tmp1_crossAxisSize, children, %composer, <>, 0b011000000110 or 0b00011000 and %dirty shl 0b0010 or 0b01100000 and %dirty shl 0b0010 or 0b000110000000 and %dirty shl 0b0010 or 0b0001100000000000 and %dirty shl 0b0100, 0)
               } else {
                 %composer.skipToGroupEnd()
               }
@@ -1069,9 +1065,7 @@
                 %dirty = %dirty or if (%composer.changed(y)) 0b00010000 else 0b1000
               }
               if (%dirty and 0b1011 xor 0b1010 !== 0 || !%composer.skipping) {
-                val tmp0_y = y
-                val tmp1_x = x
-                A(tmp1_x, tmp0_y, %composer, <>, 0b0110 and %dirty or 0b00011000 and %dirty, 0)
+                A(x, y, %composer, <>, 0b0110 and %dirty or 0b00011000 and %dirty, 0)
               } else {
                 %composer.skipToGroupEnd()
               }
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LambdaMemoizationTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LambdaMemoizationTests.kt
index a17847f..af7adda 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LambdaMemoizationTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LambdaMemoizationTests.kt
@@ -61,7 +61,11 @@
             fun Example(model: String) {
               class Nested {
                 // Should not memoize the initializer
-                val lambda: () -> Unit = { }
+                val lambda: () -> Unit
+                  get() {
+                    val capturedParameter = Math.random()
+                    return { capturedParameter }
+                  }
               }
               val n = Nested()
               ValidateModel(model)
diff --git a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LiveLiteralTransformTests.kt b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LiveLiteralTransformTests.kt
index 98ff7b1..350f5b1 100644
--- a/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LiveLiteralTransformTests.kt
+++ b/compose/compose-compiler-hosted/integration-tests/src/test/java/androidx/compose/plugins/kotlin/LiveLiteralTransformTests.kt
@@ -18,10 +18,10 @@
 
 import androidx.compose.plugins.kotlin.compiler.lower.DurableKeyVisitor
 import androidx.compose.plugins.kotlin.compiler.lower.LiveLiteralTransformer
-import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
+import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
 import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
+import org.jetbrains.kotlin.ir.linkage.IrDeserializer
 import org.jetbrains.kotlin.ir.util.DeepCopySymbolRemapper
-import org.jetbrains.kotlin.ir.util.IrProvider
 import org.jetbrains.kotlin.psi2ir.generators.GeneratorContext
 import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
 import org.junit.Test
@@ -491,17 +491,18 @@
     override fun postProcessingStep(
         module: IrModuleFragment,
         generatorContext: GeneratorContext,
-        irProviders: List<IrProvider>
+        irLinker: IrDeserializer
     ) {
-        val pluginContext = IrPluginContext(
+        val pluginContext = IrPluginContextImpl(
             generatorContext.moduleDescriptor,
             generatorContext.bindingContext,
             generatorContext.languageVersionSettings,
             generatorContext.symbolTable,
             generatorContext.typeTranslator,
             generatorContext.irBuiltIns,
-            irProviders = irProviders
+            linker = irLinker
         )
+        @Suppress("DEPRECATION")
         val bindingTrace = DelegatingBindingTrace(pluginContext.bindingContext, "test trace")
         val symbolRemapper = DeepCopySymbolRemapper()
         val keyVisitor = DurableKeyVisitor(builtKeys)
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableCallChecker.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableCallChecker.kt
index fc6e5873..f83e46b 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableCallChecker.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposableCallChecker.kt
@@ -117,6 +117,7 @@
         )
 }
 
+@Suppress("DEPRECATION_ERROR") // reportFromPlugin is deprecated.
 open class ComposableCallChecker : CallChecker, AdditionalTypeChecker,
     StorageComponentContainerContributor {
     override fun registerModuleComponents(
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeIrGenerationExtension.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeIrGenerationExtension.kt
index dde7afd..c95902c 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeIrGenerationExtension.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/ComposeIrGenerationExtension.kt
@@ -16,19 +16,19 @@
 
 package androidx.compose.plugins.kotlin
 
+import androidx.compose.plugins.kotlin.compiler.lower.ComposableFunctionBodyTransformer
 import androidx.compose.plugins.kotlin.compiler.lower.ComposerIntrinsicTransformer
 import androidx.compose.plugins.kotlin.compiler.lower.ComposerLambdaMemoization
 import androidx.compose.plugins.kotlin.compiler.lower.ComposerParamTransformer
-import androidx.compose.plugins.kotlin.compiler.lower.ComposableFunctionBodyTransformer
 import androidx.compose.plugins.kotlin.compiler.lower.DurableKeyVisitor
 import androidx.compose.plugins.kotlin.compiler.lower.LiveLiteralTransformer
 import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
 import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
+import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
 import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
 import org.jetbrains.kotlin.ir.symbols.IrSymbol
 import org.jetbrains.kotlin.ir.util.DeepCopySymbolRemapper
 import org.jetbrains.kotlin.ir.util.SymbolTable
-import org.jetbrains.kotlin.ir.util.getDeclaration
 import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
 
 class ComposeIrGenerationExtension(
@@ -39,6 +39,7 @@
         pluginContext: IrPluginContext
     ) {
         // TODO: refactor transformers to work with just BackendContext
+        @Suppress("DEPRECATION")
         val bindingTrace = DelegatingBindingTrace(pluginContext.bindingContext, "trace in " +
                 "ComposeIrGenerationExtension")
 
@@ -95,11 +96,12 @@
         return r
     }
 
+@Suppress("UNUSED_PARAMETER", "DEPRECATION")
 fun generateSymbols(pluginContext: IrPluginContext) {
     lateinit var unbound: List<IrSymbol>
     val visited = mutableSetOf<IrSymbol>()
     do {
-        unbound = pluginContext.symbolTable.allUnbound
+        unbound = (pluginContext.symbolTable as SymbolTable).allUnbound
 
         for (symbol in unbound) {
             if (visited.contains(symbol)) {
@@ -107,7 +109,7 @@
             }
             // Symbol could get bound as a side effect of deserializing other symbols.
             if (!symbol.isBound) {
-                pluginContext.irProviders.getDeclaration(symbol)
+                (pluginContext as IrPluginContextImpl).linker.getDeclaration(symbol)
             }
             if (!symbol.isBound) { visited.add(symbol) }
         }
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/TryCatchComposableChecker.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/TryCatchComposableChecker.kt
index ccf92be4..9aaa358 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/TryCatchComposableChecker.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/TryCatchComposableChecker.kt
@@ -16,13 +16,11 @@
 
 package androidx.compose.plugins.kotlin
 
-import androidx.compose.plugins.kotlin.analysis.ComposeDefaultErrorMessages
 import androidx.compose.plugins.kotlin.analysis.ComposeErrors
 import com.intellij.psi.PsiElement
 import org.jetbrains.kotlin.container.StorageComponentContainer
 import org.jetbrains.kotlin.container.useInstance
 import org.jetbrains.kotlin.descriptors.ModuleDescriptor
-import org.jetbrains.kotlin.diagnostics.reportFromPlugin
 import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
 import org.jetbrains.kotlin.platform.TargetPlatform
 import org.jetbrains.kotlin.platform.jvm.isJvm
@@ -55,11 +53,10 @@
                 val parent = walker.parent
                 if (parent is KtTryExpression) {
                     if (walker == parent.tryBlock)
-                        trace.reportFromPlugin(
+                        trace.report(
                             ComposeErrors.ILLEGAL_TRY_CATCH_AROUND_COMPOSABLE.on(
                                 parent.tryKeyword!!
-                            ),
-                            ComposeDefaultErrorMessages
+                            )
                         )
                 }
                 walker = try { walker.parent } catch (e: Throwable) { null }
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeErrors.java b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeErrors.java
index 9499817..85927e9 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeErrors.java
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/analysis/ComposeErrors.java
@@ -40,8 +40,10 @@
     @SuppressWarnings("UnusedDeclaration")
     Object INITIALIZER = new Object() {
         {
-            Errors.Initializer.initializeFactoryNames(ComposeErrors.class);
+            Errors.Initializer.initializeFactoryNamesAndDefaultErrorMessages(
+                ComposeErrors.class,
+                ComposeDefaultErrorMessages.INSTANCE
+            );
         }
     };
-
 }
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/AbstractComposeLowering.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/AbstractComposeLowering.kt
index 053612c..b42e5b1 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/AbstractComposeLowering.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/AbstractComposeLowering.kt
@@ -28,6 +28,7 @@
 import org.jetbrains.kotlin.backend.common.descriptors.isFunctionOrKFunctionType
 import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
 import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
+import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
 import org.jetbrains.kotlin.backend.jvm.lower.inlineclasses.InlineClassAbi
 import org.jetbrains.kotlin.builtins.KotlinBuiltIns
 import org.jetbrains.kotlin.builtins.extractParameterNameFromFunctionTypeArgument
@@ -112,13 +113,15 @@
 import org.jetbrains.kotlin.ir.types.isPrimitiveType
 import org.jetbrains.kotlin.ir.types.makeNullable
 import org.jetbrains.kotlin.ir.types.toKotlinType
+import org.jetbrains.kotlin.ir.types.typeWith
 import org.jetbrains.kotlin.ir.util.ConstantValueGenerator
 import org.jetbrains.kotlin.ir.util.DeepCopySymbolRemapper
 import org.jetbrains.kotlin.ir.util.TypeTranslator
+import org.jetbrains.kotlin.ir.util.defaultType
 import org.jetbrains.kotlin.ir.util.endOffset
+import org.jetbrains.kotlin.ir.util.functions
 import org.jetbrains.kotlin.ir.util.getPrimitiveArrayElementType
 import org.jetbrains.kotlin.ir.util.getPropertyGetter
-import org.jetbrains.kotlin.ir.util.getSimpleFunction
 import org.jetbrains.kotlin.ir.util.primaryConstructor
 import org.jetbrains.kotlin.ir.util.referenceFunction
 import org.jetbrains.kotlin.ir.util.startOffset
@@ -140,8 +143,8 @@
 import org.jetbrains.kotlin.types.typeUtil.isTypeParameter
 import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
 import org.jetbrains.kotlin.utils.DFS
-import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
 
+@Suppress("DEPRECATION")
 abstract class AbstractComposeLowering(
     val context: IrPluginContext,
     val symbolRemapper: DeepCopySymbolRemapper,
@@ -225,7 +228,7 @@
 
     fun <T : IrSymbol> T.bindIfNecessary(): T {
         if (!isBound) {
-            context.irProviders.firstNotNullResult { it.getDeclaration(this) }
+            (context as IrPluginContextImpl).linker.getDeclaration(this)
         }
         return this
     }
@@ -378,7 +381,11 @@
             this.startOffset ?: UNDEFINED_OFFSET,
             this.endOffset ?: UNDEFINED_OFFSET,
             IrDeclarationOrigin.DEFINED,
-            IrTypeParameterSymbolImpl(this)
+            IrTypeParameterSymbolImpl(this),
+            this.name,
+            this.index,
+            this.isReified,
+            this.variance
         ).also {
             it.parent = this@createParameterDeclarations
         }
@@ -386,11 +393,9 @@
         dispatchReceiverParameter = descriptor.dispatchReceiverParameter?.irValueParameter()
         extensionReceiverParameter = descriptor.extensionReceiverParameter?.irValueParameter()
 
-        assert(valueParameters.isEmpty())
-        descriptor.valueParameters.mapTo(valueParameters) { it.irValueParameter() }
+        valueParameters = descriptor.valueParameters.map { it.irValueParameter() }
 
-        assert(typeParameters.isEmpty())
-        descriptor.typeParameters.mapTo(typeParameters) { it.irTypeParameter() }
+        typeParameters = descriptor.typeParameters.map { it.irTypeParameter() }
     }
 
     protected fun IrBuilderWithScope.irLambdaExpression(
@@ -414,7 +419,16 @@
             startOffset, endOffset,
             IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA,
             symbol,
-            returnType
+            name = descriptor.name,
+            visibility = descriptor.visibility,
+            modality = descriptor.modality,
+            returnType = returnType,
+            isInline = descriptor.isInline,
+            isExternal = descriptor.isExternal,
+            isTailrec = descriptor.isTailrec,
+            isSuspend = descriptor.isSuspend,
+            isOperator = descriptor.isOperator,
+            isExpect = descriptor.isExpect
         ).also {
             it.parent = scope.getLocalDeclarationParent()
             it.createParameterDeclarations()
@@ -435,6 +449,7 @@
                 type = type,
                 symbol = symbol,
                 typeArgumentsCount = descriptor.typeParametersCount,
+                reflectionTarget = null,
                 origin = IrStatementOrigin.LAMBDA
             )
         }
@@ -727,17 +742,44 @@
         } ?: context.symbols.iterator
         val unitType = context.irBuiltIns.unitType
 
-        val getIteratorSymbol = subject.type.classOrNull!!.getSimpleFunction("iterator")!!
-        val nextSymbol = iteratorSymbol.getSimpleFunction("next")!!
-        val hasNextSymbol = iteratorSymbol.getSimpleFunction("hasNext")!!
+        subject.type.classOrNull!!.functions
+            .single { it.descriptor.name.asString() == "iterator" }
+
+        val getIteratorSymbol = subject.type.classOrNull!!.functions
+            .single { it.descriptor.name.asString() == "iterator" }
+
+        getIteratorSymbol.bindIfNecessary()
+
+        if (getIteratorSymbol is IrConstructorSymbol) {
+            throw AssertionError("Should be IrConstructorCall: ${getIteratorSymbol.descriptor}")
+        }
+        getIteratorSymbol.descriptor.typeParametersCount
+        getIteratorSymbol.descriptor.valueParameters.size
+
+        iteratorSymbol.owner.defaultType.classOrNull!!.functions
+            .single { it.descriptor.name.asString() == "next" }
+        val nextSymbol = iteratorSymbol.owner.defaultType.classOrNull!!.functions
+            .single { it.descriptor.name.asString() == "next" }
+        val hasNextSymbol = iteratorSymbol.owner.defaultType.classOrNull!!.functions
+            .single { it.descriptor.name.asString() == "hasNext" }
+        getIteratorSymbol.bindIfNecessary()
+        getIteratorSymbol.owner
+
+        val call = IrCallImpl(
+            UNDEFINED_OFFSET,
+            UNDEFINED_OFFSET,
+            iteratorSymbol.typeWith(elementType),
+            getIteratorSymbol,
+            IrStatementOrigin.FOR_LOOP_ITERATOR
+        )
+
+        call.also {
+            it.dispatchReceiver = subject
+        }
 
         val iteratorVar = irTemporary(
             containingDeclaration = scope,
-            value = irCall(
-                symbol = getIteratorSymbol,
-                origin = IrStatementOrigin.FOR_LOOP_ITERATOR,
-                dispatchReceiver = subject
-            ),
+            value = call,
             isVar = false,
             name = "tmp0_iterator",
             irType = iteratorSymbol.defaultType,
@@ -906,6 +948,7 @@
                     type,
                     function.symbol,
                     function.typeParameters.size,
+                    null,
                     IrStatementOrigin.LAMBDA
                 )
             )
@@ -922,6 +965,7 @@
 }
 
 fun IrValueParameter.isComposerParam(): Boolean =
+    @Suppress("DEPRECATION")
     (descriptor as? ValueParameterDescriptor)?.isComposerParam() ?: false
 
 fun ValueParameterDescriptor.isComposerParam(): Boolean =
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableFunctionBodyTransformer.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableFunctionBodyTransformer.kt
index ef37fa3..5f67294 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableFunctionBodyTransformer.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableFunctionBodyTransformer.kt
@@ -105,6 +105,7 @@
 import org.jetbrains.kotlin.ir.expressions.impl.IrWhenImpl
 import org.jetbrains.kotlin.ir.symbols.IrReturnTargetSymbol
 import org.jetbrains.kotlin.ir.symbols.impl.IrSimpleFunctionSymbolImpl
+import org.jetbrains.kotlin.ir.types.IrSimpleType
 import org.jetbrains.kotlin.ir.types.IrType
 import org.jetbrains.kotlin.ir.types.classOrNull
 import org.jetbrains.kotlin.ir.types.defaultType
@@ -114,6 +115,7 @@
 import org.jetbrains.kotlin.ir.types.makeNullable
 import org.jetbrains.kotlin.ir.types.toKotlinType
 import org.jetbrains.kotlin.ir.util.DeepCopySymbolRemapper
+import org.jetbrains.kotlin.ir.util.findFirstFunction
 import org.jetbrains.kotlin.ir.util.getArguments
 import org.jetbrains.kotlin.ir.util.getPropertyGetter
 import org.jetbrains.kotlin.ir.util.isInlined
@@ -125,7 +127,6 @@
 import org.jetbrains.kotlin.name.FqName
 import org.jetbrains.kotlin.name.Name
 import org.jetbrains.kotlin.psi.KtFunctionLiteral
-import org.jetbrains.kotlin.psi2ir.findFirstFunction
 import org.jetbrains.kotlin.resolve.BindingTrace
 import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
 import org.jetbrains.kotlin.resolve.inline.InlineUtil
@@ -419,6 +420,7 @@
  *       $composer.endRestartGroup()?.updateScope { next -> A(x, next, $changed or 0b1) }
  *     }
  */
+@Suppress("DEPRECATION")
 class ComposableFunctionBodyTransformer(
     context: IrPluginContext,
     symbolRemapper: DeepCopySymbolRemapper,
@@ -542,7 +544,7 @@
     private fun printScopeStack(): String {
         return buildString {
             for (scope in scopeStack) {
-                appendln(scope.name)
+                appendLine(scope.name)
             }
         }
     }
@@ -675,8 +677,7 @@
             // Lambdas should be ignored. All composable lambdas are wrapped by a restartable
             // function wrapper by ComposerLambdaMemoization which supplies the startRestartGroup/
             // endRestartGroup pair on behalf of the lambda.
-            origin != IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA &&
-            origin != IrDeclarationOrigin.LOCAL_FUNCTION_NO_CLOSURE) {
+            origin != IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA) {
 
             return true
         }
@@ -1515,7 +1516,16 @@
             UNDEFINED_OFFSET, UNDEFINED_OFFSET,
             IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA,
             IrSimpleFunctionSymbolImpl(lambdaDescriptor),
-            context.irBuiltIns.unitType
+            name = lambdaDescriptor.name,
+            visibility = lambdaDescriptor.visibility,
+            modality = lambdaDescriptor.modality,
+            returnType = context.irBuiltIns.unitType,
+            isInline = lambdaDescriptor.isInline,
+            isExternal = lambdaDescriptor.isExternal,
+            isTailrec = lambdaDescriptor.isTailrec,
+            isSuspend = lambdaDescriptor.isSuspend,
+            isOperator = lambdaDescriptor.isOperator,
+            isExpect = lambdaDescriptor.isExpect
         ).also { fn ->
             fn.parent = function
             val localIrBuilder = DeclarationIrBuilder(context, fn.symbol)
@@ -2426,7 +2436,8 @@
         val before = mutableStatementContainer()
         val after = mutableStatementContainer()
 
-        if (blockArg !is IrFunctionExpression) error("Expected function expression")
+        if (blockArg !is IrFunctionExpression)
+            error("Expected function expression but was ${blockArg?.let{it::class}}")
 
         val (block, resultVar) = blockArg.function.body!!.asBodyAndResultVar()
 
@@ -2715,7 +2726,9 @@
         expression.transformChildren()
         val endBlock = mutableStatementContainer()
         encounteredReturn(expression.returnTargetSymbol) { endBlock.statements.add(it) }
-        return if (expression.value.type.isUnitOrNullableUnit()) {
+        return if (expression.value.type
+                .also { if (it is IrSimpleType) it.classifier.bindIfNecessary() }
+                .isUnitOrNullableUnit()) {
             expression.wrap(listOf(endBlock))
         } else {
             val tempVar = irTemporary(expression.value, nameHint = "return")
@@ -2956,8 +2969,9 @@
                             changedParams += param
                         paramName.startsWith("\$anonymous\$parameter") -> Unit
                         paramName.startsWith("\$name\$for\$destructuring") -> Unit
+                        paramName.startsWith("\$noName_") -> Unit
                         else -> {
-                            error("Unexpected parameter name: $paramName")
+                            Unit
                         }
                     }
                 }
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableTypeRemapper.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableTypeRemapper.kt
index 457e511..596bf1c 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableTypeRemapper.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposableTypeRemapper.kt
@@ -18,8 +18,8 @@
 
 import androidx.compose.plugins.kotlin.ComposeFqNames
 import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
+import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
 import org.jetbrains.kotlin.backend.common.pop
-import org.jetbrains.kotlin.backend.jvm.codegen.AnnotationCodegen.Companion.annotationClass
 import org.jetbrains.kotlin.builtins.isFunctionType
 import org.jetbrains.kotlin.descriptors.ClassDescriptor
 import org.jetbrains.kotlin.ir.IrElement
@@ -45,11 +45,9 @@
 import org.jetbrains.kotlin.ir.expressions.IrCall
 import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
 import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
-import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
 import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
 import org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl
 import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
-import org.jetbrains.kotlin.ir.symbols.IrSymbol
 import org.jetbrains.kotlin.ir.types.IrSimpleType
 import org.jetbrains.kotlin.ir.types.IrType
 import org.jetbrains.kotlin.ir.types.IrTypeAbbreviation
@@ -61,22 +59,20 @@
 import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection
 import org.jetbrains.kotlin.ir.util.DeepCopyIrTreeWithSymbols
 import org.jetbrains.kotlin.ir.util.DeepCopySymbolRemapper
-import org.jetbrains.kotlin.ir.util.IrProvider
 import org.jetbrains.kotlin.ir.util.SymbolRemapper
 import org.jetbrains.kotlin.ir.util.SymbolRenamer
 import org.jetbrains.kotlin.ir.util.TypeRemapper
 import org.jetbrains.kotlin.ir.util.TypeTranslator
+import org.jetbrains.kotlin.ir.util.findFirstFunction
 import org.jetbrains.kotlin.ir.util.hasAnnotation
 import org.jetbrains.kotlin.ir.util.patchDeclarationParents
 import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
 import org.jetbrains.kotlin.name.FqName
-import org.jetbrains.kotlin.psi2ir.findFirstFunction
 import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull
 import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
 import org.jetbrains.kotlin.types.KotlinType
 import org.jetbrains.kotlin.types.Variance
 import org.jetbrains.kotlin.types.typeUtil.replaceArgumentsWithStarProjections
-import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
 
 class DeepCopyIrTreeWithSymbolsPreservingMetadata(
     private val context: IrPluginContext,
@@ -120,7 +116,8 @@
     }
 
     override fun visitConstructorCall(expression: IrConstructorCall): IrConstructorCall {
-        if (!expression.symbol.isBound) context.irProviders.getDeclaration(expression.symbol)
+        if (!expression.symbol.isBound)
+            (context as IrPluginContextImpl).linker.getDeclaration(expression.symbol)
         val ownerFn = expression.symbol.owner as? IrConstructor
         // If we are calling an external constructor, we want to "remap" the types of its signature
         // as well, since if it they are @Composable it will have its unmodified signature. These
@@ -154,8 +151,8 @@
     }
 
     override fun visitCall(expression: IrCall): IrCall {
-        if (!expression.symbol.isBound) context.irProviders.getDeclaration(expression.symbol)
         val ownerFn = expression.symbol.owner as? IrSimpleFunction
+        @Suppress("DEPRECATION")
         val containingClass = expression.symbol.descriptor.containingDeclaration as? ClassDescriptor
 
         // Any virtual calls on composable functions we want to make sure we update the call to
@@ -171,8 +168,10 @@
             expression.dispatchReceiver?.type?.isComposable() == true
         ) {
             val typeArguments = containingClass.defaultType.arguments
+            @Suppress("DEPRECATION")
             val newFnClass = context.symbolTable.referenceClass(context.builtIns
                 .getFunction(typeArguments.size))
+            @Suppress("DEPRECATION")
             val newDescriptor = newFnClass
                 .descriptor
                 .unsubstitutedMemberScope
@@ -187,9 +186,8 @@
             )
             symbolRemapper.visitSimpleFunction(newFn)
             newFn = super.visitSimpleFunction(newFn).also { fn ->
-                context.irProviders.getDeclaration(newFnClass)
                 fn.parent = newFnClass.owner
-                ownerFn.overriddenSymbols.mapTo(fn.overriddenSymbols) { it }
+                fn.overriddenSymbols = ownerFn.overriddenSymbols.map { it }
                 fn.dispatchReceiverParameter = ownerFn.dispatchReceiverParameter
                 fn.extensionReceiverParameter = ownerFn.extensionReceiverParameter
                 newDescriptor.valueParameters.forEach { p ->
@@ -288,20 +286,10 @@
             extensionReceiver = original.extensionReceiver?.transform()
         }
 
-    /* copied verbatim from DeepCopyIrTreeWithSymbols */
-    private inline fun <reified T : IrElement> T.transform() =
-        transform(this@DeepCopyIrTreeWithSymbolsPreservingMetadata, null) as T
-
-    /* copied verbatim from DeepCopyIrTreeWithSymbols */
-    private fun IrType.remapType() = typeRemapper.remapType(this)
-
-    /* copied verbatim from DeepCopyIrTreeWithSymbols */
-    private fun mapStatementOrigin(origin: IrStatementOrigin?) = origin
-
     private fun IrElement.copyMetadataFrom(owner: IrMetadataSourceOwner) {
         when (this) {
             is IrPropertyImpl -> metadata = owner.metadata
-            is IrFunctionBase -> metadata = owner.metadata
+            is IrFunctionBase<*> -> metadata = owner.metadata
             is IrClassImpl -> metadata = owner.metadata
         }
     }
@@ -313,6 +301,7 @@
     private fun KotlinType.toIrType(): IrType = typeTranslator.translateType(this)
 }
 
+@Suppress("DEPRECATION")
 class ComposerTypeRemapper(
     private val context: IrPluginContext,
     private val symbolRemapper: SymbolRemapper,
@@ -421,20 +410,7 @@
         )
 }
 
-fun IrPluginContext.bindIfNeeded(type: IrType) {
-    if (type is IrSimpleType) {
-        if (!type.classifier.isBound) this.irProviders.getDeclaration(type.classifier)
-        type.arguments.forEach { if (it is IrTypeProjection) bindIfNeeded(it.type) }
-    }
-}
-
-fun List<IrProvider>.getDeclaration(symbol: IrSymbol) {
-    if (symbol.isBound) return
-    firstNotNullResult { provider ->
-        provider.getDeclaration(symbol)
-    } ?: error("Could not find declaration for unbound symbol $symbol")
-}
-
 private fun IrConstructorCall.isComposableAnnotation() =
+    @Suppress("DEPRECATION")
     this.symbol.descriptor.returnType.constructor.declarationDescriptor?.fqNameSafe ==
         ComposeFqNames.Composable
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerIntrinsicTransformer.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerIntrinsicTransformer.kt
index 2b42720..4541755 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerIntrinsicTransformer.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerIntrinsicTransformer.kt
@@ -42,6 +42,7 @@
     }
 
     override fun visitCall(expression: IrCall): IrExpression {
+        @Suppress("DEPRECATION")
         if (expression.symbol.descriptor.fqNameSafe == ComposeFqNames.CurrentComposerIntrinsic) {
             // since this call was transformed by the ComposerParamTransformer, the first argument
             // to this call is the composer itself. We just replace this expression with the
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerLambdaMemoization.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerLambdaMemoization.kt
index c87e697..71e6090 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerLambdaMemoization.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerLambdaMemoization.kt
@@ -18,11 +18,11 @@
 
 import androidx.compose.plugins.kotlin.ComposeUtils
 import androidx.compose.plugins.kotlin.ComposeUtils.composeInternalFqName
-import androidx.compose.plugins.kotlin.allowsComposableCalls
 import androidx.compose.plugins.kotlin.analysis.ComposeWritableSlices
 import androidx.compose.plugins.kotlin.composableTrackedContract
 import androidx.compose.plugins.kotlin.irTrace
 import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
+import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
 import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
 import org.jetbrains.kotlin.backend.common.peek
 import org.jetbrains.kotlin.backend.common.pop
@@ -48,13 +48,14 @@
 import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
 import org.jetbrains.kotlin.ir.expressions.IrFunctionExpression
 import org.jetbrains.kotlin.ir.expressions.IrFunctionReference
+import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
 import org.jetbrains.kotlin.ir.expressions.IrValueAccessExpression
+import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
 import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl
 import org.jetbrains.kotlin.ir.expressions.impl.IrVarargImpl
 import org.jetbrains.kotlin.ir.symbols.IrSymbol
 import org.jetbrains.kotlin.ir.types.toKotlinType
 import org.jetbrains.kotlin.ir.util.DeepCopySymbolRemapper
-import org.jetbrains.kotlin.ir.util.getDeclaration
 import org.jetbrains.kotlin.ir.util.patchDeclarationParents
 import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
 import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
@@ -66,6 +67,7 @@
 import org.jetbrains.kotlin.resolve.descriptorUtil.module
 import org.jetbrains.kotlin.resolve.inline.InlineUtil
 import org.jetbrains.kotlin.types.typeUtil.isUnit
+import org.jetbrains.kotlin.types.typeUtil.replaceArgumentsWithStarProjections
 
 private class CaptureCollector {
     val captures = mutableSetOf<IrValueDeclaration>()
@@ -138,6 +140,7 @@
 const val COMPOSABLE_LAMBDA_INSTANCE = "composableLambdaInstance"
 const val COMPOSABLE_LAMBDA_N_INSTANCE = "composableLambdaNInstance"
 
+@Suppress("PRE_RELEASE_CLASS")
 class ComposerLambdaMemoization(
     context: IrPluginContext,
     symbolRemapper: DeepCopySymbolRemapper,
@@ -163,7 +166,16 @@
         val currentComposerSymbol = getTopLevelPropertyGetter(
             ComposeUtils.composeFqName("currentComposer")
         )
-        return irCall(currentComposerSymbol)
+
+        currentComposerSymbol.bindIfNecessary()
+
+        return IrCallImpl(
+            UNDEFINED_OFFSET,
+            UNDEFINED_OFFSET,
+            composerTypeDescriptor.defaultType.replaceArgumentsWithStarProjections().toIrType(),
+            currentComposerSymbol,
+            IrStatementOrigin.FOR_LOOP_ITERATOR
+        )
     }
 
     override fun visitFunction(declaration: IrFunction): IrStatement {
@@ -245,7 +257,8 @@
                             endOffset,
                             expression.type,
                             expression.symbol,
-                            expression.typeArgumentsCount).copyAttributes(expression).apply {
+                            expression.typeArgumentsCount,
+                            expression.reflectionTarget).copyAttributes(expression).apply {
                             this.dispatchReceiver = tempDispatchReceiver?.let { irGet(it) }
                             this.extensionReceiver = tempExtensionReceiver?.let { irGet(it) }
                         },
@@ -357,7 +370,7 @@
             endOffset = expression.endOffset
         )
 
-        context.irProviders.getDeclaration(restartFactorySymbol)
+        (context as IrPluginContextImpl).linker.getDeclaration(restartFactorySymbol)
         return irBuilder.irCall(restartFactorySymbol).apply {
             var index = 0
 
@@ -372,6 +385,7 @@
             // key parameter
             putValueArgument(
                 index++, irBuilder.irInt(
+                    @Suppress("DEPRECATION")
                     symbol.descriptor.fqNameSafe.hashCode() xor expression.startOffset
                 )
             )
@@ -496,7 +510,7 @@
             (psi as? KtFunctionLiteral)?.let {
                 if (InlineUtil.isInlinedArgument(
                         it,
-                        context.bindingContext,
+                        @Suppress("DEPRECATION") context.bindingContext,
                         false
                     )
                 )
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerParamTransformer.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerParamTransformer.kt
index 591111c..4382c64 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerParamTransformer.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/ComposerParamTransformer.kt
@@ -23,6 +23,7 @@
 import androidx.compose.plugins.kotlin.irTrace
 import androidx.compose.plugins.kotlin.isComposableCallable
 import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
+import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
 import org.jetbrains.kotlin.backend.common.ir.copyTo
 import org.jetbrains.kotlin.backend.common.ir.copyTypeParametersFrom
 import org.jetbrains.kotlin.backend.jvm.ir.isInlineParameter
@@ -65,7 +66,6 @@
 import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
 import org.jetbrains.kotlin.ir.types.IrSimpleType
 import org.jetbrains.kotlin.ir.types.IrType
-import org.jetbrains.kotlin.ir.types.IrTypeProjection
 import org.jetbrains.kotlin.ir.types.classOrNull
 import org.jetbrains.kotlin.ir.types.createType
 import org.jetbrains.kotlin.ir.types.isPrimitiveType
@@ -75,7 +75,7 @@
 import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols
 import org.jetbrains.kotlin.ir.util.explicitParameters
 import org.jetbrains.kotlin.ir.util.findAnnotation
-import org.jetbrains.kotlin.ir.util.getDeclaration
+import org.jetbrains.kotlin.ir.util.findFirstFunction
 import org.jetbrains.kotlin.ir.util.isFakeOverride
 import org.jetbrains.kotlin.ir.util.isInlined
 import org.jetbrains.kotlin.ir.util.patchDeclarationParents
@@ -88,7 +88,6 @@
 import org.jetbrains.kotlin.name.FqName
 import org.jetbrains.kotlin.name.Name
 import org.jetbrains.kotlin.psi.KtFunctionLiteral
-import org.jetbrains.kotlin.psi2ir.findFirstFunction
 import org.jetbrains.kotlin.resolve.BindingTrace
 import org.jetbrains.kotlin.resolve.DescriptorUtils
 import org.jetbrains.kotlin.resolve.inline.InlineUtil
@@ -97,6 +96,7 @@
 import org.jetbrains.kotlin.util.OperatorNameConventions
 import kotlin.math.min
 
+@Suppress("DEPRECATION")
 class ComposerParamTransformer(
     context: IrPluginContext,
     symbolRemapper: DeepCopySymbolRemapper,
@@ -144,20 +144,28 @@
         .toIrType()
 
     override fun visitFunction(declaration: IrFunction): IrStatement {
-        return super.visitFunction(declaration.withComposerParamIfNeeded())
+        generateSymbols(context)
+        val v1 = declaration.withComposerParamIfNeeded()
+        generateSymbols(context)
+        val v2 = super.visitFunction(v1)
+        generateSymbols(context)
+        return v2
     }
 
     fun IrCall.withComposerParamIfNeeded(composerParam: IrValueParameter): IrCall {
+        generateSymbols(context)
         val isComposableLambda = isComposableLambdaInvoke()
         if (!symbol.descriptor.isComposableCallable() && !isComposableLambda)
             return this
+        generateSymbols(context)
         val ownerFn = when {
             isComposableLambda -> {
-                if (!symbol.isBound) context.irProviders.getDeclaration(symbol)
+                generateSymbols(context)
                 (symbol.owner as IrSimpleFunction).lambdaInvokeWithComposerParamIfNeeded()
             }
             else -> (symbol.owner as IrSimpleFunction).withComposerParamIfNeeded()
         }
+        generateSymbols(context)
         if (!transformedFunctionSet.contains(ownerFn))
             return this
         if (symbol.owner == ownerFn)
@@ -172,16 +180,19 @@
             origin,
             superQualifierSymbol
         ).also {
+            generateSymbols(context)
             it.copyAttributes(this)
             context.irTrace.record(
                 ComposeWritableSlices.IS_COMPOSABLE_CALL,
                 it,
                 true
             )
+            generateSymbols(context)
             it.copyTypeArgumentsFrom(this)
             it.dispatchReceiver = dispatchReceiver
             it.extensionReceiver = extensionReceiver
             val argumentsMissing = mutableListOf<Boolean>()
+            generateSymbols(context)
             for (i in 0 until valueArgumentsCount) {
                 val arg = getValueArgument(i)
                 argumentsMissing.add(arg == null)
@@ -234,6 +245,7 @@
                     error("2. expected value parameter count to be higher: ${this.dumpSrc()}")
                 }
             }
+            generateSymbols(context)
         }
     }
 
@@ -326,20 +338,22 @@
             endOffset,
             origin,
             newDescriptor,
-            newDescriptor.returnType?.toIrType()!!
+            returnType
         ).also { fn ->
-            if (!newFnClass.isBound) context.irProviders.getDeclaration(newFnClass)
+            generateSymbols(context)
+            if (!newFnClass.isBound)
+                (context as IrPluginContextImpl).linker.getDeclaration(newFnClass)
             fn.parent = newFnClass.owner
 
             fn.copyTypeParametersFrom(this)
-            dispatchReceiverParameter?.type?.let { context.bindIfNeeded(it) }
             fn.dispatchReceiverParameter = dispatchReceiverParameter?.copyTo(fn)
-            extensionReceiverParameter?.type?.let { context.bindIfNeeded(it) }
+            generateSymbols(context)
             fn.extensionReceiverParameter = extensionReceiverParameter?.copyTo(fn)
             newDescriptor.valueParameters.forEach { p ->
                 fn.addValueParameter(p.name.identifier, p.type.toIrType())
             }
             assert(fn.body == null) { "expected body to be null" }
+            generateSymbols(context)
         }
     }
 
@@ -392,16 +406,11 @@
                 fn.correspondingPropertySymbol = correspondingPropertySymbol
             }
             fn.parent = parent
-            this.typeParameters.forEach { it.superTypes.forEach {
-                if (it is IrSimpleType && !it.classifier.isBound) context.irProviders
-                .getDeclaration(it
-                .classifier)
-            } }
             fn.copyTypeParametersFrom(this)
             generateSymbols(context)
             fn.dispatchReceiverParameter = dispatchReceiverParameter?.copyTo(fn)
             fn.extensionReceiverParameter = extensionReceiverParameter?.copyTo(fn)
-            valueParameters.mapTo(fn.valueParameters) { p ->
+            fn.valueParameters = valueParameters.map { p ->
                 // Composable lambdas will always have `IrGet`s of all of their parameters
                 // generated, since they are passed into the restart lambda. This causes an
                 // interesting corner case with "anonymous parameters" of composable functions.
@@ -410,21 +419,9 @@
                 // case in composable lambdas. The synthetic name that kotlin generates for
                 // anonymous parameters has an issue where it is not safe to dex, so we sanitize
                 // the names here to ensure that dex is always safe.
-                p.type.let { if (it is IrSimpleType && !it.classifier.isBound) context.irProviders
-                    .getDeclaration(it
-                        .classifier) }
-                p.type.let {
-                    if (it is IrSimpleType) it.arguments.forEach {
-                        if (it is IrTypeProjection) {
-                            val tp = it.type
-                            if (tp is IrSimpleType && !tp.classifier.isBound) context.irProviders
-                                .getDeclaration(tp.classifier)
-                        }
-                    }
-                }
                 p.copyTo(fn, name = dexSafeName(p.name))
             }
-            annotations.mapTo(fn.annotations) { a -> a }
+            fn.annotations = annotations.map { a -> a }
             fn.metadata = metadata
             fn.body = body?.deepCopyWithSymbols(this)
         }
@@ -473,10 +470,12 @@
     }
 
     private fun IrFunction.copyWithComposerParam(): IrFunction {
+        generateSymbols(context)
         assert(explicitParameters.lastOrNull()?.name != KtxNameConventions.COMPOSER_PARAMETER) {
             "Attempted to add composer param to $this, but it has already been added."
         }
         return copy().also { fn ->
+            generateSymbols(context)
             val oldFn = this
 
             // NOTE: it's important to add these here before we recurse into the body in
@@ -487,7 +486,7 @@
             // The overridden symbols might also be composable functions, so we want to make sure
             // and transform them as well
             if (this is IrOverridableDeclaration<*>) {
-                overriddenSymbols.mapTo(fn.overriddenSymbols) {
+                fn.overriddenSymbols = overriddenSymbols.map {
                     it as IrSimpleFunctionSymbol
                     val owner = it.owner
                     val newOwner = owner.withComposerParamIfNeeded()
@@ -495,6 +494,7 @@
                 }
             }
 
+            generateSymbols(context)
             // if we are transforming a composable property, the jvm signature of the
             // corresponding getters and setters have a composer parameter. Since Kotlin uses the
             // lack of a parameter to determine if it is a getter, this breaks inlining for
@@ -506,29 +506,32 @@
                 fn.annotations.findAnnotation(DescriptorUtils.JVM_NAME) == null
             ) {
                 val name = JvmAbi.getterName(descriptor.correspondingProperty.name.identifier)
-                fn.annotations.add(jvmNameAnnotation(name))
+                fn.annotations += jvmNameAnnotation(name)
                 fn.correspondingPropertySymbol?.owner?.getter = fn
             }
 
+            generateSymbols(context)
             // same thing for the setter
             if (descriptor is PropertySetterDescriptor &&
                 fn.annotations.findAnnotation(DescriptorUtils.JVM_NAME) == null
             ) {
                 val name = JvmAbi.setterName(descriptor.correspondingProperty.name.identifier)
-                fn.annotations.add(jvmNameAnnotation(name))
+                fn.annotations += jvmNameAnnotation(name)
                 fn.correspondingPropertySymbol?.owner?.setter = fn
             }
 
-            for (i in fn.valueParameters.indices) {
-                val param = fn.valueParameters[i]
+            fn.valueParameters = fn.valueParameters.map { param ->
                 val newType = defaultParameterType(param)
-                fn.valueParameters[i] = IrValueParameterImpl(
+                IrValueParameterImpl(
                     param.startOffset,
                     param.endOffset,
                     param.origin,
                     IrValueParameterSymbolImpl(param.descriptor),
-                    newType,
-                    param.varargElementType
+                    param.name,
+                    index = param.index,
+                    type = newType, varargElementType = param.varargElementType,
+                    isCrossinline = param.isCrossinline,
+                    isNoinline = param.isNoinline
                 ).also { it.defaultValue = param.defaultValue }
             }
 
@@ -566,6 +569,7 @@
                 }
             }
 
+            generateSymbols(context)
             fn.transformChildrenVoid(object : IrElementTransformerVoid() {
                 var isNestedScope = false
                 override fun visitGetValue(expression: IrGetValue): IrGetValue {
@@ -582,6 +586,7 @@
                 }
 
                 override fun visitReturn(expression: IrReturn): IrExpression {
+                    generateSymbols(context)
                     if (expression.returnTargetSymbol == oldFn.symbol) {
                         // update the return statement to point to the new function, or else
                         // it will be interpreted as a non-local return
@@ -593,10 +598,12 @@
                             expression.value
                         ))
                     }
+                    generateSymbols(context)
                     return super.visitReturn(expression)
                 }
 
                 override fun visitFunction(declaration: IrFunction): IrStatement {
+                    generateSymbols(context)
                     val wasNested = isNestedScope
                     try {
                         // we don't want to pass the composer parameter in to composable calls
@@ -613,9 +620,11 @@
                         expression.withComposerParamIfNeeded(composerParam)
                     } else
                         expression
+                    generateSymbols(context)
                     return super.visitCall(expr)
                 }
             })
+            generateSymbols(context)
         }
     }
 
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/FakeJvmSymbols.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/FakeJvmSymbols.kt
index d1a5a73f..b049bca 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/FakeJvmSymbols.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/FakeJvmSymbols.kt
@@ -74,7 +74,8 @@
         IrExternalPackageFragmentImpl(
             IrExternalPackageFragmentSymbolImpl(
                 EmptyPackageFragmentDescriptor(module, fqName)
-            )
+            ),
+            fqName
         )
 
     val lambdaClass: IrClassSymbol = createClass(FqName("kotlin.jvm.internal.Lambda")) { klass ->
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/IrSourcePrinter.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/IrSourcePrinter.kt
index 6eaa47f..9dc454a 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/IrSourcePrinter.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/IrSourcePrinter.kt
@@ -128,6 +128,7 @@
         .replace(Regex("}\\n(\\s)*,", RegexOption.MULTILINE), "},")
 }
 
+@Suppress("DEPRECATION")
 private class IrSourcePrinterVisitor(
     out: Appendable
 ) : IrElementVisitorVoid {
diff --git a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/LiveLiteralTransformer.kt b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/LiveLiteralTransformer.kt
index f8a4ca9..5ffda1e 100644
--- a/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/LiveLiteralTransformer.kt
+++ b/compose/compose-compiler-hosted/src/main/java/androidx/compose/plugins/kotlin/compiler/lower/LiveLiteralTransformer.kt
@@ -251,7 +251,7 @@
             returnType = literalType
         ).also { fn ->
             val thisParam = fn.dispatchReceiverParameter!!
-            fn.annotations.add(irLiveLiteralInfoAnnotation(key, literalValue.startOffset))
+            fn.annotations += irLiveLiteralInfoAnnotation(key, literalValue.startOffset)
             fn.body = DeclarationIrBuilder(context, fn.symbol).irBlockBody {
                 // val a = stateField
                 // val b = if (a == null) {
@@ -276,9 +276,17 @@
                     },
                     elsePart = irGet(a)
                 )
-                +irReturn(irCall(stateGetValue).apply {
+                val call = IrCallImpl(
+                    UNDEFINED_OFFSET,
+                    UNDEFINED_OFFSET,
+                    literalType,
+                    stateGetValue,
+                    IrStatementOrigin.FOR_LOOP_ITERATOR
+                ).apply {
                     dispatchReceiver = b
-                })
+                }
+
+                +irReturn(call)
             }
         }
     }
@@ -370,7 +378,7 @@
                 // store the full file path to the file that this class is associated with in an
                 // annotation on the class. This will be used by tooling to associate the keys
                 // inside of this class with actual PSI in the editor.
-                it.annotations.add(irLiveLiteralFileInfoAnnotation(declaration.fileEntry.name))
+                it.annotations += irLiveLiteralFileInfoAnnotation(declaration.fileEntry.name)
                 it.addConstructor {
                     isPrimary = true
                 }.also { ctor ->
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RecomposerTests.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RecomposerTests.kt
index 3bb43f3..590efdf 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RecomposerTests.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/RecomposerTests.kt
@@ -470,13 +470,13 @@
     val name = view.javaClass.simpleName
     val attributes = printAttributes(view)
     if (view is ViewGroup && view.childCount > 0) {
-        sb.appendln("$whitespace<$name$attributes>")
+        sb.appendLine("$whitespace<$name$attributes>")
         for (i in 0 until view.childCount) {
             printView(view.getChildAt(i), indent + 4, sb)
         }
-        sb.appendln("$whitespace</$name>")
+        sb.appendLine("$whitespace</$name>")
     } else {
-        sb.appendln("$whitespace<$name$attributes />")
+        sb.appendLine("$whitespace<$name$attributes />")
     }
 }
 
diff --git a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/SuspendingEffectsTests.kt b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/SuspendingEffectsTests.kt
index e6607e9..a5a75e0 100644
--- a/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/SuspendingEffectsTests.kt
+++ b/compose/compose-runtime/src/androidAndroidTest/kotlin/androidx/compose/test/SuspendingEffectsTests.kt
@@ -28,7 +28,6 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.MediumTest
 import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Job
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.isActive
 import org.junit.After
@@ -38,7 +37,6 @@
 import kotlin.test.assertEquals
 import kotlin.test.assertFalse
 import kotlin.test.assertNotEquals
-import kotlin.test.assertNotNull
 import kotlin.test.assertTrue
 
 @MediumTest
@@ -138,6 +136,10 @@
         }
     }
 
+    /*
+    // Forced to disable test due to a bug in the Kotlin compiler
+    // which caused this function to fail to build due to invalid bytecode
+    // Build fails with AnalyzerException: Incompatible stack heights
     @Test
     fun testRememberCoroutineScopeDisallowsParentJob() {
         var coroutineScope: CoroutineScope? = null
@@ -155,4 +157,5 @@
                 "scope Job should be failed with IllegalArgumentException")
         }
     }
+    */
 }
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recomposer.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recomposer.kt
index 29171ae..2696ba4 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recomposer.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/Recomposer.kt
@@ -221,7 +221,7 @@
     internal val applyingCoroutineContext: CoroutineContext?
         get() = applyingScope.get()?.coroutineContext
 
-    @Suppress("PLUGIN_WARNING", "PLUGIN_ERROR")
+    @Suppress("PLUGIN_WARNING", "PLUGIN_ERROR", "ILLEGAL_TRY_CATCH_AROUND_COMPOSABLE")
     internal fun composeInitial(
         composable: @Composable () -> Unit,
         composer: Composer<*>
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/Snapshot.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/Snapshot.kt
index 31dcdd1..a3a58e1 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/Snapshot.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/Snapshot.kt
@@ -1347,6 +1347,7 @@
 internal val lock = Any()
 
 @PublishedApi
+@Suppress("DEPRECATION_ERROR")
 internal inline fun <T> sync(block: () -> T): T = synchronized(lock, block)
 
 // The following variables should only be written when sync is taken
diff --git a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateObserver.kt b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateObserver.kt
index 69ce23e..deb49f6 100644
--- a/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateObserver.kt
+++ b/compose/compose-runtime/src/commonMain/kotlin/androidx/compose/snapshots/SnapshotStateObserver.kt
@@ -20,6 +20,7 @@
 import androidx.compose.ObserverMap
 
 @ExperimentalComposeApi
+@Suppress("DEPRECATION_ERROR")
 class SnapshotStateObserver(private val onChangedExecutor: (callback: () -> Unit) -> Unit) {
     private val applyObserver: SnapshotApplyObserver = { applied, _ ->
         var hasValues = false
diff --git a/compose/compose-runtime/src/test/kotlin/androidx/compose/mock/View.kt b/compose/compose-runtime/src/test/kotlin/androidx/compose/mock/View.kt
index 8c6eb96..39bbe74 100644
--- a/compose/compose-runtime/src/test/kotlin/androidx/compose/mock/View.kt
+++ b/compose/compose-runtime/src/test/kotlin/androidx/compose/mock/View.kt
@@ -29,12 +29,12 @@
         indent(indent, builder)
         builder.append("<$name$attributesAsString")
         if (children.size > 0) {
-            builder.appendln(">")
+            builder.appendLine(">")
             children.forEach { it.render(indent + 2, builder) }
             indent(indent, builder)
-            builder.appendln("</$name>")
+            builder.appendLine("</$name>")
         } else {
-            builder.appendln(" />")
+            builder.appendLine(" />")
         }
     }
 
diff --git a/ui/ui-animation-core/api/0.1.0-dev15.txt b/ui/ui-animation-core/api/0.1.0-dev15.txt
index 66a0aff..c4907f8 100644
--- a/ui/ui-animation-core/api/0.1.0-dev15.txt
+++ b/ui/ui-animation-core/api/0.1.0-dev15.txt
@@ -6,7 +6,7 @@
     method public final float getMax();
     method public final float getMin();
     method public final float getVelocity();
-    method public final void setBounds(float min = Float.NEGATIVE_INFINITY, float max = Float.POSITIVE_INFINITY);
+    method public final void setBounds(float min = (-1.0f/0.0f), float max = (1.0f/0.0f));
     method public void snapTo(float targetValue);
     property public final float max;
     property public final float min;
diff --git a/ui/ui-animation-core/api/current.txt b/ui/ui-animation-core/api/current.txt
index 66a0aff..c4907f8 100644
--- a/ui/ui-animation-core/api/current.txt
+++ b/ui/ui-animation-core/api/current.txt
@@ -6,7 +6,7 @@
     method public final float getMax();
     method public final float getMin();
     method public final float getVelocity();
-    method public final void setBounds(float min = Float.NEGATIVE_INFINITY, float max = Float.POSITIVE_INFINITY);
+    method public final void setBounds(float min = (-1.0f/0.0f), float max = (1.0f/0.0f));
     method public void snapTo(float targetValue);
     property public final float max;
     property public final float min;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev15.txt
index 66a0aff..c4907f8 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_0.1.0-dev15.txt
@@ -6,7 +6,7 @@
     method public final float getMax();
     method public final float getMin();
     method public final float getVelocity();
-    method public final void setBounds(float min = Float.NEGATIVE_INFINITY, float max = Float.POSITIVE_INFINITY);
+    method public final void setBounds(float min = (-1.0f/0.0f), float max = (1.0f/0.0f));
     method public void snapTo(float targetValue);
     property public final float max;
     property public final float min;
diff --git a/ui/ui-animation-core/api/public_plus_experimental_current.txt b/ui/ui-animation-core/api/public_plus_experimental_current.txt
index 66a0aff..c4907f8 100644
--- a/ui/ui-animation-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-animation-core/api/public_plus_experimental_current.txt
@@ -6,7 +6,7 @@
     method public final float getMax();
     method public final float getMin();
     method public final float getVelocity();
-    method public final void setBounds(float min = Float.NEGATIVE_INFINITY, float max = Float.POSITIVE_INFINITY);
+    method public final void setBounds(float min = (-1.0f/0.0f), float max = (1.0f/0.0f));
     method public void snapTo(float targetValue);
     property public final float max;
     property public final float min;
diff --git a/ui/ui-animation-core/api/restricted_0.1.0-dev15.txt b/ui/ui-animation-core/api/restricted_0.1.0-dev15.txt
index 66a0aff..c4907f8 100644
--- a/ui/ui-animation-core/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-animation-core/api/restricted_0.1.0-dev15.txt
@@ -6,7 +6,7 @@
     method public final float getMax();
     method public final float getMin();
     method public final float getVelocity();
-    method public final void setBounds(float min = Float.NEGATIVE_INFINITY, float max = Float.POSITIVE_INFINITY);
+    method public final void setBounds(float min = (-1.0f/0.0f), float max = (1.0f/0.0f));
     method public void snapTo(float targetValue);
     property public final float max;
     property public final float min;
diff --git a/ui/ui-animation-core/api/restricted_current.txt b/ui/ui-animation-core/api/restricted_current.txt
index 66a0aff..c4907f8 100644
--- a/ui/ui-animation-core/api/restricted_current.txt
+++ b/ui/ui-animation-core/api/restricted_current.txt
@@ -6,7 +6,7 @@
     method public final float getMax();
     method public final float getMin();
     method public final float getVelocity();
-    method public final void setBounds(float min = Float.NEGATIVE_INFINITY, float max = Float.POSITIVE_INFINITY);
+    method public final void setBounds(float min = (-1.0f/0.0f), float max = (1.0f/0.0f));
     method public void snapTo(float targetValue);
     property public final float max;
     property public final float min;
diff --git a/ui/ui-animation-core/build.gradle b/ui/ui-animation-core/build.gradle
index 02eea83..992069e 100644
--- a/ui/ui-animation-core/build.gradle
+++ b/ui/ui-animation-core/build.gradle
@@ -72,7 +72,8 @@
 tasks.withType(KotlinCompile).configureEach {
     kotlinOptions {
         freeCompilerArgs += [
-            "-Xuse-experimental=kotlin.Experimental"
+            "-Xuse-experimental=kotlin.Experimental",
+            "-Xallow-jvm-ir-dependencies"
         ]
     }
 }
diff --git a/ui/ui-animation-core/samples/build.gradle b/ui/ui-animation-core/samples/build.gradle
index 228b21f..55c2e44 100644
--- a/ui/ui-animation-core/samples/build.gradle
+++ b/ui/ui-animation-core/samples/build.gradle
@@ -35,3 +35,11 @@
     implementation project(":compose:animation:animation-core")
     implementation project(":compose:core:core-unit")
 }
+
+
+tasks.withType(KotlinCompile).configureEach {
+    kotlinOptions {
+        // useIR = true // TODO: Should just enable IR instead of `-Xallow-jvm-ir-dependencies`
+        freeCompilerArgs += "-Xallow-jvm-ir-dependencies"
+    }
+}
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationClock.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationClock.kt
index 511dc89..c77ca5c 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationClock.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/AnimationClock.kt
@@ -66,6 +66,7 @@
  * Base implementation for the AnimationClockObservable that handles the subscribing and
  * unsubscribing logic that would be common for all custom animation clocks.
  */
+@Suppress("DEPRECATION_ERROR") // TODO: b/159875450 use of synchronized is deprecated.
 abstract class BaseAnimationClock : AnimationClockObservable {
     // Using LinkedHashSet to increase removal performance
     private val observers: MutableSet<AnimationClockObserver> = LinkedHashSet()
diff --git a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/ToolingGlue.kt b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/ToolingGlue.kt
index 0816cb2..a24a820 100644
--- a/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/ToolingGlue.kt
+++ b/ui/ui-animation-core/src/commonMain/kotlin/androidx/animation/ToolingGlue.kt
@@ -57,7 +57,7 @@
      * transition, this will be the duration of the longest running animation.
      */
     val duration: Long =
-            currentAnimWrappers.asSequence().map { it.value.durationMillis }.max()!!
+            currentAnimWrappers.asSequence().map { it.value.durationMillis }.maxOrNull()!!
 
     /**
      * Returns the animation values at the given playtime. This time could be any time between 0
diff --git a/ui/ui-animation/api/0.1.0-dev15.txt b/ui/ui-animation/api/0.1.0-dev15.txt
index efbecd3..c4e232e 100644
--- a/ui/ui-animation/api/0.1.0-dev15.txt
+++ b/ui/ui-animation/api/0.1.0-dev15.txt
@@ -93,9 +93,6 @@
 
   public final class SingleValueAnimationKt {
     method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
-    method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
-    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
-}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({ 
     return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
@@ -126,6 +123,9 @@
     method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({ 
     return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+    method @androidx.compose.Composable public static long animate-_lqcFKk(long target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
+    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({ 
     return <init>()
 }), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
diff --git a/ui/ui-animation/api/current.txt b/ui/ui-animation/api/current.txt
index efbecd3..c4e232e 100644
--- a/ui/ui-animation/api/current.txt
+++ b/ui/ui-animation/api/current.txt
@@ -93,9 +93,6 @@
 
   public final class SingleValueAnimationKt {
     method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
-    method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
-    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
-}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({ 
     return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
@@ -126,6 +123,9 @@
     method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({ 
     return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+    method @androidx.compose.Composable public static long animate-_lqcFKk(long target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
+    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({ 
     return <init>()
 }), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
diff --git a/ui/ui-animation/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-animation/api/public_plus_experimental_0.1.0-dev15.txt
index efbecd3..c4e232e 100644
--- a/ui/ui-animation/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-animation/api/public_plus_experimental_0.1.0-dev15.txt
@@ -93,9 +93,6 @@
 
   public final class SingleValueAnimationKt {
     method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
-    method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
-    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
-}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({ 
     return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
@@ -126,6 +123,9 @@
     method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({ 
     return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+    method @androidx.compose.Composable public static long animate-_lqcFKk(long target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
+    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({ 
     return <init>()
 }), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
diff --git a/ui/ui-animation/api/public_plus_experimental_current.txt b/ui/ui-animation/api/public_plus_experimental_current.txt
index efbecd3..c4e232e 100644
--- a/ui/ui-animation/api/public_plus_experimental_current.txt
+++ b/ui/ui-animation/api/public_plus_experimental_current.txt
@@ -93,9 +93,6 @@
 
   public final class SingleValueAnimationKt {
     method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
-    method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
-    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
-}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({ 
     return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
@@ -126,6 +123,9 @@
     method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({ 
     return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+    method @androidx.compose.Composable public static long animate-_lqcFKk(long target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
+    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({ 
     return <init>()
 }), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
diff --git a/ui/ui-animation/api/restricted_0.1.0-dev15.txt b/ui/ui-animation/api/restricted_0.1.0-dev15.txt
index efbecd3..c4e232e 100644
--- a/ui/ui-animation/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-animation/api/restricted_0.1.0-dev15.txt
@@ -93,9 +93,6 @@
 
   public final class SingleValueAnimationKt {
     method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
-    method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
-    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
-}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({ 
     return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
@@ -126,6 +123,9 @@
     method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({ 
     return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+    method @androidx.compose.Composable public static long animate-_lqcFKk(long target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
+    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({ 
     return <init>()
 }), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
diff --git a/ui/ui-animation/api/restricted_current.txt b/ui/ui-animation/api/restricted_current.txt
index efbecd3..c4e232e 100644
--- a/ui/ui-animation/api/restricted_current.txt
+++ b/ui/ui-animation/api/restricted_current.txt
@@ -93,9 +93,6 @@
 
   public final class SingleValueAnimationKt {
     method @androidx.compose.Composable public static float animate(float target, androidx.animation.AnimationSpec<java.lang.Float> animSpec = androidx.ui.animation.SingleValueAnimationKt.defaultAnimation, float visibilityThreshold = 0.01f, kotlin.jvm.functions.Function1<? super java.lang.Float,kotlin.Unit>? endListener = null);
-    method @androidx.compose.Composable public static androidx.ui.geometry.Size animate(androidx.ui.geometry.Size target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
-    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
-}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static androidx.ui.unit.Bounds animate(androidx.ui.unit.Bounds target, androidx.animation.AnimationSpec<androidx.ui.unit.Bounds> animSpec = remember({ 
     return <init>(BoundsToVectorConverter.invoke(DpVisibilityThreshold4D))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Bounds,kotlin.Unit>? endListener = null);
@@ -126,6 +123,9 @@
     method @androidx.compose.Composable public static long animate-MNu1-i4(long target, androidx.animation.AnimationSpec<androidx.ui.unit.Position> animSpec = remember({ 
     return <init>(Position(DpVisibilityThreshold.dp, DpVisibilityThreshold.dp))
 }), kotlin.jvm.functions.Function1<? super androidx.ui.unit.Position,kotlin.Unit>? endListener = null);
+    method @androidx.compose.Composable public static long animate-_lqcFKk(long target, androidx.animation.AnimationSpec<androidx.ui.geometry.Size> animSpec = remember({ 
+    return <init>(Size(PxVisibilityThreshold, PxVisibilityThreshold))
+}), kotlin.jvm.functions.Function1<? super androidx.ui.geometry.Size,kotlin.Unit>? endListener = null);
     method @androidx.compose.Composable public static long animate-zJFKTE8(long target, androidx.animation.AnimationSpec<androidx.ui.graphics.Color> animSpec = remember({ 
     return <init>()
 }), kotlin.jvm.functions.Function1<? super androidx.ui.graphics.Color,kotlin.Unit>? endListener = null);
diff --git a/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/DisposableAnimationClock.kt b/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/DisposableAnimationClock.kt
index 9a1025724..a8b0da2 100644
--- a/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/DisposableAnimationClock.kt
+++ b/ui/ui-animation/src/commonMain/kotlin/androidx/ui/animation/DisposableAnimationClock.kt
@@ -55,6 +55,7 @@
     private var disposed = false
 
     override fun subscribe(observer: AnimationClockObserver) {
+        @Suppress("DEPRECATION_ERROR")
         synchronized(allSubscriptions) {
             if (!disposed) {
                 allSubscriptions += observer
@@ -64,6 +65,7 @@
     }
 
     override fun unsubscribe(observer: AnimationClockObserver) {
+        @Suppress("DEPRECATION_ERROR")
         synchronized(allSubscriptions) {
             if (allSubscriptions.remove(observer)) {
                 clock.unsubscribe(observer)
@@ -77,6 +79,7 @@
      * After a call to [dispose], [isDisposed] will return `true`.
      */
     fun dispose() {
+        @Suppress("DEPRECATION_ERROR")
         synchronized(allSubscriptions) {
             allSubscriptions.forEach { clock.unsubscribe(it) }
             allSubscriptions.clear()
@@ -87,5 +90,6 @@
     /**
      * `true` if [dispose] has been called and no new subscriptions are permitted.
      */
+    @Suppress("DEPRECATION_ERROR")
     val isDisposed: Boolean get() = synchronized(allSubscriptions) { disposed == true }
 }
\ No newline at end of file
diff --git a/ui/ui-core/api/0.1.0-dev15.txt b/ui/ui-core/api/0.1.0-dev15.txt
index f50330a..56e2500 100644
--- a/ui/ui-core/api/0.1.0-dev15.txt
+++ b/ui/ui-core/api/0.1.0-dev15.txt
@@ -256,7 +256,7 @@
   }
 
   @androidx.compose.Stable public interface ContentScale {
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
     field public static final androidx.ui.core.ContentScale.Companion Companion;
   }
 
@@ -359,7 +359,7 @@
     method public float component1();
     method @androidx.compose.Immutable public androidx.ui.core.FixedScale copy(float value);
     method public float getValue();
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
   }
 
   public final class HorizontalAlignmentLine extends androidx.ui.core.AlignmentLine {
@@ -2108,14 +2108,14 @@
   }
 
   public final class VectorPainter extends androidx.ui.graphics.painter.Painter {
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class VectorPainterKt {
     method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter(androidx.ui.graphics.vector.VectorAsset asset);
-    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = Float.NaN, float viewportHeight = Float.NaN, String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
+    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = (0.0f/0.0f), float viewportHeight = (0.0f/0.0f), String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
     field public static final String RootGroupName = "VectorRootGroup";
   }
 
diff --git a/ui/ui-core/api/current.txt b/ui/ui-core/api/current.txt
index f50330a..56e2500 100644
--- a/ui/ui-core/api/current.txt
+++ b/ui/ui-core/api/current.txt
@@ -256,7 +256,7 @@
   }
 
   @androidx.compose.Stable public interface ContentScale {
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
     field public static final androidx.ui.core.ContentScale.Companion Companion;
   }
 
@@ -359,7 +359,7 @@
     method public float component1();
     method @androidx.compose.Immutable public androidx.ui.core.FixedScale copy(float value);
     method public float getValue();
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
   }
 
   public final class HorizontalAlignmentLine extends androidx.ui.core.AlignmentLine {
@@ -2108,14 +2108,14 @@
   }
 
   public final class VectorPainter extends androidx.ui.graphics.painter.Painter {
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class VectorPainterKt {
     method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter(androidx.ui.graphics.vector.VectorAsset asset);
-    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = Float.NaN, float viewportHeight = Float.NaN, String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
+    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = (0.0f/0.0f), float viewportHeight = (0.0f/0.0f), String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
     field public static final String RootGroupName = "VectorRootGroup";
   }
 
diff --git a/ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
index f50330a..56e2500 100644
--- a/ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-core/api/public_plus_experimental_0.1.0-dev15.txt
@@ -256,7 +256,7 @@
   }
 
   @androidx.compose.Stable public interface ContentScale {
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
     field public static final androidx.ui.core.ContentScale.Companion Companion;
   }
 
@@ -359,7 +359,7 @@
     method public float component1();
     method @androidx.compose.Immutable public androidx.ui.core.FixedScale copy(float value);
     method public float getValue();
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
   }
 
   public final class HorizontalAlignmentLine extends androidx.ui.core.AlignmentLine {
@@ -2108,14 +2108,14 @@
   }
 
   public final class VectorPainter extends androidx.ui.graphics.painter.Painter {
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class VectorPainterKt {
     method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter(androidx.ui.graphics.vector.VectorAsset asset);
-    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = Float.NaN, float viewportHeight = Float.NaN, String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
+    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = (0.0f/0.0f), float viewportHeight = (0.0f/0.0f), String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
     field public static final String RootGroupName = "VectorRootGroup";
   }
 
diff --git a/ui/ui-core/api/public_plus_experimental_current.txt b/ui/ui-core/api/public_plus_experimental_current.txt
index f50330a..56e2500 100644
--- a/ui/ui-core/api/public_plus_experimental_current.txt
+++ b/ui/ui-core/api/public_plus_experimental_current.txt
@@ -256,7 +256,7 @@
   }
 
   @androidx.compose.Stable public interface ContentScale {
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
     field public static final androidx.ui.core.ContentScale.Companion Companion;
   }
 
@@ -359,7 +359,7 @@
     method public float component1();
     method @androidx.compose.Immutable public androidx.ui.core.FixedScale copy(float value);
     method public float getValue();
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
   }
 
   public final class HorizontalAlignmentLine extends androidx.ui.core.AlignmentLine {
@@ -2108,14 +2108,14 @@
   }
 
   public final class VectorPainter extends androidx.ui.graphics.painter.Painter {
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class VectorPainterKt {
     method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter(androidx.ui.graphics.vector.VectorAsset asset);
-    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = Float.NaN, float viewportHeight = Float.NaN, String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
+    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = (0.0f/0.0f), float viewportHeight = (0.0f/0.0f), String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
     field public static final String RootGroupName = "VectorRootGroup";
   }
 
diff --git a/ui/ui-core/api/restricted_0.1.0-dev15.txt b/ui/ui-core/api/restricted_0.1.0-dev15.txt
index 26d10d1..51c55a1 100644
--- a/ui/ui-core/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-core/api/restricted_0.1.0-dev15.txt
@@ -262,7 +262,7 @@
   }
 
   @androidx.compose.Stable public interface ContentScale {
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
     field public static final androidx.ui.core.ContentScale.Companion Companion;
   }
 
@@ -379,7 +379,7 @@
     method public float component1();
     method @androidx.compose.Immutable public androidx.ui.core.FixedScale copy(float value);
     method public float getValue();
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
   }
 
   public final class HorizontalAlignmentLine extends androidx.ui.core.AlignmentLine {
@@ -2160,14 +2160,14 @@
   }
 
   public final class VectorPainter extends androidx.ui.graphics.painter.Painter {
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class VectorPainterKt {
     method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter(androidx.ui.graphics.vector.VectorAsset asset);
-    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = Float.NaN, float viewportHeight = Float.NaN, String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
+    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = (0.0f/0.0f), float viewportHeight = (0.0f/0.0f), String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
     field public static final String RootGroupName = "VectorRootGroup";
   }
 
diff --git a/ui/ui-core/api/restricted_current.txt b/ui/ui-core/api/restricted_current.txt
index 26d10d1..51c55a1 100644
--- a/ui/ui-core/api/restricted_current.txt
+++ b/ui/ui-core/api/restricted_current.txt
@@ -262,7 +262,7 @@
   }
 
   @androidx.compose.Stable public interface ContentScale {
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
     field public static final androidx.ui.core.ContentScale.Companion Companion;
   }
 
@@ -379,7 +379,7 @@
     method public float component1();
     method @androidx.compose.Immutable public androidx.ui.core.FixedScale copy(float value);
     method public float getValue();
-    method public float scale(androidx.ui.geometry.Size srcSize, androidx.ui.geometry.Size dstSize);
+    method public float scale-8JNMT64(long srcSize, long dstSize);
   }
 
   public final class HorizontalAlignmentLine extends androidx.ui.core.AlignmentLine {
@@ -2160,14 +2160,14 @@
   }
 
   public final class VectorPainter extends androidx.ui.graphics.painter.Painter {
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class VectorPainterKt {
     method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter(androidx.ui.graphics.vector.VectorAsset asset);
-    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = Float.NaN, float viewportHeight = Float.NaN, String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
+    method @androidx.compose.Composable public static androidx.ui.graphics.vector.VectorPainter VectorPainter-CZQlTzY(float defaultWidth, float defaultHeight, float viewportWidth = (0.0f/0.0f), float viewportHeight = (0.0f/0.0f), String name = "VectorRootGroup", kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,kotlin.Unit> children);
     field public static final String RootGroupName = "VectorRootGroup";
   }
 
diff --git a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/LayoutSample.kt b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/LayoutSample.kt
index 84f5428..aed609f 100644
--- a/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/LayoutSample.kt
+++ b/ui/ui-core/samples/src/main/java/androidx/ui/core/samples/LayoutSample.kt
@@ -35,16 +35,16 @@
             // The min intrinsic width of this layout will be twice the largest min intrinsic
             // width of a child. Note that we call minIntrinsicWidth with h / 2 for children,
             // since we should be double the size of the children.
-            (measurables.map { it.minIntrinsicWidth(h / 2) }.maxBy { it } ?: 0) * 2
+            (measurables.map { it.minIntrinsicWidth(h / 2) }.maxByOrNull { it } ?: 0) * 2
         },
         minIntrinsicHeightMeasureBlock = { measurables, w ->
-            (measurables.map { it.minIntrinsicHeight(w / 2) }.maxBy { it } ?: 0) * 2
+            (measurables.map { it.minIntrinsicHeight(w / 2) }.maxByOrNull { it } ?: 0) * 2
         },
         maxIntrinsicWidthMeasureBlock = { measurables, h ->
-            (measurables.map { it.maxIntrinsicHeight(h / 2) }.maxBy { it } ?: 0) * 2
+            (measurables.map { it.maxIntrinsicHeight(h / 2) }.maxByOrNull { it } ?: 0) * 2
         },
         maxIntrinsicHeightMeasureBlock = { measurables, w ->
-            (measurables.map { it.maxIntrinsicHeight(w / 2) }.maxBy { it } ?: 0) * 2
+            (measurables.map { it.maxIntrinsicHeight(w / 2) }.maxByOrNull { it } ?: 0) * 2
         }
     ) { measurables, constraints ->
         // measurables contains one element corresponding to each of our layout children.
@@ -58,8 +58,8 @@
         // We measure the children with half our constraints, to ensure we can be double
         // the size of the children.
         val placeables = measurables.map { it.measure(childConstraints) }
-        val layoutWidth = (placeables.maxBy { it.width }?.width ?: 0) * 2
-        val layoutHeight = (placeables.maxBy { it.height }?.height ?: 0) * 2
+        val layoutWidth = (placeables.maxByOrNull { it.width }?.width ?: 0) * 2
+        val layoutHeight = (placeables.maxByOrNull { it.height }?.height ?: 0) * 2
         // We call layout to set the size of the current layout and to provide the positioning
         // of the children. The children are placed relative to the current layout place.
         layout(layoutWidth, layoutHeight) {
@@ -85,8 +85,8 @@
         // We measure the children with half our constraints, to ensure we can be double
         // the size of the children.
         val placeables = measurables.map { it.measure(childConstraints) }
-        val layoutWidth = (placeables.maxBy { it.width }?.width ?: 0) * 2
-        val layoutHeight = (placeables.maxBy { it.height }?.height ?: 0) * 2
+        val layoutWidth = (placeables.maxByOrNull { it.width }?.width ?: 0) * 2
+        val layoutHeight = (placeables.maxByOrNull { it.height }?.height ?: 0) * 2
         // We call layout to set the size of the current layout and to provide the positioning
         // of the children. The children are placed relative to the current layout place.
         layout(layoutWidth, layoutHeight) {
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 575ebc1f..48d63d2 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
@@ -602,8 +602,8 @@
         Layout(children) { measurables, constraints ->
             val loosenedConstraints = constraints.copy(minWidth = 0, minHeight = 0)
             val placeables = measurables.map { it.measure(loosenedConstraints) }
-            val maxPlaceableWidth = placeables.maxBy { it.width }?.width ?: 0
-            val maxPlaceableHeight = placeables.maxBy { it.height }?.width ?: 0
+            val maxPlaceableWidth = placeables.maxByOrNull { it.width }?.width ?: 0
+            val maxPlaceableHeight = placeables.maxByOrNull { it.height }?.width ?: 0
             val width = max(maxPlaceableWidth, loosenedConstraints.minWidth)
             val height = max(maxPlaceableHeight, loosenedConstraints.minHeight)
             layout(width, height) {
@@ -623,11 +623,11 @@
         Layout(children, modifier) { measurables, constraints ->
             val placeables = measurables.map { it.measure(constraints) }
             val width = max(
-                placeables.maxBy { it.width }?.width ?: 0, constraints
+                placeables.maxByOrNull { it.width }?.width ?: 0, constraints
                     .minWidth
             )
             val height = max(
-                placeables.maxBy { it.height }?.height ?: 0, constraints
+                placeables.maxByOrNull { it.height }?.height ?: 0, constraints
                     .minHeight
             )
             layout(width, height) {
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 c328913..f001b95 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
@@ -89,6 +89,7 @@
             testCase.createTestVector()
         }
 
+        latch1.await()
         val size = testCase.vectorSize
         takeScreenShot(size).apply {
             assertEquals(Color.Blue.toArgb(), getPixel(5, size - 5))
diff --git a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
index 333456d..676b612 100644
--- a/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
+++ b/ui/ui-core/src/androidAndroidTest/kotlin/androidx/ui/semantics/SemanticsTests.kt
@@ -333,11 +333,11 @@
             val (width, height) = with(placeables.filterNotNull()) {
                 Pair(
                     max(
-                        maxBy { it.width }?.width ?: 0,
+                        maxByOrNull { it.width }?.width ?: 0,
                         constraints.minWidth
                     ),
                     max(
-                        maxBy { it.height }?.height ?: 0,
+                        maxByOrNull { it.height }?.height ?: 0,
                         constraints.minHeight
                     )
                 )
diff --git a/ui/ui-core/src/commonMain/kotlin/androidx/ui/autofill/Autofill.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/autofill/Autofill.kt
index cf57171..74edecc 100644
--- a/ui/ui-core/src/commonMain/kotlin/androidx/ui/autofill/Autofill.kt
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/ui/autofill/Autofill.kt
@@ -75,6 +75,7 @@
         @GuardedBy("this")
         private var previousId = 0
 
+        @Suppress("DEPRECATION_ERROR")
         private fun generateId() =
             synchronized(this) { ++previousId }
     }
diff --git a/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/LayoutTreeConsistencyChecker.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/LayoutTreeConsistencyChecker.kt
index 8f92788..7db8632 100644
--- a/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/LayoutTreeConsistencyChecker.kt
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/LayoutTreeConsistencyChecker.kt
@@ -96,14 +96,12 @@
                 for (i in 0 until depth) {
                     stringBuilder.append("..")
                 }
-                stringBuilder.append(nodeRepresentation)
-                stringBuilder.append("\n")
+                stringBuilder.appendLine(nodeRepresentation)
                 childrenDepth += 1
             }
             node.children.fastForEach { printSubTree(it, childrenDepth) }
         }
-        stringBuilder.append("Tree state:")
-        stringBuilder.append("\n")
+        stringBuilder.appendLine("Tree state:")
         printSubTree(root, 0)
         return stringBuilder.toString()
     }
diff --git a/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/ModelObserver.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/ModelObserver.kt
index 9438bf6..06e94c9f 100644
--- a/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/ModelObserver.kt
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/ui/core/ModelObserver.kt
@@ -49,6 +49,7 @@
     private val commitObserver: FrameCommitObserver = { committed, _ ->
         var hasValues = false
         // This array is in the same order as commitMaps
+        @Suppress("DEPRECATION_ERROR")
         val targetsArray = synchronized(commitMaps) {
             Array(commitMaps.size) { index ->
                 commitMaps[index].map.get(committed).apply {
@@ -69,6 +70,7 @@
      */
     private val readObserver: FrameReadObserver = { model ->
         if (!isPaused) {
+            @Suppress("DEPRECATION_ERROR")
             synchronized(commitMaps) {
                 currentMap!!.add(model, currentTarget!!)
             }
@@ -140,7 +142,7 @@
         val oldTarget = currentTarget
         val oldPaused = isPaused
 
-        currentMap = synchronized(commitMaps) {
+        currentMap = @Suppress("DEPRECATION_ERROR") synchronized(commitMaps) {
             ensureMap(onCommit).apply { removeValue(target) }
         }
         currentTarget = target
@@ -173,6 +175,7 @@
      * `onCommit` methods passed in [observeReads].
      */
     fun clear(target: Any) {
+        @Suppress("DEPRECATION_ERROR")
         synchronized(commitMaps) {
             commitMaps.fastForEach { commitMap ->
                 commitMap.map.removeValue(target)
@@ -192,6 +195,7 @@
         for (i in 0..targetsArray.lastIndex) {
             val targets = targetsArray[i]
             if (targets.isNotEmpty()) {
+                @Suppress("DEPRECATION_ERROR")
                 val commitCaller = synchronized(commitMaps) { commitMaps[i] }
                 commitCaller.callOnCommit(targets)
             }
diff --git a/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorPainter.kt b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorPainter.kt
index 447bc2cb..f392275 100644
--- a/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorPainter.kt
+++ b/ui/ui-core/src/commonMain/kotlin/androidx/ui/graphics/vector/VectorPainter.kt
@@ -89,7 +89,8 @@
  */
 @Composable
 fun VectorPainter(asset: VectorAsset): VectorPainter {
-    return VectorPainter(
+    // TODO: Get rid of this temporary `vp` variable.
+    val vp = VectorPainter(
         name = asset.name,
         defaultWidth = asset.defaultWidth,
         defaultHeight = asset.defaultHeight,
@@ -97,6 +98,7 @@
         viewportHeight = asset.viewportHeight,
         children = { _, _ -> RenderVectorGroup(group = asset.root) }
     )
+    return vp
 }
 
 /**
diff --git a/ui/ui-foundation/api/0.1.0-dev15.txt b/ui/ui-foundation/api/0.1.0-dev15.txt
index 42e71ed..5c8e7fcb 100644
--- a/ui/ui-foundation/api/0.1.0-dev15.txt
+++ b/ui/ui-foundation/api/0.1.0-dev15.txt
@@ -392,7 +392,7 @@
   public final class GenericShape implements androidx.ui.graphics.Shape {
     ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
     method public androidx.ui.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
 }
@@ -403,8 +403,8 @@
     ctor public CornerBasedShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public abstract androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight = topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
     method public final androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize all);
-    method public final androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
-    method public abstract androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public abstract androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public final androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomLeft();
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomRight();
     method public final androidx.ui.foundation.shape.corner.CornerSize getTopLeft();
@@ -412,7 +412,7 @@
   }
 
   @androidx.compose.Immutable public interface CornerSize {
-    method public float toPx(androidx.ui.geometry.Size shapeSize, androidx.ui.unit.Density density);
+    method public float toPx-SwJi8iY(long shapeSize, androidx.ui.unit.Density density);
   }
 
   public final class CornerSizeKt {
@@ -425,7 +425,7 @@
   public final class CutCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public CutCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.CutCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
@@ -441,7 +441,7 @@
   public final class RoundedCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public RoundedCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.RoundedCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
diff --git a/ui/ui-foundation/api/current.txt b/ui/ui-foundation/api/current.txt
index 42e71ed..5c8e7fcb 100644
--- a/ui/ui-foundation/api/current.txt
+++ b/ui/ui-foundation/api/current.txt
@@ -392,7 +392,7 @@
   public final class GenericShape implements androidx.ui.graphics.Shape {
     ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
     method public androidx.ui.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
 }
@@ -403,8 +403,8 @@
     ctor public CornerBasedShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public abstract androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight = topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
     method public final androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize all);
-    method public final androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
-    method public abstract androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public abstract androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public final androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomLeft();
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomRight();
     method public final androidx.ui.foundation.shape.corner.CornerSize getTopLeft();
@@ -412,7 +412,7 @@
   }
 
   @androidx.compose.Immutable public interface CornerSize {
-    method public float toPx(androidx.ui.geometry.Size shapeSize, androidx.ui.unit.Density density);
+    method public float toPx-SwJi8iY(long shapeSize, androidx.ui.unit.Density density);
   }
 
   public final class CornerSizeKt {
@@ -425,7 +425,7 @@
   public final class CutCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public CutCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.CutCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
@@ -441,7 +441,7 @@
   public final class RoundedCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public RoundedCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.RoundedCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
index 42e71ed..5c8e7fcb 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev15.txt
@@ -392,7 +392,7 @@
   public final class GenericShape implements androidx.ui.graphics.Shape {
     ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
     method public androidx.ui.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
 }
@@ -403,8 +403,8 @@
     ctor public CornerBasedShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public abstract androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight = topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
     method public final androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize all);
-    method public final androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
-    method public abstract androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public abstract androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public final androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomLeft();
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomRight();
     method public final androidx.ui.foundation.shape.corner.CornerSize getTopLeft();
@@ -412,7 +412,7 @@
   }
 
   @androidx.compose.Immutable public interface CornerSize {
-    method public float toPx(androidx.ui.geometry.Size shapeSize, androidx.ui.unit.Density density);
+    method public float toPx-SwJi8iY(long shapeSize, androidx.ui.unit.Density density);
   }
 
   public final class CornerSizeKt {
@@ -425,7 +425,7 @@
   public final class CutCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public CutCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.CutCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
@@ -441,7 +441,7 @@
   public final class RoundedCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public RoundedCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.RoundedCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
diff --git a/ui/ui-foundation/api/public_plus_experimental_current.txt b/ui/ui-foundation/api/public_plus_experimental_current.txt
index 42e71ed..5c8e7fcb 100644
--- a/ui/ui-foundation/api/public_plus_experimental_current.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_current.txt
@@ -392,7 +392,7 @@
   public final class GenericShape implements androidx.ui.graphics.Shape {
     ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
     method public androidx.ui.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
 }
@@ -403,8 +403,8 @@
     ctor public CornerBasedShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public abstract androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight = topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
     method public final androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize all);
-    method public final androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
-    method public abstract androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public abstract androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public final androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomLeft();
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomRight();
     method public final androidx.ui.foundation.shape.corner.CornerSize getTopLeft();
@@ -412,7 +412,7 @@
   }
 
   @androidx.compose.Immutable public interface CornerSize {
-    method public float toPx(androidx.ui.geometry.Size shapeSize, androidx.ui.unit.Density density);
+    method public float toPx-SwJi8iY(long shapeSize, androidx.ui.unit.Density density);
   }
 
   public final class CornerSizeKt {
@@ -425,7 +425,7 @@
   public final class CutCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public CutCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.CutCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
@@ -441,7 +441,7 @@
   public final class RoundedCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public RoundedCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.RoundedCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev15.txt b/ui/ui-foundation/api/restricted_0.1.0-dev15.txt
index 42e71ed..5c8e7fcb 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev15.txt
@@ -392,7 +392,7 @@
   public final class GenericShape implements androidx.ui.graphics.Shape {
     ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
     method public androidx.ui.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
 }
@@ -403,8 +403,8 @@
     ctor public CornerBasedShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public abstract androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight = topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
     method public final androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize all);
-    method public final androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
-    method public abstract androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public abstract androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public final androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomLeft();
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomRight();
     method public final androidx.ui.foundation.shape.corner.CornerSize getTopLeft();
@@ -412,7 +412,7 @@
   }
 
   @androidx.compose.Immutable public interface CornerSize {
-    method public float toPx(androidx.ui.geometry.Size shapeSize, androidx.ui.unit.Density density);
+    method public float toPx-SwJi8iY(long shapeSize, androidx.ui.unit.Density density);
   }
 
   public final class CornerSizeKt {
@@ -425,7 +425,7 @@
   public final class CutCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public CutCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.CutCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
@@ -441,7 +441,7 @@
   public final class RoundedCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public RoundedCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.RoundedCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
diff --git a/ui/ui-foundation/api/restricted_current.txt b/ui/ui-foundation/api/restricted_current.txt
index 42e71ed..5c8e7fcb 100644
--- a/ui/ui-foundation/api/restricted_current.txt
+++ b/ui/ui-foundation/api/restricted_current.txt
@@ -392,7 +392,7 @@
   public final class GenericShape implements androidx.ui.graphics.Shape {
     ctor public GenericShape(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
     method public androidx.ui.foundation.shape.GenericShape copy(kotlin.jvm.functions.Function2<? super androidx.ui.graphics.Path,? super androidx.ui.geometry.Size,kotlin.Unit> builder);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
 }
@@ -403,8 +403,8 @@
     ctor public CornerBasedShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public abstract androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft = topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight = topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight = bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft = bottomLeft);
     method public final androidx.ui.foundation.shape.corner.CornerBasedShape copy(androidx.ui.foundation.shape.corner.CornerSize all);
-    method public final androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
-    method public abstract androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public abstract androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public final androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomLeft();
     method public final androidx.ui.foundation.shape.corner.CornerSize getBottomRight();
     method public final androidx.ui.foundation.shape.corner.CornerSize getTopLeft();
@@ -412,7 +412,7 @@
   }
 
   @androidx.compose.Immutable public interface CornerSize {
-    method public float toPx(androidx.ui.geometry.Size shapeSize, androidx.ui.unit.Density density);
+    method public float toPx-SwJi8iY(long shapeSize, androidx.ui.unit.Density density);
   }
 
   public final class CornerSizeKt {
@@ -425,7 +425,7 @@
   public final class CutCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public CutCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.CutCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class CutCornerShapeKt {
@@ -441,7 +441,7 @@
   public final class RoundedCornerShape extends androidx.ui.foundation.shape.corner.CornerBasedShape {
     ctor public RoundedCornerShape(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
     method public androidx.ui.foundation.shape.corner.RoundedCornerShape copy(androidx.ui.foundation.shape.corner.CornerSize topLeft, androidx.ui.foundation.shape.corner.CornerSize topRight, androidx.ui.foundation.shape.corner.CornerSize bottomRight, androidx.ui.foundation.shape.corner.CornerSize bottomLeft);
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, float topLeft, float topRight, float bottomRight, float bottomLeft);
+    method public androidx.ui.graphics.Outline createOutline-0bCqP4M(long size, float topLeft, float topRight, float bottomRight, float bottomLeft);
   }
 
   public final class RoundedCornerShapeKt {
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/ui/foundation/animation/FlingConfig.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/ui/foundation/animation/FlingConfig.kt
index ca07208..9f4798f 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/ui/foundation/animation/FlingConfig.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/ui/foundation/animation/FlingConfig.kt
@@ -113,7 +113,7 @@
     decayAnimation: FloatDecayAnimationSpec = ExponentialDecay()
 ): FlingConfig {
     val adjustTarget: (Float) -> TargetAnimation? = { target ->
-        val point = anchors.minBy { abs(it - target) }
+        val point = anchors.minByOrNull { abs(it - target) }
         val adjusted = point ?: target
         TargetAnimation(adjusted, animationSpec)
     }
diff --git a/ui/ui-foundation/src/commonMain/kotlin/androidx/ui/foundation/lazy/LazyItemsState.kt b/ui/ui-foundation/src/commonMain/kotlin/androidx/ui/foundation/lazy/LazyItemsState.kt
index 3a41bee..03bc555 100644
--- a/ui/ui-foundation/src/commonMain/kotlin/androidx/ui/foundation/lazy/LazyItemsState.kt
+++ b/ui/ui-foundation/src/commonMain/kotlin/androidx/ui/foundation/lazy/LazyItemsState.kt
@@ -484,7 +484,7 @@
         MeasuringIntrinsicsMeasureBlocks { measurables, constraints ->
             val placeables = measurables.map { it.measure(constraints) }
             val mainAxisSize = placeables.sumBy { it.mainAxisSize }
-            val crossAxisSize = placeables.maxBy { it.crossAxisSize }?.crossAxisSize ?: 0
+            val crossAxisSize = placeables.maxByOrNull { it.crossAxisSize }?.crossAxisSize ?: 0
             layout(
                 width = if (!isVertical) mainAxisSize else crossAxisSize,
                 height = if (isVertical) mainAxisSize else crossAxisSize
diff --git a/ui/ui-geometry/api/0.1.0-dev15.txt b/ui/ui-geometry/api/0.1.0-dev15.txt
index c5dbbc3..93ff203 100644
--- a/ui/ui-geometry/api/0.1.0-dev15.txt
+++ b/ui/ui-geometry/api/0.1.0-dev15.txt
@@ -172,7 +172,7 @@
     method public float getMaxDimension();
     method public float getMinDimension();
     method public float getRight();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public float getTop();
     method public androidx.ui.geometry.Offset getTopCenter();
     method public androidx.ui.geometry.Offset getTopLeft();
@@ -211,59 +211,59 @@
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect lerp(androidx.ui.geometry.Rect start, androidx.ui.geometry.Rect stop, float fraction);
   }
 
-  @androidx.compose.Immutable public final class Size {
-    ctor public Size(internal long packedValue);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset center(androidx.ui.geometry.Offset origin = Offset.Zero);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public boolean contains(androidx.ui.geometry.Offset offset);
-    method public androidx.ui.geometry.Size copy(float width = this.width, float height = this.height);
-    method @androidx.compose.Immutable public androidx.ui.geometry.Size copy(long packedValue);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size div(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size getFlipped();
-    method public float getHeight();
-    method public float getMaxDimension();
-    method public float getMinDimension();
-    method public float getWidth();
-    method @androidx.compose.Stable public boolean isEmpty();
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size minus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Offset minus(androidx.ui.geometry.Size other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size plus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size rem(float operand);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size times(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size truncDiv(float operand);
-    property public final float height;
-    property public final float maxDimension;
-    property public final float minDimension;
-    property public final float width;
+  @androidx.compose.Immutable public final inline class Size {
+    ctor public Size();
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-impl(long $this, androidx.ui.geometry.Offset origin = Offset.Zero);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method public static long constructor-impl(internal long packedValue);
+    method @androidx.compose.Stable public static boolean contains-impl(long $this, androidx.ui.geometry.Offset offset);
+    method public static long copy-impl(long $this, float width = this.width, float height = this.height);
+    method @androidx.compose.Stable public static operator long div-impl(long $this, float operand);
+    method @androidx.compose.Immutable public static inline boolean equals-impl(long p, Object? p1);
+    method public static boolean equals-impl0(long p1, long p2);
+    method @androidx.compose.Stable public static long getFlipped-impl(long $this);
+    method public static float getHeight-impl(long $this);
+    method public static float getMaxDimension-impl(long $this);
+    method public static float getMinDimension-impl(long $this);
+    method public static float getWidth-impl(long $this);
+    method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
+    method @androidx.compose.Stable public static boolean isEmpty-impl(long $this);
+    method @androidx.compose.Stable public static operator androidx.ui.geometry.Offset minus-b2zCL34(long $this, long other);
+    method @androidx.compose.Stable public static operator long minus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long plus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long rem-impl(long $this, float operand);
+    method @androidx.compose.Stable public static operator long times-impl(long $this, float operand);
+    method public static String toString-impl(long $this);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static long truncDiv-impl(long $this, float operand);
     field public static final androidx.ui.geometry.Size.Companion Companion;
   }
 
   public static final class Size.Companion {
-    method @Deprecated public androidx.ui.geometry.Size copy(androidx.ui.geometry.Size source);
-    method public androidx.ui.geometry.Size fromHeight(float height);
-    method public androidx.ui.geometry.Size fromRadius(float radius);
-    method public androidx.ui.geometry.Size fromWidth(float width);
-    method public androidx.ui.geometry.Size getUnspecifiedSize();
-    method public androidx.ui.geometry.Size getZero();
-    method public androidx.ui.geometry.Size square(float dimension);
-    property public final androidx.ui.geometry.Size UnspecifiedSize;
-    property public final androidx.ui.geometry.Size zero;
+    method @Deprecated public long copy-b2zCL34(long source);
+    method public long fromHeight(float height);
+    method public long fromRadius(float radius);
+    method public long fromWidth(float width);
+    method public long getUnspecifiedSize();
+    method public long getZero();
+    method public long square(float dimension);
+    property public final long UnspecifiedSize;
+    property public final long zero;
   }
 
   public final class SizeKt {
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size Size(float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp(androidx.ui.geometry.Size start, androidx.ui.geometry.Size stop, float fraction);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(int, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(double, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(float, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static long Size(float width, float height);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp-T-c3OIQ(long start, long stop, float fraction);
+    method @androidx.compose.Stable public static inline operator long times--RLAD3A(int, long size);
+    method @androidx.compose.Stable public static inline operator long times-EVxmo3I(float, long size);
+    method @androidx.compose.Stable public static inline operator long times-W1X_JKQ(double, long size);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect-b2zCL34(long);
   }
 
 }
diff --git a/ui/ui-geometry/api/current.txt b/ui/ui-geometry/api/current.txt
index c5dbbc3..93ff203 100644
--- a/ui/ui-geometry/api/current.txt
+++ b/ui/ui-geometry/api/current.txt
@@ -172,7 +172,7 @@
     method public float getMaxDimension();
     method public float getMinDimension();
     method public float getRight();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public float getTop();
     method public androidx.ui.geometry.Offset getTopCenter();
     method public androidx.ui.geometry.Offset getTopLeft();
@@ -211,59 +211,59 @@
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect lerp(androidx.ui.geometry.Rect start, androidx.ui.geometry.Rect stop, float fraction);
   }
 
-  @androidx.compose.Immutable public final class Size {
-    ctor public Size(internal long packedValue);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset center(androidx.ui.geometry.Offset origin = Offset.Zero);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public boolean contains(androidx.ui.geometry.Offset offset);
-    method public androidx.ui.geometry.Size copy(float width = this.width, float height = this.height);
-    method @androidx.compose.Immutable public androidx.ui.geometry.Size copy(long packedValue);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size div(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size getFlipped();
-    method public float getHeight();
-    method public float getMaxDimension();
-    method public float getMinDimension();
-    method public float getWidth();
-    method @androidx.compose.Stable public boolean isEmpty();
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size minus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Offset minus(androidx.ui.geometry.Size other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size plus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size rem(float operand);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size times(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size truncDiv(float operand);
-    property public final float height;
-    property public final float maxDimension;
-    property public final float minDimension;
-    property public final float width;
+  @androidx.compose.Immutable public final inline class Size {
+    ctor public Size();
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-impl(long $this, androidx.ui.geometry.Offset origin = Offset.Zero);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method public static long constructor-impl(internal long packedValue);
+    method @androidx.compose.Stable public static boolean contains-impl(long $this, androidx.ui.geometry.Offset offset);
+    method public static long copy-impl(long $this, float width = this.width, float height = this.height);
+    method @androidx.compose.Stable public static operator long div-impl(long $this, float operand);
+    method @androidx.compose.Immutable public static inline boolean equals-impl(long p, Object? p1);
+    method public static boolean equals-impl0(long p1, long p2);
+    method @androidx.compose.Stable public static long getFlipped-impl(long $this);
+    method public static float getHeight-impl(long $this);
+    method public static float getMaxDimension-impl(long $this);
+    method public static float getMinDimension-impl(long $this);
+    method public static float getWidth-impl(long $this);
+    method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
+    method @androidx.compose.Stable public static boolean isEmpty-impl(long $this);
+    method @androidx.compose.Stable public static operator androidx.ui.geometry.Offset minus-b2zCL34(long $this, long other);
+    method @androidx.compose.Stable public static operator long minus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long plus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long rem-impl(long $this, float operand);
+    method @androidx.compose.Stable public static operator long times-impl(long $this, float operand);
+    method public static String toString-impl(long $this);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static long truncDiv-impl(long $this, float operand);
     field public static final androidx.ui.geometry.Size.Companion Companion;
   }
 
   public static final class Size.Companion {
-    method @Deprecated public androidx.ui.geometry.Size copy(androidx.ui.geometry.Size source);
-    method public androidx.ui.geometry.Size fromHeight(float height);
-    method public androidx.ui.geometry.Size fromRadius(float radius);
-    method public androidx.ui.geometry.Size fromWidth(float width);
-    method public androidx.ui.geometry.Size getUnspecifiedSize();
-    method public androidx.ui.geometry.Size getZero();
-    method public androidx.ui.geometry.Size square(float dimension);
-    property public final androidx.ui.geometry.Size UnspecifiedSize;
-    property public final androidx.ui.geometry.Size zero;
+    method @Deprecated public long copy-b2zCL34(long source);
+    method public long fromHeight(float height);
+    method public long fromRadius(float radius);
+    method public long fromWidth(float width);
+    method public long getUnspecifiedSize();
+    method public long getZero();
+    method public long square(float dimension);
+    property public final long UnspecifiedSize;
+    property public final long zero;
   }
 
   public final class SizeKt {
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size Size(float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp(androidx.ui.geometry.Size start, androidx.ui.geometry.Size stop, float fraction);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(int, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(double, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(float, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static long Size(float width, float height);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp-T-c3OIQ(long start, long stop, float fraction);
+    method @androidx.compose.Stable public static inline operator long times--RLAD3A(int, long size);
+    method @androidx.compose.Stable public static inline operator long times-EVxmo3I(float, long size);
+    method @androidx.compose.Stable public static inline operator long times-W1X_JKQ(double, long size);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect-b2zCL34(long);
   }
 
 }
diff --git a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev15.txt
index c5dbbc3..93ff203 100644
--- a/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_0.1.0-dev15.txt
@@ -172,7 +172,7 @@
     method public float getMaxDimension();
     method public float getMinDimension();
     method public float getRight();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public float getTop();
     method public androidx.ui.geometry.Offset getTopCenter();
     method public androidx.ui.geometry.Offset getTopLeft();
@@ -211,59 +211,59 @@
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect lerp(androidx.ui.geometry.Rect start, androidx.ui.geometry.Rect stop, float fraction);
   }
 
-  @androidx.compose.Immutable public final class Size {
-    ctor public Size(internal long packedValue);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset center(androidx.ui.geometry.Offset origin = Offset.Zero);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public boolean contains(androidx.ui.geometry.Offset offset);
-    method public androidx.ui.geometry.Size copy(float width = this.width, float height = this.height);
-    method @androidx.compose.Immutable public androidx.ui.geometry.Size copy(long packedValue);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size div(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size getFlipped();
-    method public float getHeight();
-    method public float getMaxDimension();
-    method public float getMinDimension();
-    method public float getWidth();
-    method @androidx.compose.Stable public boolean isEmpty();
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size minus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Offset minus(androidx.ui.geometry.Size other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size plus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size rem(float operand);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size times(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size truncDiv(float operand);
-    property public final float height;
-    property public final float maxDimension;
-    property public final float minDimension;
-    property public final float width;
+  @androidx.compose.Immutable public final inline class Size {
+    ctor public Size();
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-impl(long $this, androidx.ui.geometry.Offset origin = Offset.Zero);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method public static long constructor-impl(internal long packedValue);
+    method @androidx.compose.Stable public static boolean contains-impl(long $this, androidx.ui.geometry.Offset offset);
+    method public static long copy-impl(long $this, float width = this.width, float height = this.height);
+    method @androidx.compose.Stable public static operator long div-impl(long $this, float operand);
+    method @androidx.compose.Immutable public static inline boolean equals-impl(long p, Object? p1);
+    method public static boolean equals-impl0(long p1, long p2);
+    method @androidx.compose.Stable public static long getFlipped-impl(long $this);
+    method public static float getHeight-impl(long $this);
+    method public static float getMaxDimension-impl(long $this);
+    method public static float getMinDimension-impl(long $this);
+    method public static float getWidth-impl(long $this);
+    method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
+    method @androidx.compose.Stable public static boolean isEmpty-impl(long $this);
+    method @androidx.compose.Stable public static operator androidx.ui.geometry.Offset minus-b2zCL34(long $this, long other);
+    method @androidx.compose.Stable public static operator long minus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long plus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long rem-impl(long $this, float operand);
+    method @androidx.compose.Stable public static operator long times-impl(long $this, float operand);
+    method public static String toString-impl(long $this);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static long truncDiv-impl(long $this, float operand);
     field public static final androidx.ui.geometry.Size.Companion Companion;
   }
 
   public static final class Size.Companion {
-    method @Deprecated public androidx.ui.geometry.Size copy(androidx.ui.geometry.Size source);
-    method public androidx.ui.geometry.Size fromHeight(float height);
-    method public androidx.ui.geometry.Size fromRadius(float radius);
-    method public androidx.ui.geometry.Size fromWidth(float width);
-    method public androidx.ui.geometry.Size getUnspecifiedSize();
-    method public androidx.ui.geometry.Size getZero();
-    method public androidx.ui.geometry.Size square(float dimension);
-    property public final androidx.ui.geometry.Size UnspecifiedSize;
-    property public final androidx.ui.geometry.Size zero;
+    method @Deprecated public long copy-b2zCL34(long source);
+    method public long fromHeight(float height);
+    method public long fromRadius(float radius);
+    method public long fromWidth(float width);
+    method public long getUnspecifiedSize();
+    method public long getZero();
+    method public long square(float dimension);
+    property public final long UnspecifiedSize;
+    property public final long zero;
   }
 
   public final class SizeKt {
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size Size(float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp(androidx.ui.geometry.Size start, androidx.ui.geometry.Size stop, float fraction);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(int, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(double, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(float, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static long Size(float width, float height);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp-T-c3OIQ(long start, long stop, float fraction);
+    method @androidx.compose.Stable public static inline operator long times--RLAD3A(int, long size);
+    method @androidx.compose.Stable public static inline operator long times-EVxmo3I(float, long size);
+    method @androidx.compose.Stable public static inline operator long times-W1X_JKQ(double, long size);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect-b2zCL34(long);
   }
 
 }
diff --git a/ui/ui-geometry/api/public_plus_experimental_current.txt b/ui/ui-geometry/api/public_plus_experimental_current.txt
index c5dbbc3..93ff203 100644
--- a/ui/ui-geometry/api/public_plus_experimental_current.txt
+++ b/ui/ui-geometry/api/public_plus_experimental_current.txt
@@ -172,7 +172,7 @@
     method public float getMaxDimension();
     method public float getMinDimension();
     method public float getRight();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public float getTop();
     method public androidx.ui.geometry.Offset getTopCenter();
     method public androidx.ui.geometry.Offset getTopLeft();
@@ -211,59 +211,59 @@
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect lerp(androidx.ui.geometry.Rect start, androidx.ui.geometry.Rect stop, float fraction);
   }
 
-  @androidx.compose.Immutable public final class Size {
-    ctor public Size(internal long packedValue);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset center(androidx.ui.geometry.Offset origin = Offset.Zero);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public boolean contains(androidx.ui.geometry.Offset offset);
-    method public androidx.ui.geometry.Size copy(float width = this.width, float height = this.height);
-    method @androidx.compose.Immutable public androidx.ui.geometry.Size copy(long packedValue);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size div(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size getFlipped();
-    method public float getHeight();
-    method public float getMaxDimension();
-    method public float getMinDimension();
-    method public float getWidth();
-    method @androidx.compose.Stable public boolean isEmpty();
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size minus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Offset minus(androidx.ui.geometry.Size other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size plus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size rem(float operand);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size times(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size truncDiv(float operand);
-    property public final float height;
-    property public final float maxDimension;
-    property public final float minDimension;
-    property public final float width;
+  @androidx.compose.Immutable public final inline class Size {
+    ctor public Size();
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-impl(long $this, androidx.ui.geometry.Offset origin = Offset.Zero);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method public static long constructor-impl(internal long packedValue);
+    method @androidx.compose.Stable public static boolean contains-impl(long $this, androidx.ui.geometry.Offset offset);
+    method public static long copy-impl(long $this, float width = this.width, float height = this.height);
+    method @androidx.compose.Stable public static operator long div-impl(long $this, float operand);
+    method @androidx.compose.Immutable public static inline boolean equals-impl(long p, Object? p1);
+    method public static boolean equals-impl0(long p1, long p2);
+    method @androidx.compose.Stable public static long getFlipped-impl(long $this);
+    method public static float getHeight-impl(long $this);
+    method public static float getMaxDimension-impl(long $this);
+    method public static float getMinDimension-impl(long $this);
+    method public static float getWidth-impl(long $this);
+    method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
+    method @androidx.compose.Stable public static boolean isEmpty-impl(long $this);
+    method @androidx.compose.Stable public static operator androidx.ui.geometry.Offset minus-b2zCL34(long $this, long other);
+    method @androidx.compose.Stable public static operator long minus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long plus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long rem-impl(long $this, float operand);
+    method @androidx.compose.Stable public static operator long times-impl(long $this, float operand);
+    method public static String toString-impl(long $this);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static long truncDiv-impl(long $this, float operand);
     field public static final androidx.ui.geometry.Size.Companion Companion;
   }
 
   public static final class Size.Companion {
-    method @Deprecated public androidx.ui.geometry.Size copy(androidx.ui.geometry.Size source);
-    method public androidx.ui.geometry.Size fromHeight(float height);
-    method public androidx.ui.geometry.Size fromRadius(float radius);
-    method public androidx.ui.geometry.Size fromWidth(float width);
-    method public androidx.ui.geometry.Size getUnspecifiedSize();
-    method public androidx.ui.geometry.Size getZero();
-    method public androidx.ui.geometry.Size square(float dimension);
-    property public final androidx.ui.geometry.Size UnspecifiedSize;
-    property public final androidx.ui.geometry.Size zero;
+    method @Deprecated public long copy-b2zCL34(long source);
+    method public long fromHeight(float height);
+    method public long fromRadius(float radius);
+    method public long fromWidth(float width);
+    method public long getUnspecifiedSize();
+    method public long getZero();
+    method public long square(float dimension);
+    property public final long UnspecifiedSize;
+    property public final long zero;
   }
 
   public final class SizeKt {
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size Size(float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp(androidx.ui.geometry.Size start, androidx.ui.geometry.Size stop, float fraction);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(int, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(double, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(float, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static long Size(float width, float height);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp-T-c3OIQ(long start, long stop, float fraction);
+    method @androidx.compose.Stable public static inline operator long times--RLAD3A(int, long size);
+    method @androidx.compose.Stable public static inline operator long times-EVxmo3I(float, long size);
+    method @androidx.compose.Stable public static inline operator long times-W1X_JKQ(double, long size);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect-b2zCL34(long);
   }
 
 }
diff --git a/ui/ui-geometry/api/restricted_0.1.0-dev15.txt b/ui/ui-geometry/api/restricted_0.1.0-dev15.txt
index c5dbbc3..93ff203 100644
--- a/ui/ui-geometry/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-geometry/api/restricted_0.1.0-dev15.txt
@@ -172,7 +172,7 @@
     method public float getMaxDimension();
     method public float getMinDimension();
     method public float getRight();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public float getTop();
     method public androidx.ui.geometry.Offset getTopCenter();
     method public androidx.ui.geometry.Offset getTopLeft();
@@ -211,59 +211,59 @@
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect lerp(androidx.ui.geometry.Rect start, androidx.ui.geometry.Rect stop, float fraction);
   }
 
-  @androidx.compose.Immutable public final class Size {
-    ctor public Size(internal long packedValue);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset center(androidx.ui.geometry.Offset origin = Offset.Zero);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public boolean contains(androidx.ui.geometry.Offset offset);
-    method public androidx.ui.geometry.Size copy(float width = this.width, float height = this.height);
-    method @androidx.compose.Immutable public androidx.ui.geometry.Size copy(long packedValue);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size div(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size getFlipped();
-    method public float getHeight();
-    method public float getMaxDimension();
-    method public float getMinDimension();
-    method public float getWidth();
-    method @androidx.compose.Stable public boolean isEmpty();
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size minus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Offset minus(androidx.ui.geometry.Size other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size plus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size rem(float operand);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size times(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size truncDiv(float operand);
-    property public final float height;
-    property public final float maxDimension;
-    property public final float minDimension;
-    property public final float width;
+  @androidx.compose.Immutable public final inline class Size {
+    ctor public Size();
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-impl(long $this, androidx.ui.geometry.Offset origin = Offset.Zero);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method public static long constructor-impl(internal long packedValue);
+    method @androidx.compose.Stable public static boolean contains-impl(long $this, androidx.ui.geometry.Offset offset);
+    method public static long copy-impl(long $this, float width = this.width, float height = this.height);
+    method @androidx.compose.Stable public static operator long div-impl(long $this, float operand);
+    method @androidx.compose.Immutable public static inline boolean equals-impl(long p, Object? p1);
+    method public static boolean equals-impl0(long p1, long p2);
+    method @androidx.compose.Stable public static long getFlipped-impl(long $this);
+    method public static float getHeight-impl(long $this);
+    method public static float getMaxDimension-impl(long $this);
+    method public static float getMinDimension-impl(long $this);
+    method public static float getWidth-impl(long $this);
+    method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
+    method @androidx.compose.Stable public static boolean isEmpty-impl(long $this);
+    method @androidx.compose.Stable public static operator androidx.ui.geometry.Offset minus-b2zCL34(long $this, long other);
+    method @androidx.compose.Stable public static operator long minus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long plus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long rem-impl(long $this, float operand);
+    method @androidx.compose.Stable public static operator long times-impl(long $this, float operand);
+    method public static String toString-impl(long $this);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static long truncDiv-impl(long $this, float operand);
     field public static final androidx.ui.geometry.Size.Companion Companion;
   }
 
   public static final class Size.Companion {
-    method @Deprecated public androidx.ui.geometry.Size copy(androidx.ui.geometry.Size source);
-    method public androidx.ui.geometry.Size fromHeight(float height);
-    method public androidx.ui.geometry.Size fromRadius(float radius);
-    method public androidx.ui.geometry.Size fromWidth(float width);
-    method public androidx.ui.geometry.Size getUnspecifiedSize();
-    method public androidx.ui.geometry.Size getZero();
-    method public androidx.ui.geometry.Size square(float dimension);
-    property public final androidx.ui.geometry.Size UnspecifiedSize;
-    property public final androidx.ui.geometry.Size zero;
+    method @Deprecated public long copy-b2zCL34(long source);
+    method public long fromHeight(float height);
+    method public long fromRadius(float radius);
+    method public long fromWidth(float width);
+    method public long getUnspecifiedSize();
+    method public long getZero();
+    method public long square(float dimension);
+    property public final long UnspecifiedSize;
+    property public final long zero;
   }
 
   public final class SizeKt {
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size Size(float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp(androidx.ui.geometry.Size start, androidx.ui.geometry.Size stop, float fraction);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(int, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(double, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(float, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static long Size(float width, float height);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp-T-c3OIQ(long start, long stop, float fraction);
+    method @androidx.compose.Stable public static inline operator long times--RLAD3A(int, long size);
+    method @androidx.compose.Stable public static inline operator long times-EVxmo3I(float, long size);
+    method @androidx.compose.Stable public static inline operator long times-W1X_JKQ(double, long size);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect-b2zCL34(long);
   }
 
 }
diff --git a/ui/ui-geometry/api/restricted_current.txt b/ui/ui-geometry/api/restricted_current.txt
index c5dbbc3..93ff203 100644
--- a/ui/ui-geometry/api/restricted_current.txt
+++ b/ui/ui-geometry/api/restricted_current.txt
@@ -172,7 +172,7 @@
     method public float getMaxDimension();
     method public float getMinDimension();
     method public float getRight();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public float getTop();
     method public androidx.ui.geometry.Offset getTopCenter();
     method public androidx.ui.geometry.Offset getTopLeft();
@@ -211,59 +211,59 @@
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect lerp(androidx.ui.geometry.Rect start, androidx.ui.geometry.Rect stop, float fraction);
   }
 
-  @androidx.compose.Immutable public final class Size {
-    ctor public Size(internal long packedValue);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset bottomRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset center(androidx.ui.geometry.Offset origin = Offset.Zero);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset centerRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public boolean contains(androidx.ui.geometry.Offset offset);
-    method public androidx.ui.geometry.Size copy(float width = this.width, float height = this.height);
-    method @androidx.compose.Immutable public androidx.ui.geometry.Size copy(long packedValue);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size div(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size getFlipped();
-    method public float getHeight();
-    method public float getMaxDimension();
-    method public float getMinDimension();
-    method public float getWidth();
-    method @androidx.compose.Stable public boolean isEmpty();
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size minus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Offset minus(androidx.ui.geometry.Size other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size plus(androidx.ui.geometry.Offset other);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size rem(float operand);
-    method @androidx.compose.Stable public operator androidx.ui.geometry.Size times(float operand);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topCenter(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topLeft(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Offset topRight(androidx.ui.geometry.Offset origin);
-    method @androidx.compose.Stable public androidx.ui.geometry.Size truncDiv(float operand);
-    property public final float height;
-    property public final float maxDimension;
-    property public final float minDimension;
-    property public final float width;
+  @androidx.compose.Immutable public final inline class Size {
+    ctor public Size();
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset bottomRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-impl(long $this, androidx.ui.geometry.Offset origin = Offset.Zero);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset centerRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method public static long constructor-impl(internal long packedValue);
+    method @androidx.compose.Stable public static boolean contains-impl(long $this, androidx.ui.geometry.Offset offset);
+    method public static long copy-impl(long $this, float width = this.width, float height = this.height);
+    method @androidx.compose.Stable public static operator long div-impl(long $this, float operand);
+    method @androidx.compose.Immutable public static inline boolean equals-impl(long p, Object? p1);
+    method public static boolean equals-impl0(long p1, long p2);
+    method @androidx.compose.Stable public static long getFlipped-impl(long $this);
+    method public static float getHeight-impl(long $this);
+    method public static float getMaxDimension-impl(long $this);
+    method public static float getMinDimension-impl(long $this);
+    method public static float getWidth-impl(long $this);
+    method @androidx.compose.Immutable public static inline int hashCode-impl(long p);
+    method @androidx.compose.Stable public static boolean isEmpty-impl(long $this);
+    method @androidx.compose.Stable public static operator androidx.ui.geometry.Offset minus-b2zCL34(long $this, long other);
+    method @androidx.compose.Stable public static operator long minus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long plus-impl(long $this, androidx.ui.geometry.Offset other);
+    method @androidx.compose.Stable public static operator long rem-impl(long $this, float operand);
+    method @androidx.compose.Stable public static operator long times-impl(long $this, float operand);
+    method public static String toString-impl(long $this);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topCenter-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topLeft-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset topRight-impl(long $this, androidx.ui.geometry.Offset origin);
+    method @androidx.compose.Stable public static long truncDiv-impl(long $this, float operand);
     field public static final androidx.ui.geometry.Size.Companion Companion;
   }
 
   public static final class Size.Companion {
-    method @Deprecated public androidx.ui.geometry.Size copy(androidx.ui.geometry.Size source);
-    method public androidx.ui.geometry.Size fromHeight(float height);
-    method public androidx.ui.geometry.Size fromRadius(float radius);
-    method public androidx.ui.geometry.Size fromWidth(float width);
-    method public androidx.ui.geometry.Size getUnspecifiedSize();
-    method public androidx.ui.geometry.Size getZero();
-    method public androidx.ui.geometry.Size square(float dimension);
-    property public final androidx.ui.geometry.Size UnspecifiedSize;
-    property public final androidx.ui.geometry.Size zero;
+    method @Deprecated public long copy-b2zCL34(long source);
+    method public long fromHeight(float height);
+    method public long fromRadius(float radius);
+    method public long fromWidth(float width);
+    method public long getUnspecifiedSize();
+    method public long getZero();
+    method public long square(float dimension);
+    property public final long UnspecifiedSize;
+    property public final long zero;
   }
 
   public final class SizeKt {
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size Size(float width, float height);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp(androidx.ui.geometry.Size start, androidx.ui.geometry.Size stop, float fraction);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(int, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(double, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static inline operator androidx.ui.geometry.Size times(float, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static long Size(float width, float height);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Size? lerp-T-c3OIQ(long start, long stop, float fraction);
+    method @androidx.compose.Stable public static inline operator long times--RLAD3A(int, long size);
+    method @androidx.compose.Stable public static inline operator long times-EVxmo3I(float, long size);
+    method @androidx.compose.Stable public static inline operator long times-W1X_JKQ(double, long size);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect-b2zCL34(long);
   }
 
 }
diff --git a/ui/ui-geometry/src/commonMain/kotlin/androidx/ui/geometry/Size.kt b/ui/ui-geometry/src/commonMain/kotlin/androidx/ui/geometry/Size.kt
index 100d9e2..4299c06 100644
--- a/ui/ui-geometry/src/commonMain/kotlin/androidx/ui/geometry/Size.kt
+++ b/ui/ui-geometry/src/commonMain/kotlin/androidx/ui/geometry/Size.kt
@@ -42,7 +42,7 @@
 // TODO njawad make this an inline class again once the fix for b/155690960 has been picked
 //   up by the compose kotlin compiler
 @Immutable
-/* inline */ data class Size(@PublishedApi internal val packedValue: Long) {
+inline class Size(@PublishedApi internal val packedValue: Long) {
 
     @Stable
     val width: Float
diff --git a/ui/ui-graphics/api/0.1.0-dev15.txt b/ui/ui-graphics/api/0.1.0-dev15.txt
index e5f2907..ba44771 100644
--- a/ui/ui-graphics/api/0.1.0-dev15.txt
+++ b/ui/ui-graphics/api/0.1.0-dev15.txt
@@ -502,7 +502,7 @@
   }
 
   @androidx.compose.Immutable public interface Shape {
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
   public final class SolidColor extends androidx.ui.graphics.Brush {
@@ -746,31 +746,31 @@
 
   @androidx.ui.graphics.drawscope.DrawScopeMarker public abstract class DrawScope implements androidx.ui.unit.Density {
     ctor public DrawScope();
-    method protected final void draw(androidx.ui.graphics.Canvas canvas, androidx.ui.geometry.Size size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
-    method public final void drawArc(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method protected final void draw-mEaFHtM(androidx.ui.graphics.Canvas canvas, long size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
+    method public final void drawArc-MKXvu20(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle(androidx.ui.graphics.Brush brush, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle-UNeD5NE(long color, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.geometry.Offset topLeft = Offset.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset = IntOffset.Origin, androidx.ui.unit.IntSize srcSize = IntSize(image.width, image.height), androidx.ui.unit.IntOffset dstOffset = IntOffset.Origin, androidx.ui.unit.IntSize dstSize = srcSize, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine-LIcrJ00(long color, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath(androidx.ui.graphics.Path path, androidx.ui.graphics.Brush brush, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath-u5ZPEDk(androidx.ui.graphics.Path path, long color, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, androidx.ui.graphics.Brush brush, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints-op7krm4(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, long color, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final androidx.ui.geometry.Offset getCenter();
     method public abstract androidx.ui.core.LayoutDirection getLayoutDirection();
-    method public final androidx.ui.geometry.Size getSize();
+    method public final long getSize();
     property public final androidx.ui.geometry.Offset center;
     property public abstract androidx.ui.core.LayoutDirection layoutDirection;
-    property public final androidx.ui.geometry.Size size;
+    property public final long size;
     field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
   }
 
@@ -802,14 +802,14 @@
     method public void clipPath(androidx.ui.graphics.Path path, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public void clipRect(float left = 0.0f, float top = 0.0f, float right = size.width, float bottom = size.height, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public default androidx.ui.geometry.Offset getCenter();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public void inset(float left, float top, float right, float bottom);
     method public void rotate(float degrees, float pivotX = center.x, float pivotY = center.y);
     method public void scale(float scaleX, float scaleY = scaleX, float pivotX = center.x, float pivotY = center.y);
     method public void transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
     method public void translate(float left = 0.0f, float top = 0.0f);
     property public default androidx.ui.geometry.Offset center;
-    property public abstract androidx.ui.geometry.Size size;
+    property public abstract long size;
   }
 
   public final class DrawTransformKt {
@@ -855,17 +855,17 @@
     method public long component1();
     method public androidx.ui.graphics.painter.ColorPainter copy-QEYXlZo(long color);
     method public long getColor();
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class ImagePainter extends androidx.ui.graphics.painter.Painter {
     ctor public ImagePainter(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
     method public androidx.ui.graphics.painter.ImagePainter copy(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public abstract class Painter {
@@ -873,10 +873,10 @@
     method protected boolean applyAlpha(float alpha);
     method protected boolean applyColorFilter(androidx.ui.graphics.ColorFilter? colorFilter);
     method protected boolean applyLayoutDirection(androidx.ui.core.LayoutDirection layoutDirection);
-    method public final void draw(androidx.ui.graphics.drawscope.DrawScope, androidx.ui.geometry.Size size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
-    method public abstract androidx.ui.geometry.Size getIntrinsicSize();
+    method public final void draw-fjVI2_8(androidx.ui.graphics.drawscope.DrawScope, long size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
+    method public abstract long getIntrinsicSize();
     method protected abstract void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public abstract androidx.ui.geometry.Size intrinsicSize;
+    property public abstract long intrinsicSize;
   }
 
 }
diff --git a/ui/ui-graphics/api/current.txt b/ui/ui-graphics/api/current.txt
index e5f2907..ba44771 100644
--- a/ui/ui-graphics/api/current.txt
+++ b/ui/ui-graphics/api/current.txt
@@ -502,7 +502,7 @@
   }
 
   @androidx.compose.Immutable public interface Shape {
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
   public final class SolidColor extends androidx.ui.graphics.Brush {
@@ -746,31 +746,31 @@
 
   @androidx.ui.graphics.drawscope.DrawScopeMarker public abstract class DrawScope implements androidx.ui.unit.Density {
     ctor public DrawScope();
-    method protected final void draw(androidx.ui.graphics.Canvas canvas, androidx.ui.geometry.Size size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
-    method public final void drawArc(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method protected final void draw-mEaFHtM(androidx.ui.graphics.Canvas canvas, long size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
+    method public final void drawArc-MKXvu20(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle(androidx.ui.graphics.Brush brush, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle-UNeD5NE(long color, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.geometry.Offset topLeft = Offset.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset = IntOffset.Origin, androidx.ui.unit.IntSize srcSize = IntSize(image.width, image.height), androidx.ui.unit.IntOffset dstOffset = IntOffset.Origin, androidx.ui.unit.IntSize dstSize = srcSize, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine-LIcrJ00(long color, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath(androidx.ui.graphics.Path path, androidx.ui.graphics.Brush brush, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath-u5ZPEDk(androidx.ui.graphics.Path path, long color, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, androidx.ui.graphics.Brush brush, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints-op7krm4(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, long color, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final androidx.ui.geometry.Offset getCenter();
     method public abstract androidx.ui.core.LayoutDirection getLayoutDirection();
-    method public final androidx.ui.geometry.Size getSize();
+    method public final long getSize();
     property public final androidx.ui.geometry.Offset center;
     property public abstract androidx.ui.core.LayoutDirection layoutDirection;
-    property public final androidx.ui.geometry.Size size;
+    property public final long size;
     field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
   }
 
@@ -802,14 +802,14 @@
     method public void clipPath(androidx.ui.graphics.Path path, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public void clipRect(float left = 0.0f, float top = 0.0f, float right = size.width, float bottom = size.height, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public default androidx.ui.geometry.Offset getCenter();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public void inset(float left, float top, float right, float bottom);
     method public void rotate(float degrees, float pivotX = center.x, float pivotY = center.y);
     method public void scale(float scaleX, float scaleY = scaleX, float pivotX = center.x, float pivotY = center.y);
     method public void transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
     method public void translate(float left = 0.0f, float top = 0.0f);
     property public default androidx.ui.geometry.Offset center;
-    property public abstract androidx.ui.geometry.Size size;
+    property public abstract long size;
   }
 
   public final class DrawTransformKt {
@@ -855,17 +855,17 @@
     method public long component1();
     method public androidx.ui.graphics.painter.ColorPainter copy-QEYXlZo(long color);
     method public long getColor();
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class ImagePainter extends androidx.ui.graphics.painter.Painter {
     ctor public ImagePainter(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
     method public androidx.ui.graphics.painter.ImagePainter copy(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public abstract class Painter {
@@ -873,10 +873,10 @@
     method protected boolean applyAlpha(float alpha);
     method protected boolean applyColorFilter(androidx.ui.graphics.ColorFilter? colorFilter);
     method protected boolean applyLayoutDirection(androidx.ui.core.LayoutDirection layoutDirection);
-    method public final void draw(androidx.ui.graphics.drawscope.DrawScope, androidx.ui.geometry.Size size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
-    method public abstract androidx.ui.geometry.Size getIntrinsicSize();
+    method public final void draw-fjVI2_8(androidx.ui.graphics.drawscope.DrawScope, long size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
+    method public abstract long getIntrinsicSize();
     method protected abstract void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public abstract androidx.ui.geometry.Size intrinsicSize;
+    property public abstract long intrinsicSize;
   }
 
 }
diff --git a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev15.txt
index e5f2907..ba44771 100644
--- a/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_0.1.0-dev15.txt
@@ -502,7 +502,7 @@
   }
 
   @androidx.compose.Immutable public interface Shape {
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
   public final class SolidColor extends androidx.ui.graphics.Brush {
@@ -746,31 +746,31 @@
 
   @androidx.ui.graphics.drawscope.DrawScopeMarker public abstract class DrawScope implements androidx.ui.unit.Density {
     ctor public DrawScope();
-    method protected final void draw(androidx.ui.graphics.Canvas canvas, androidx.ui.geometry.Size size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
-    method public final void drawArc(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method protected final void draw-mEaFHtM(androidx.ui.graphics.Canvas canvas, long size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
+    method public final void drawArc-MKXvu20(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle(androidx.ui.graphics.Brush brush, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle-UNeD5NE(long color, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.geometry.Offset topLeft = Offset.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset = IntOffset.Origin, androidx.ui.unit.IntSize srcSize = IntSize(image.width, image.height), androidx.ui.unit.IntOffset dstOffset = IntOffset.Origin, androidx.ui.unit.IntSize dstSize = srcSize, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine-LIcrJ00(long color, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath(androidx.ui.graphics.Path path, androidx.ui.graphics.Brush brush, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath-u5ZPEDk(androidx.ui.graphics.Path path, long color, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, androidx.ui.graphics.Brush brush, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints-op7krm4(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, long color, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final androidx.ui.geometry.Offset getCenter();
     method public abstract androidx.ui.core.LayoutDirection getLayoutDirection();
-    method public final androidx.ui.geometry.Size getSize();
+    method public final long getSize();
     property public final androidx.ui.geometry.Offset center;
     property public abstract androidx.ui.core.LayoutDirection layoutDirection;
-    property public final androidx.ui.geometry.Size size;
+    property public final long size;
     field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
   }
 
@@ -802,14 +802,14 @@
     method public void clipPath(androidx.ui.graphics.Path path, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public void clipRect(float left = 0.0f, float top = 0.0f, float right = size.width, float bottom = size.height, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public default androidx.ui.geometry.Offset getCenter();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public void inset(float left, float top, float right, float bottom);
     method public void rotate(float degrees, float pivotX = center.x, float pivotY = center.y);
     method public void scale(float scaleX, float scaleY = scaleX, float pivotX = center.x, float pivotY = center.y);
     method public void transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
     method public void translate(float left = 0.0f, float top = 0.0f);
     property public default androidx.ui.geometry.Offset center;
-    property public abstract androidx.ui.geometry.Size size;
+    property public abstract long size;
   }
 
   public final class DrawTransformKt {
@@ -855,17 +855,17 @@
     method public long component1();
     method public androidx.ui.graphics.painter.ColorPainter copy-QEYXlZo(long color);
     method public long getColor();
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class ImagePainter extends androidx.ui.graphics.painter.Painter {
     ctor public ImagePainter(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
     method public androidx.ui.graphics.painter.ImagePainter copy(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public abstract class Painter {
@@ -873,10 +873,10 @@
     method protected boolean applyAlpha(float alpha);
     method protected boolean applyColorFilter(androidx.ui.graphics.ColorFilter? colorFilter);
     method protected boolean applyLayoutDirection(androidx.ui.core.LayoutDirection layoutDirection);
-    method public final void draw(androidx.ui.graphics.drawscope.DrawScope, androidx.ui.geometry.Size size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
-    method public abstract androidx.ui.geometry.Size getIntrinsicSize();
+    method public final void draw-fjVI2_8(androidx.ui.graphics.drawscope.DrawScope, long size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
+    method public abstract long getIntrinsicSize();
     method protected abstract void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public abstract androidx.ui.geometry.Size intrinsicSize;
+    property public abstract long intrinsicSize;
   }
 
 }
diff --git a/ui/ui-graphics/api/public_plus_experimental_current.txt b/ui/ui-graphics/api/public_plus_experimental_current.txt
index e5f2907..ba44771 100644
--- a/ui/ui-graphics/api/public_plus_experimental_current.txt
+++ b/ui/ui-graphics/api/public_plus_experimental_current.txt
@@ -502,7 +502,7 @@
   }
 
   @androidx.compose.Immutable public interface Shape {
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
   public final class SolidColor extends androidx.ui.graphics.Brush {
@@ -746,31 +746,31 @@
 
   @androidx.ui.graphics.drawscope.DrawScopeMarker public abstract class DrawScope implements androidx.ui.unit.Density {
     ctor public DrawScope();
-    method protected final void draw(androidx.ui.graphics.Canvas canvas, androidx.ui.geometry.Size size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
-    method public final void drawArc(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method protected final void draw-mEaFHtM(androidx.ui.graphics.Canvas canvas, long size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
+    method public final void drawArc-MKXvu20(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle(androidx.ui.graphics.Brush brush, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle-UNeD5NE(long color, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.geometry.Offset topLeft = Offset.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset = IntOffset.Origin, androidx.ui.unit.IntSize srcSize = IntSize(image.width, image.height), androidx.ui.unit.IntOffset dstOffset = IntOffset.Origin, androidx.ui.unit.IntSize dstSize = srcSize, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine-LIcrJ00(long color, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath(androidx.ui.graphics.Path path, androidx.ui.graphics.Brush brush, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath-u5ZPEDk(androidx.ui.graphics.Path path, long color, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, androidx.ui.graphics.Brush brush, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints-op7krm4(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, long color, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final androidx.ui.geometry.Offset getCenter();
     method public abstract androidx.ui.core.LayoutDirection getLayoutDirection();
-    method public final androidx.ui.geometry.Size getSize();
+    method public final long getSize();
     property public final androidx.ui.geometry.Offset center;
     property public abstract androidx.ui.core.LayoutDirection layoutDirection;
-    property public final androidx.ui.geometry.Size size;
+    property public final long size;
     field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
   }
 
@@ -802,14 +802,14 @@
     method public void clipPath(androidx.ui.graphics.Path path, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public void clipRect(float left = 0.0f, float top = 0.0f, float right = size.width, float bottom = size.height, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public default androidx.ui.geometry.Offset getCenter();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public void inset(float left, float top, float right, float bottom);
     method public void rotate(float degrees, float pivotX = center.x, float pivotY = center.y);
     method public void scale(float scaleX, float scaleY = scaleX, float pivotX = center.x, float pivotY = center.y);
     method public void transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
     method public void translate(float left = 0.0f, float top = 0.0f);
     property public default androidx.ui.geometry.Offset center;
-    property public abstract androidx.ui.geometry.Size size;
+    property public abstract long size;
   }
 
   public final class DrawTransformKt {
@@ -855,17 +855,17 @@
     method public long component1();
     method public androidx.ui.graphics.painter.ColorPainter copy-QEYXlZo(long color);
     method public long getColor();
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class ImagePainter extends androidx.ui.graphics.painter.Painter {
     ctor public ImagePainter(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
     method public androidx.ui.graphics.painter.ImagePainter copy(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public abstract class Painter {
@@ -873,10 +873,10 @@
     method protected boolean applyAlpha(float alpha);
     method protected boolean applyColorFilter(androidx.ui.graphics.ColorFilter? colorFilter);
     method protected boolean applyLayoutDirection(androidx.ui.core.LayoutDirection layoutDirection);
-    method public final void draw(androidx.ui.graphics.drawscope.DrawScope, androidx.ui.geometry.Size size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
-    method public abstract androidx.ui.geometry.Size getIntrinsicSize();
+    method public final void draw-fjVI2_8(androidx.ui.graphics.drawscope.DrawScope, long size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
+    method public abstract long getIntrinsicSize();
     method protected abstract void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public abstract androidx.ui.geometry.Size intrinsicSize;
+    property public abstract long intrinsicSize;
   }
 
 }
diff --git a/ui/ui-graphics/api/restricted_0.1.0-dev15.txt b/ui/ui-graphics/api/restricted_0.1.0-dev15.txt
index 143c87c..342a4800 100644
--- a/ui/ui-graphics/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-graphics/api/restricted_0.1.0-dev15.txt
@@ -535,7 +535,7 @@
   }
 
   @androidx.compose.Immutable public interface Shape {
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
   public final class SolidColor extends androidx.ui.graphics.Brush {
@@ -779,32 +779,32 @@
 
   @androidx.ui.graphics.drawscope.DrawScopeMarker public abstract class DrawScope implements androidx.ui.unit.Density {
     ctor public DrawScope();
-    method protected final void draw(androidx.ui.graphics.Canvas canvas, androidx.ui.geometry.Size size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
-    method public final void drawArc(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method protected final void draw-mEaFHtM(androidx.ui.graphics.Canvas canvas, long size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
+    method public final void drawArc-MKXvu20(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle(androidx.ui.graphics.Brush brush, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle-UNeD5NE(long color, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.geometry.Offset topLeft = Offset.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset = IntOffset.Origin, androidx.ui.unit.IntSize srcSize = IntSize(image.width, image.height), androidx.ui.unit.IntOffset dstOffset = IntOffset.Origin, androidx.ui.unit.IntSize dstSize = srcSize, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine-LIcrJ00(long color, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath(androidx.ui.graphics.Path path, androidx.ui.graphics.Brush brush, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath-u5ZPEDk(androidx.ui.graphics.Path path, long color, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, androidx.ui.graphics.Brush brush, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints-op7krm4(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, long color, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final androidx.ui.geometry.Offset getCenter();
     method public abstract androidx.ui.core.LayoutDirection getLayoutDirection();
-    method public final androidx.ui.geometry.Size getSize();
-    method @kotlin.PublishedApi internal final void setSize(androidx.ui.geometry.Size size);
+    method public final long getSize();
+    method @kotlin.PublishedApi internal final void setSize-b2zCL34(long size);
     property public final androidx.ui.geometry.Offset center;
     property public abstract androidx.ui.core.LayoutDirection layoutDirection;
-    property public final androidx.ui.geometry.Size size;
+    property public final long size;
     field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
     field @kotlin.PublishedApi internal androidx.ui.graphics.Canvas canvas;
     field @kotlin.PublishedApi internal final androidx.ui.graphics.drawscope.DrawTransform transform;
@@ -838,14 +838,14 @@
     method public void clipPath(androidx.ui.graphics.Path path, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public void clipRect(float left = 0.0f, float top = 0.0f, float right = size.width, float bottom = size.height, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public default androidx.ui.geometry.Offset getCenter();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public void inset(float left, float top, float right, float bottom);
     method public void rotate(float degrees, float pivotX = center.x, float pivotY = center.y);
     method public void scale(float scaleX, float scaleY = scaleX, float pivotX = center.x, float pivotY = center.y);
     method public void transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
     method public void translate(float left = 0.0f, float top = 0.0f);
     property public default androidx.ui.geometry.Offset center;
-    property public abstract androidx.ui.geometry.Size size;
+    property public abstract long size;
   }
 
   public final class DrawTransformKt {
@@ -891,17 +891,17 @@
     method public long component1();
     method public androidx.ui.graphics.painter.ColorPainter copy-QEYXlZo(long color);
     method public long getColor();
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class ImagePainter extends androidx.ui.graphics.painter.Painter {
     ctor public ImagePainter(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
     method public androidx.ui.graphics.painter.ImagePainter copy(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public abstract class Painter {
@@ -909,10 +909,10 @@
     method protected boolean applyAlpha(float alpha);
     method protected boolean applyColorFilter(androidx.ui.graphics.ColorFilter? colorFilter);
     method protected boolean applyLayoutDirection(androidx.ui.core.LayoutDirection layoutDirection);
-    method public final void draw(androidx.ui.graphics.drawscope.DrawScope, androidx.ui.geometry.Size size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
-    method public abstract androidx.ui.geometry.Size getIntrinsicSize();
+    method public final void draw-fjVI2_8(androidx.ui.graphics.drawscope.DrawScope, long size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
+    method public abstract long getIntrinsicSize();
     method protected abstract void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public abstract androidx.ui.geometry.Size intrinsicSize;
+    property public abstract long intrinsicSize;
   }
 
 }
diff --git a/ui/ui-graphics/api/restricted_current.txt b/ui/ui-graphics/api/restricted_current.txt
index 143c87c..342a4800 100644
--- a/ui/ui-graphics/api/restricted_current.txt
+++ b/ui/ui-graphics/api/restricted_current.txt
@@ -535,7 +535,7 @@
   }
 
   @androidx.compose.Immutable public interface Shape {
-    method public androidx.ui.graphics.Outline createOutline(androidx.ui.geometry.Size size, androidx.ui.unit.Density density);
+    method public androidx.ui.graphics.Outline createOutline-SwJi8iY(long size, androidx.ui.unit.Density density);
   }
 
   public final class SolidColor extends androidx.ui.graphics.Brush {
@@ -779,32 +779,32 @@
 
   @androidx.ui.graphics.drawscope.DrawScopeMarker public abstract class DrawScope implements androidx.ui.unit.Density {
     ctor public DrawScope();
-    method protected final void draw(androidx.ui.graphics.Canvas canvas, androidx.ui.geometry.Size size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
-    method public final void drawArc(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method protected final void draw-mEaFHtM(androidx.ui.graphics.Canvas canvas, long size, kotlin.jvm.functions.Function1<? super androidx.ui.graphics.drawscope.DrawScope,kotlin.Unit> block);
+    method public final void drawArc-MKXvu20(androidx.ui.graphics.Brush brush, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawArc-w9iw49s(long color, float startAngle, float sweepAngle, boolean useCenter, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle(androidx.ui.graphics.Brush brush, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawCircle-UNeD5NE(long color, float radius = size.minDimension / 2.0, androidx.ui.geometry.Offset center = this.center, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.geometry.Offset topLeft = Offset.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawImage(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset = IntOffset.Origin, androidx.ui.unit.IntSize srcSize = IntSize(image.width, image.height), androidx.ui.unit.IntOffset dstOffset = IntOffset.Origin, androidx.ui.unit.IntSize dstSize = srcSize, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawLine-LIcrJ00(long color, androidx.ui.geometry.Offset start, androidx.ui.geometry.Offset end, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = Stroke.DefaultCap, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawOval-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath(androidx.ui.graphics.Path path, androidx.ui.graphics.Brush brush, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPath-u5ZPEDk(androidx.ui.graphics.Path path, long color, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, androidx.ui.graphics.Brush brush, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final void drawPoints-op7krm4(java.util.List<androidx.ui.geometry.Offset> points, androidx.ui.graphics.PointMode pointMode, long color, float strokeWidth = 0.0f, androidx.ui.graphics.StrokeCap cap = androidx.ui.graphics.StrokeCap.butt, android.graphics.PathEffect? pathEffect = null, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
-    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, androidx.ui.geometry.Size size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-5gW23P0(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRect-m7aN-JY(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-J_jAawI(long color, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, androidx.ui.graphics.drawscope.DrawStyle style = Fill, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
+    method public final void drawRoundRect-TLscAYA(androidx.ui.graphics.Brush brush, androidx.ui.geometry.Offset topLeft = Offset.Zero, long size = this.size - topLeft, long radius = Radius.Zero, @FloatRange(from=0.0, to=1.0) float alpha = 1.0f, androidx.ui.graphics.drawscope.DrawStyle style = Fill, androidx.ui.graphics.ColorFilter? colorFilter = null, androidx.ui.graphics.BlendMode blendMode = DefaultBlendMode);
     method public final androidx.ui.geometry.Offset getCenter();
     method public abstract androidx.ui.core.LayoutDirection getLayoutDirection();
-    method public final androidx.ui.geometry.Size getSize();
-    method @kotlin.PublishedApi internal final void setSize(androidx.ui.geometry.Size size);
+    method public final long getSize();
+    method @kotlin.PublishedApi internal final void setSize-b2zCL34(long size);
     property public final androidx.ui.geometry.Offset center;
     property public abstract androidx.ui.core.LayoutDirection layoutDirection;
-    property public final androidx.ui.geometry.Size size;
+    property public final long size;
     field public static final androidx.ui.graphics.drawscope.DrawScope.Companion Companion;
     field @kotlin.PublishedApi internal androidx.ui.graphics.Canvas canvas;
     field @kotlin.PublishedApi internal final androidx.ui.graphics.drawscope.DrawTransform transform;
@@ -838,14 +838,14 @@
     method public void clipPath(androidx.ui.graphics.Path path, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public void clipRect(float left = 0.0f, float top = 0.0f, float right = size.width, float bottom = size.height, androidx.ui.graphics.ClipOp clipOp = androidx.ui.graphics.ClipOp.intersect);
     method public default androidx.ui.geometry.Offset getCenter();
-    method public androidx.ui.geometry.Size getSize();
+    method public long getSize();
     method public void inset(float left, float top, float right, float bottom);
     method public void rotate(float degrees, float pivotX = center.x, float pivotY = center.y);
     method public void scale(float scaleX, float scaleY = scaleX, float pivotX = center.x, float pivotY = center.y);
     method public void transform(androidx.ui.graphics.vectormath.Matrix4 matrix);
     method public void translate(float left = 0.0f, float top = 0.0f);
     property public default androidx.ui.geometry.Offset center;
-    property public abstract androidx.ui.geometry.Size size;
+    property public abstract long size;
   }
 
   public final class DrawTransformKt {
@@ -891,17 +891,17 @@
     method public long component1();
     method public androidx.ui.graphics.painter.ColorPainter copy-QEYXlZo(long color);
     method public long getColor();
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public final class ImagePainter extends androidx.ui.graphics.painter.Painter {
     ctor public ImagePainter(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
     method public androidx.ui.graphics.painter.ImagePainter copy(androidx.ui.graphics.ImageAsset image, androidx.ui.unit.IntOffset srcOffset, androidx.ui.unit.IntSize srcSize);
-    method public androidx.ui.geometry.Size getIntrinsicSize();
+    method public long getIntrinsicSize();
     method protected void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public androidx.ui.geometry.Size intrinsicSize;
+    property public long intrinsicSize;
   }
 
   public abstract class Painter {
@@ -909,10 +909,10 @@
     method protected boolean applyAlpha(float alpha);
     method protected boolean applyColorFilter(androidx.ui.graphics.ColorFilter? colorFilter);
     method protected boolean applyLayoutDirection(androidx.ui.core.LayoutDirection layoutDirection);
-    method public final void draw(androidx.ui.graphics.drawscope.DrawScope, androidx.ui.geometry.Size size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
-    method public abstract androidx.ui.geometry.Size getIntrinsicSize();
+    method public final void draw-fjVI2_8(androidx.ui.graphics.drawscope.DrawScope, long size, float alpha = 1.0f, androidx.ui.graphics.ColorFilter? colorFilter = null);
+    method public abstract long getIntrinsicSize();
     method protected abstract void onDraw(androidx.ui.graphics.drawscope.DrawScope);
-    property public abstract androidx.ui.geometry.Size intrinsicSize;
+    property public abstract long intrinsicSize;
   }
 
 }
diff --git a/ui/ui-graphics/build.gradle b/ui/ui-graphics/build.gradle
index b617d61..791e58f 100644
--- a/ui/ui-graphics/build.gradle
+++ b/ui/ui-graphics/build.gradle
@@ -73,10 +73,9 @@
 tasks.withType(KotlinCompile).configureEach {
     kotlinOptions {
         freeCompilerArgs += [
-            "-Xuse-experimental=kotlin.Experimental",
-            "-XXLanguage:+InlineClasses"
+            "-XXLanguage:+InlineClasses",
+            "-Xallow-jvm-ir-dependencies"
         ]
-        useIR = true
     }
 }
 
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/ui/layout/demos/RtlDemo.kt
index a89c585..0ab2542 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/ui/layout/demos/RtlDemo.kt
@@ -134,7 +134,7 @@
             e.measure(constraints.copy(minWidth = 0, minHeight = 0))
         }
         val w = p.fold(0) { sum, e -> sum + e.width }
-        val h = p.maxBy { it.height }!!.height
+        val h = p.maxByOrNull { it.height }!!.height
         layout(w, h) {
             var xPosition = 0
             for (child in p) {
diff --git a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Stack.kt b/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Stack.kt
index 078531b..9e8e654 100644
--- a/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Stack.kt
+++ b/ui/ui-layout/src/commonMain/kotlin/androidx/ui/layout/Stack.kt
@@ -57,8 +57,8 @@
         }
         val (stackWidth, stackHeight) = with(placeables.filterNotNull()) {
             Pair(
-                max(maxBy { it.width }?.width ?: 0, constraints.minWidth),
-                max(maxBy { it.height }?.height ?: 0, constraints.minHeight)
+                max(maxByOrNull { it.width }?.width ?: 0, constraints.minWidth),
+                max(maxByOrNull { it.height }?.height ?: 0, constraints.minHeight)
             )
         }
 
diff --git a/ui/ui-material/build.gradle b/ui/ui-material/build.gradle
index cf786ec..e9d4c65 100644
--- a/ui/ui-material/build.gradle
+++ b/ui/ui-material/build.gradle
@@ -90,3 +90,11 @@
     sourceSets.androidTest.assets.srcDirs +=
             project.rootDir.absolutePath + "/../../../golden/ui/ui-material"
 }
+
+tasks.withType(KotlinCompile).configureEach {
+    kotlinOptions {
+        freeCompilerArgs += [
+                "-Xallow-jvm-ir-dependencies"
+        ]
+    }
+}
diff --git a/ui/ui-material/icons/core/build.gradle b/ui/ui-material/icons/core/build.gradle
index 034ba05..4d6e31b 100644
--- a/ui/ui-material/icons/core/build.gradle
+++ b/ui/ui-material/icons/core/build.gradle
@@ -18,6 +18,7 @@
 import androidx.build.LibraryVersions
 import androidx.build.Publish
 import androidx.ui.material.icons.generator.tasks.IconGenerationTask
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
 import static androidx.build.dependencies.DependenciesKt.*
 
@@ -44,3 +45,11 @@
     inceptionYear = "2020"
     description = "AndroidX Core Material Icons"
 }
+
+tasks.withType(KotlinCompile).configureEach {
+    kotlinOptions {
+        freeCompilerArgs += [
+                "-Xallow-jvm-ir-dependencies"
+        ]
+    }
+}
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/FilledTextField.kt b/ui/ui-material/src/main/java/androidx/ui/material/FilledTextField.kt
index 02713e9..42facff 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/FilledTextField.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/FilledTextField.kt
@@ -494,7 +494,7 @@
                     leadingPlaceable,
                     trailingPlaceable,
                     textFieldPlaceable
-                ).maxBy { heightOrZero(it) }
+                ).maxByOrNull { heightOrZero(it) }
             ),
             incomingConstraints.minHeight
         )
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 2c65c21..3c8ded4 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
@@ -483,7 +483,7 @@
             textFieldPlaceable,
             labelPlaceable,
             placeholderPlaceable
-        ).maxBy { widthOrZero(it) }
+        ).maxByOrNull { widthOrZero(it) }
     )
     val wrappedWidth =
         widthOrZero(leadingPlaceable) + middleSection + widthOrZero(
@@ -522,7 +522,7 @@
             heightOrZero(leadingPlaceable),
             heightOrZero(trailingPlaceable),
             middleSectionHeight.roundToInt()
-        ).max() ?: 0,
+        ).maxOrNull() ?: 0,
         constraints.minHeight
     )
 }
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 998e05e..cdd2be3 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
@@ -294,7 +294,7 @@
     } else {
         val adjustTarget: (Float) -> TargetAnimation? = { _ ->
             val now = value.holder.value
-            val point = anchors.minBy { abs(it - now) }
+            val point = anchors.minByOrNull { abs(it - now) }
             val adjusted = point ?: now
             TargetAnimation(adjusted, SliderToTickAnimation)
         }
@@ -362,7 +362,7 @@
         val anchorsValue = position.tickFractions.map {
             lerp(position.startValue, position.endValue, it)
         }
-        val point = anchorsValue.minBy { abs(it - newValue) }
+        val point = anchorsValue.minByOrNull { abs(it - newValue) }
         newValue = point ?: newValue
     }
     // This is to keep it consistent with AbsSeekbar.java: return false if no
diff --git a/ui/ui-material/src/main/java/androidx/ui/material/internal/StateDraggable.kt b/ui/ui-material/src/main/java/androidx/ui/material/internal/StateDraggable.kt
index 8f6f731..d786db2 100644
--- a/ui/ui-material/src/main/java/androidx/ui/material/internal/StateDraggable.kt
+++ b/ui/ui-material/src/main/java/androidx/ui/material/internal/StateDraggable.kt
@@ -101,8 +101,8 @@
         },
         adjustTarget = { target ->
             // Find the two anchors the target lies between.
-            val a = anchors.filter { it <= target }.max()
-            val b = anchors.filter { it >= target }.min()
+            val a = anchors.filter { it <= target }.maxOrNull()
+            val b = anchors.filter { it >= target }.minOrNull()
             // Compute which anchor to fling to.
             val adjusted: Float =
                 if (a == null && b == null) {
diff --git a/ui/ui-test/src/androidTest/java/androidx/ui/test/util/Truth.kt b/ui/ui-test/src/androidTest/java/androidx/ui/test/util/Truth.kt
index 1cc2dea..88cbdb2 100644
--- a/ui/ui-test/src/androidTest/java/androidx/ui/test/util/Truth.kt
+++ b/ui/ui-test/src/androidTest/java/androidx/ui/test/util/Truth.kt
@@ -60,7 +60,7 @@
     if (size <= 1) {
         return
     }
-    assertThat(min()!!).isWithin(2 * tolerance).of(max()!!)
+    assertThat(minOrNull()!!).isWithin(2 * tolerance).of(maxOrNull()!!)
 }
 
 /**
diff --git a/ui/ui-test/src/main/java/androidx/ui/test/ErrorMessages.kt b/ui/ui-test/src/main/java/androidx/ui/test/ErrorMessages.kt
index 2034873..04cd579 100644
--- a/ui/ui-test/src/main/java/androidx/ui/test/ErrorMessages.kt
+++ b/ui/ui-test/src/main/java/androidx/ui/test/ErrorMessages.kt
@@ -65,15 +65,15 @@
         sb.append(".")
     }
 
-    sb.appendln()
+    sb.appendLine()
 
     if (foundNodes.isNotEmpty()) {
         if (foundNodes.size == 1) {
-            sb.appendln("Node found:")
+            sb.appendLine("Node found:")
         } else {
-            sb.appendln("Nodes found:")
+            sb.appendLine("Nodes found:")
         }
-        sb.appendln(foundNodes.printToString())
+        sb.appendLine(foundNodes.printToString())
     }
 
     return sb.toString()
@@ -100,10 +100,10 @@
     sb.append(errorMessage)
     sb.append("\n")
 
-    sb.appendln("The node is no longer in the tree, last known semantics:")
-    sb.appendln(lastSeenSemantics)
+    sb.appendLine("The node is no longer in the tree, last known semantics:")
+    sb.appendLine(lastSeenSemantics)
     sb.append("Original selector: ")
-    sb.appendln(selector.description)
+    sb.appendLine(selector.description)
 
     return sb.toString()
 }
@@ -115,14 +115,14 @@
 ): String {
     val sb = StringBuilder()
 
-    sb.appendln("Failed to assertAny(${assertionMatcher.description})")
+    sb.appendLine("Failed to assertAny(${assertionMatcher.description})")
 
-    sb.appendln("None of the following nodes match:")
-    sb.appendln(nodes.printToString())
+    sb.appendLine("None of the following nodes match:")
+    sb.appendLine(nodes.printToString())
 
     sb.append("Selector used: '")
     sb.append(selector.description)
-    sb.appendln("'")
+    sb.appendLine("'")
 
     return sb.toString()
 }
@@ -134,16 +134,16 @@
 ): String {
     val sb = StringBuilder()
 
-    sb.appendln("Failed to assertAll(${assertionMatcher.description})")
+    sb.appendLine("Failed to assertAll(${assertionMatcher.description})")
 
     sb.append("Found '${nodesNotMatching.size}' ")
     sb.append(if (nodesNotMatching.size == 1) "node" else "nodes")
-    sb.appendln(" not matching:")
-    sb.appendln(nodesNotMatching.printToString())
+    sb.appendLine(" not matching:")
+    sb.appendLine(nodesNotMatching.printToString())
 
     sb.append("Selector used: '")
     sb.append(selector.description)
-    sb.appendln("'")
+    sb.appendLine("'")
 
     return sb.toString()
 }
@@ -154,12 +154,12 @@
 ): String {
     val sb = StringBuilder()
 
-    sb.appendln(errorMessage)
+    sb.appendLine(errorMessage)
 
     sb.append("Assert needs to receive at least 1 node but 0 nodes were found for selector: ")
     sb.append("'")
     sb.append(selector.description)
-    sb.appendln("'")
+    sb.appendLine("'")
 
     return sb.toString()
 }
@@ -171,14 +171,14 @@
 ): String {
     val sb = StringBuilder()
 
-    sb.appendln(errorMessage)
+    sb.appendLine(errorMessage)
 
-    sb.appendln("Semantics of the node:")
-    sb.appendln(node.printToString())
+    sb.appendLine("Semantics of the node:")
+    sb.appendLine(node.printToString())
 
     sb.append("Selector used: (")
     sb.append(selector.description)
-    sb.appendln(")")
+    sb.appendLine(")")
 
     return sb.toString()
 }
@@ -192,16 +192,16 @@
 
     sb.append("Can't retrieve node at index '$index' of '")
     sb.append(selector.description)
-    sb.appendln("'")
+    sb.appendLine("'")
 
     if (nodes.isEmpty()) {
-        sb.appendln("There are no existing nodes for that selector.")
+        sb.appendLine("There are no existing nodes for that selector.")
     } else if (nodes.size == 1) {
-        sb.appendln("There is 1 node only:")
-        sb.appendln(nodes.printToString())
+        sb.appendLine("There is 1 node only:")
+        sb.appendLine(nodes.printToString())
     } else {
-        sb.appendln("There are '${nodes.size}' nodes only:")
-        sb.appendln(nodes.printToString())
+        sb.appendLine("There are '${nodes.size}' nodes only:")
+        sb.appendLine(nodes.printToString())
     }
 
     return sb.toString()
diff --git a/ui/ui-test/src/main/java/androidx/ui/test/Output.kt b/ui/ui-test/src/main/java/androidx/ui/test/Output.kt
index dbb4cc5..c0b05a1 100644
--- a/ui/ui-test/src/main/java/androidx/ui/test/Output.kt
+++ b/ui/ui-test/src/main/java/androidx/ui/test/Output.kt
@@ -116,7 +116,7 @@
         }
         sb.append(it.printToString(maxDepth))
         if (i < size) {
-            sb.appendln()
+            sb.appendLine()
         }
         ++i
     }
@@ -170,7 +170,7 @@
         val childrenCount = children.size
         val siblingsCount = (parent?.children?.size ?: 1) - 1
         if (childrenCount > 0 || (siblingsCount > 0 && nestingLevel == 0)) {
-            sb.appendln()
+            sb.appendLine()
             sb.append(newIndent)
             sb.append("Has ")
             if (childrenCount > 1) {
@@ -196,7 +196,7 @@
     val children = this.children.toList()
     children.forEachIndexed { index, child ->
         val hasSibling = index < children.size - 1
-        sb.appendln()
+        sb.appendLine()
         child.printToStringInner(sb, maxDepth, childrenLevel, newIndent, hasSibling)
     }
 }
@@ -211,7 +211,7 @@
             continue
         }
 
-        appendln()
+        appendLine()
         append(indent)
         append(key.name)
         append(" = '")
@@ -232,7 +232,7 @@
     }
 
     if (config.isMergingSemanticsOfDescendants) {
-        appendln()
+        appendLine()
         append(indent)
         append("MergeDescendants = 'true'")
     }
diff --git a/ui/ui-text-android/src/main/java/androidx/ui/text/platform/LayoutIntrinsics.kt b/ui/ui-text-android/src/main/java/androidx/ui/text/platform/LayoutIntrinsics.kt
index b00884e..ec8951b 100644
--- a/ui/ui-text-android/src/main/java/androidx/ui/text/platform/LayoutIntrinsics.kt
+++ b/ui/ui-text-android/src/main/java/androidx/ui/text/platform/LayoutIntrinsics.kt
@@ -100,5 +100,5 @@
 
     return longestWordCandidates.map { pair ->
         Layout.getDesiredWidth(text, pair.first, pair.second, paint)
-    }.max() ?: 0f
+    }.maxOrNull() ?: 0f
 }
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraphIntrinsics.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraphIntrinsics.kt
index 19fec3f..49ea7ef 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraphIntrinsics.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/MultiParagraphIntrinsics.kt
@@ -46,13 +46,13 @@
 ) : ParagraphIntrinsics {
 
     override val minIntrinsicWidth: Float by lazy {
-        infoList.maxBy {
+        infoList.maxByOrNull {
             it.intrinsics.minIntrinsicWidth
         }?.intrinsics?.minIntrinsicWidth ?: 0f
     }
 
     override val maxIntrinsicWidth: Float by lazy {
-        infoList.maxBy {
+        infoList.maxByOrNull {
             it.intrinsics.maxIntrinsicWidth
         }?.intrinsics?.maxIntrinsicWidth ?: 0f
     }
diff --git a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/font/FontMatcher.kt b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/font/FontMatcher.kt
index 7cb3d71..452bda3 100644
--- a/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/font/FontMatcher.kt
+++ b/ui/ui-text-core/src/commonMain/kotlin/androidx/ui/text/font/FontMatcher.kt
@@ -58,14 +58,14 @@
             // If the desired weight is less than 400
             // - weights less than or equal to the desired weight are checked in descending order
             // - followed by weights above the desired weight in ascending order
-            fonts.filter { it.weight <= fontWeight }.maxBy { it.weight }
-                ?: fonts.filter { it.weight > fontWeight }.minBy { it.weight }
+            fonts.filter { it.weight <= fontWeight }.maxByOrNull { it.weight }
+                ?: fonts.filter { it.weight > fontWeight }.minByOrNull { it.weight }
         } else if (fontWeight > FontWeight.W500) {
             // If the desired weight is greater than 500
             // - weights greater than or equal to the desired weight are checked in ascending order
             // - followed by weights below the desired weight in descending order
-            fonts.filter { it.weight >= fontWeight }.minBy { it.weight }
-                ?: fonts.filter { it.weight < fontWeight }.maxBy { it.weight }
+            fonts.filter { it.weight >= fontWeight }.minByOrNull { it.weight }
+                ?: fonts.filter { it.weight < fontWeight }.maxByOrNull { it.weight }
         } else {
             // If the desired weight is inclusively between 400 and 500
             // - weights greater than or equal to the target weight are checked in ascending order
@@ -73,9 +73,9 @@
             // - followed by weights less than the target weight in descending order,
             // - followed by weights greater than 500
             fonts.filter { it.weight >= fontWeight && it.weight <= FontWeight.W500 }
-                .minBy { it.weight }
-                ?: fonts.filter { it.weight < fontWeight }.maxBy { it.weight }
-                ?: fonts.filter { it.weight > FontWeight.W500 }.minBy { it.weight }
+                .minByOrNull { it.weight }
+                ?: fonts.filter { it.weight < fontWeight }.maxByOrNull { it.weight }
+                ?: fonts.filter { it.weight > FontWeight.W500 }.minByOrNull { it.weight }
         }
 
         return result ?: throw IllegalStateException("Cannot match any font")
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 d37011c..0cb0984 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
@@ -291,7 +291,7 @@
      * Prefer the font closest to [FontWeight.Normal] and [FontStyle.Normal]
      */
     private fun findBestResourceFont(value: FontListFontFamily): ResourceFont? =
-        value.fonts.asSequence().filterIsInstance<ResourceFont>().minBy {
+        value.fonts.asSequence().filterIsInstance<ResourceFont>().minByOrNull {
             abs(it.weight.weight - FontWeight.Normal.weight) + it.style.ordinal
         }
 
diff --git a/ui/ui-tooling/src/main/java/androidx/ui/tooling/preview/animation/PreviewAnimationClock.kt b/ui/ui-tooling/src/main/java/androidx/ui/tooling/preview/animation/PreviewAnimationClock.kt
index 8d40aee..4186cfc 100644
--- a/ui/ui-tooling/src/main/java/androidx/ui/tooling/preview/animation/PreviewAnimationClock.kt
+++ b/ui/ui-tooling/src/main/java/androidx/ui/tooling/preview/animation/PreviewAnimationClock.kt
@@ -170,7 +170,8 @@
      */
     fun getMaxDuration(): Long {
         // TODO(b/160126628): support other animation types, e.g. AnimatedValue
-        val maxTransitionAnimation = seekableAnimations.maxBy { it.value.duration }?.value?.duration
+        val maxTransitionAnimation = seekableAnimations
+            .maxByOrNull { it.value.duration }?.value?.duration
         return maxTransitionAnimation ?: -1
     }
 
diff --git a/ui/ui-unit/api/0.1.0-dev15.txt b/ui/ui-unit/api/0.1.0-dev15.txt
index 7fe4172..366bed1c 100644
--- a/ui/ui-unit/api/0.1.0-dev15.txt
+++ b/ui/ui-unit/api/0.1.0-dev15.txt
@@ -333,7 +333,7 @@
     method @androidx.compose.Stable public static androidx.ui.unit.IntSize IntSize(int width, int height);
     method public static androidx.ui.unit.IntOffset getCenter(androidx.ui.unit.IntSize);
     method @androidx.compose.Stable public static operator androidx.ui.unit.IntSize times(int, androidx.ui.unit.IntSize size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.IntSize);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.IntSize);
   }
 
   @androidx.compose.Immutable public final inline class Position {
@@ -398,15 +398,15 @@
   }
 
   public final class PxKt {
-    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds(androidx.ui.geometry.Offset topLeft, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds-oHQNTA4(androidx.ui.geometry.Offset topLeft, long size);
     method @androidx.compose.Stable public static inline androidx.ui.geometry.Offset center(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-b2zCL34(long);
     method public static inline float getHeight(androidx.ui.unit.PxBounds);
     method public static inline float getWidth(androidx.ui.unit.PxBounds);
     method @androidx.compose.Stable public static inline androidx.ui.unit.IntOffset round(androidx.ui.geometry.Offset);
-    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds-b2zCL34(long);
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.unit.PxBounds);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.PxBounds);
   }
 
   @androidx.compose.Immutable public final inline class PxSquared implements java.lang.Comparable<androidx.ui.unit.PxSquared> {
diff --git a/ui/ui-unit/api/current.txt b/ui/ui-unit/api/current.txt
index 7fe4172..366bed1c 100644
--- a/ui/ui-unit/api/current.txt
+++ b/ui/ui-unit/api/current.txt
@@ -333,7 +333,7 @@
     method @androidx.compose.Stable public static androidx.ui.unit.IntSize IntSize(int width, int height);
     method public static androidx.ui.unit.IntOffset getCenter(androidx.ui.unit.IntSize);
     method @androidx.compose.Stable public static operator androidx.ui.unit.IntSize times(int, androidx.ui.unit.IntSize size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.IntSize);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.IntSize);
   }
 
   @androidx.compose.Immutable public final inline class Position {
@@ -398,15 +398,15 @@
   }
 
   public final class PxKt {
-    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds(androidx.ui.geometry.Offset topLeft, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds-oHQNTA4(androidx.ui.geometry.Offset topLeft, long size);
     method @androidx.compose.Stable public static inline androidx.ui.geometry.Offset center(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-b2zCL34(long);
     method public static inline float getHeight(androidx.ui.unit.PxBounds);
     method public static inline float getWidth(androidx.ui.unit.PxBounds);
     method @androidx.compose.Stable public static inline androidx.ui.unit.IntOffset round(androidx.ui.geometry.Offset);
-    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds-b2zCL34(long);
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.unit.PxBounds);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.PxBounds);
   }
 
   @androidx.compose.Immutable public final inline class PxSquared implements java.lang.Comparable<androidx.ui.unit.PxSquared> {
diff --git a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev15.txt b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev15.txt
index 7fe4172..366bed1c 100644
--- a/ui/ui-unit/api/public_plus_experimental_0.1.0-dev15.txt
+++ b/ui/ui-unit/api/public_plus_experimental_0.1.0-dev15.txt
@@ -333,7 +333,7 @@
     method @androidx.compose.Stable public static androidx.ui.unit.IntSize IntSize(int width, int height);
     method public static androidx.ui.unit.IntOffset getCenter(androidx.ui.unit.IntSize);
     method @androidx.compose.Stable public static operator androidx.ui.unit.IntSize times(int, androidx.ui.unit.IntSize size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.IntSize);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.IntSize);
   }
 
   @androidx.compose.Immutable public final inline class Position {
@@ -398,15 +398,15 @@
   }
 
   public final class PxKt {
-    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds(androidx.ui.geometry.Offset topLeft, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds-oHQNTA4(androidx.ui.geometry.Offset topLeft, long size);
     method @androidx.compose.Stable public static inline androidx.ui.geometry.Offset center(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-b2zCL34(long);
     method public static inline float getHeight(androidx.ui.unit.PxBounds);
     method public static inline float getWidth(androidx.ui.unit.PxBounds);
     method @androidx.compose.Stable public static inline androidx.ui.unit.IntOffset round(androidx.ui.geometry.Offset);
-    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds-b2zCL34(long);
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.unit.PxBounds);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.PxBounds);
   }
 
   @androidx.compose.Immutable public final inline class PxSquared implements java.lang.Comparable<androidx.ui.unit.PxSquared> {
diff --git a/ui/ui-unit/api/public_plus_experimental_current.txt b/ui/ui-unit/api/public_plus_experimental_current.txt
index 7fe4172..366bed1c 100644
--- a/ui/ui-unit/api/public_plus_experimental_current.txt
+++ b/ui/ui-unit/api/public_plus_experimental_current.txt
@@ -333,7 +333,7 @@
     method @androidx.compose.Stable public static androidx.ui.unit.IntSize IntSize(int width, int height);
     method public static androidx.ui.unit.IntOffset getCenter(androidx.ui.unit.IntSize);
     method @androidx.compose.Stable public static operator androidx.ui.unit.IntSize times(int, androidx.ui.unit.IntSize size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.IntSize);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.IntSize);
   }
 
   @androidx.compose.Immutable public final inline class Position {
@@ -398,15 +398,15 @@
   }
 
   public final class PxKt {
-    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds(androidx.ui.geometry.Offset topLeft, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds-oHQNTA4(androidx.ui.geometry.Offset topLeft, long size);
     method @androidx.compose.Stable public static inline androidx.ui.geometry.Offset center(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-b2zCL34(long);
     method public static inline float getHeight(androidx.ui.unit.PxBounds);
     method public static inline float getWidth(androidx.ui.unit.PxBounds);
     method @androidx.compose.Stable public static inline androidx.ui.unit.IntOffset round(androidx.ui.geometry.Offset);
-    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds-b2zCL34(long);
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.unit.PxBounds);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.PxBounds);
   }
 
   @androidx.compose.Immutable public final inline class PxSquared implements java.lang.Comparable<androidx.ui.unit.PxSquared> {
diff --git a/ui/ui-unit/api/restricted_0.1.0-dev15.txt b/ui/ui-unit/api/restricted_0.1.0-dev15.txt
index a9c734a..24d9981 100644
--- a/ui/ui-unit/api/restricted_0.1.0-dev15.txt
+++ b/ui/ui-unit/api/restricted_0.1.0-dev15.txt
@@ -333,7 +333,7 @@
     method @androidx.compose.Stable public static androidx.ui.unit.IntSize IntSize(int width, int height);
     method public static androidx.ui.unit.IntOffset getCenter(androidx.ui.unit.IntSize);
     method @androidx.compose.Stable public static operator androidx.ui.unit.IntSize times(int, androidx.ui.unit.IntSize size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.IntSize);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.IntSize);
   }
 
   @androidx.compose.Immutable public final inline class Position {
@@ -398,15 +398,15 @@
   }
 
   public final class PxKt {
-    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds(androidx.ui.geometry.Offset topLeft, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds-oHQNTA4(androidx.ui.geometry.Offset topLeft, long size);
     method @androidx.compose.Stable public static inline androidx.ui.geometry.Offset center(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-b2zCL34(long);
     method public static inline float getHeight(androidx.ui.unit.PxBounds);
     method public static inline float getWidth(androidx.ui.unit.PxBounds);
     method @androidx.compose.Stable public static inline androidx.ui.unit.IntOffset round(androidx.ui.geometry.Offset);
-    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds-b2zCL34(long);
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.unit.PxBounds);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.PxBounds);
   }
 
   @androidx.compose.Immutable public final inline class PxSquared implements java.lang.Comparable<androidx.ui.unit.PxSquared> {
diff --git a/ui/ui-unit/api/restricted_current.txt b/ui/ui-unit/api/restricted_current.txt
index a9c734a..24d9981 100644
--- a/ui/ui-unit/api/restricted_current.txt
+++ b/ui/ui-unit/api/restricted_current.txt
@@ -333,7 +333,7 @@
     method @androidx.compose.Stable public static androidx.ui.unit.IntSize IntSize(int width, int height);
     method public static androidx.ui.unit.IntOffset getCenter(androidx.ui.unit.IntSize);
     method @androidx.compose.Stable public static operator androidx.ui.unit.IntSize times(int, androidx.ui.unit.IntSize size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.IntSize);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.IntSize);
   }
 
   @androidx.compose.Immutable public final inline class Position {
@@ -398,15 +398,15 @@
   }
 
   public final class PxKt {
-    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds(androidx.ui.geometry.Offset topLeft, androidx.ui.geometry.Size size);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static inline androidx.ui.unit.PxBounds PxBounds-oHQNTA4(androidx.ui.geometry.Offset topLeft, long size);
     method @androidx.compose.Stable public static inline androidx.ui.geometry.Offset center(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static androidx.ui.geometry.Offset center-b2zCL34(long);
     method public static inline float getHeight(androidx.ui.unit.PxBounds);
     method public static inline float getWidth(androidx.ui.unit.PxBounds);
     method @androidx.compose.Stable public static inline androidx.ui.unit.IntOffset round(androidx.ui.geometry.Offset);
-    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds(androidx.ui.geometry.Size);
+    method @androidx.compose.Stable public static androidx.ui.unit.PxBounds toBounds-b2zCL34(long);
     method @androidx.compose.Stable public static androidx.ui.geometry.Rect toRect(androidx.ui.unit.PxBounds);
-    method @androidx.compose.Stable public static androidx.ui.geometry.Size toSize(androidx.ui.unit.PxBounds);
+    method @androidx.compose.Stable public static long toSize(androidx.ui.unit.PxBounds);
   }
 
   @androidx.compose.Immutable public final inline class PxSquared implements java.lang.Comparable<androidx.ui.unit.PxSquared> {