WIP: hot fixes
diff --git a/build.gradle.kts b/build.gradle.kts
index e64a125..b4319d3 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -102,7 +102,7 @@
 
 if (!project.hasProperty("versions.kotlin-native")) {
     // BEWARE! Bumping this version doesn't take an immediate effect on TeamCity: KTI-1107
-    extra["versions.kotlin-native"] = "2.0.0-dev-5387"
+    extra["versions.kotlin-native"] = "2.0.0-Beta1"
 }
 
 val irCompilerModules = arrayOf(
diff --git a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
index 9f36281..ce5f057 100644
--- a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
+++ b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
@@ -79,5 +79,5 @@
 // this class is ignored during classpath normalization when considering whether to recompile dependencies in Kotlin build
 private object KotlinVersionCurrentValue {
     @kotlin.jvm.JvmStatic
-    fun get(): KotlinVersion = KotlinVersion(2, 0, 255) // value is written here automatically during build
+    fun get(): KotlinVersion = KotlinVersion(2, 0, 0) // value is written here automatically during build
 }
diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt
index e9a1451..e93170e 100644
--- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt
+++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinTarget.kt
@@ -16,6 +16,7 @@
 import org.gradle.api.file.FileCollection
 import org.gradle.api.provider.Provider
 import org.gradle.api.publish.maven.MavenPublication
+import org.gradle.api.tasks.TaskProvider
 import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
 import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
 import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
@@ -71,7 +72,7 @@
     fun composeCopyResources(resourceDirectoryName: Provider<Path>, resourceIdentity: Provider<Path>, taskName: String)
 
     @InternalKotlinGradlePluginApi
-    fun composeResolveResources(): FileCollection
+    fun composeResolveResources(): TaskProvider<*>
 }
 
 interface KotlinTargetWithTests<E : KotlinExecution.ExecutionSource, T : KotlinTargetTestRun<E>> : KotlinTarget {
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt
index a8b7462..dd08e42 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/AbstractKotlinTarget.kt
@@ -5,6 +5,7 @@
 package org.jetbrains.kotlin.gradle.plugin.mpp
 
 import org.gradle.api.Action
+import org.gradle.api.DefaultTask
 import org.gradle.api.DomainObjectSet
 import org.gradle.api.Project
 import org.gradle.api.artifacts.ConfigurablePublishArtifact
@@ -13,6 +14,7 @@
 import org.gradle.api.provider.Provider
 import org.gradle.api.publish.maven.MavenPublication
 import org.gradle.api.tasks.Copy
+import org.gradle.api.tasks.TaskProvider
 import org.jetbrains.kotlin.gradle.DeprecatedTargetPresetApi
 import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi
 import org.jetbrains.kotlin.gradle.PRESETS_API_IS_DEPRECATED_MESSAGE
@@ -22,7 +24,9 @@
 import org.jetbrains.kotlin.gradle.plugin.*
 import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsageContext.MavenScope.COMPILE
 import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsageContext.MavenScope.RUNTIME
+import org.jetbrains.kotlin.gradle.tasks.dependsOn
 import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
+import org.jetbrains.kotlin.gradle.tasks.registerTask
 import org.jetbrains.kotlin.gradle.utils.*
 import org.jetbrains.kotlin.tooling.core.MutableExtras
 import org.jetbrains.kotlin.tooling.core.mutableExtrasOf
@@ -94,13 +98,13 @@
                 artifactNameAppendix = dashSeparatedName(targetName.toLowerCaseAsciiOnly())
             )
         )
-
-        // FIXME: Is this needed here or only in the overrides?
-        usageContexts.add(
-            createResourcesSoftwareComponentVariant(
-                mainCompilation
-            )
-        )
+//
+//        // FIXME: Is this needed here or only in the overrides?
+//        usageContexts.add(
+//            createResourcesSoftwareComponentVariant(
+//                mainCompilation
+//            )
+//        )
 
         val result = createKotlinVariant(componentName, mainCompilation, usageContexts)
 
@@ -224,7 +228,7 @@
         composeResourceDirectories.add(ComposeResources(resourceDirectoryName, resourceIdentity, taskName))
     }
 
-    override fun composeResolveResources(): FileCollection {
+    override fun composeResolveResources(): TaskProvider<*> {
         val outputDirectory = project.layout.buildDirectory.dir("resolvedResourcesFor${disambiguationClassifier}")
         val resourcesConfiguration = project.configurations.getByName(
             lowerCamelCaseName(
@@ -256,23 +260,30 @@
             }
         }
 
-        val outputCollection = project.files()
-        outputCollection.builtBy(unzipAndCopyResourcesToBuildDirectoryTask)
+        val result = project.registerTask<DefaultTask>("aggregateResources${disambiguationClassifier}") {
+            it.outputs.dir(outputDirectory)
+        }
+//        val outputCollection = project.files()
+        result.dependsOn(unzipAndCopyResourcesToBuildDirectoryTask)
 
         // Copy resources for this target
         // FIXME: Copypasta
         // FIXME: Resources and outputDirectory are Providers, but this method doesn't await for any lifecycle event. This will break if called at a wrong time
-        compilations.getByName("main").registerCopyResourcesTasks(
-            "ResolveSelfResources${disambiguationClassifier}",
-            composeResourceDirectories,
-            outputDirectory
-        ).forEach { copyTask ->
-            outputCollection.builtBy(copyTask)
+        project.launch {
+            this.await(KotlinPluginLifecycle.Stage.AfterFinaliseRefinesEdges)
+            compilations.getByName("main").registerCopyResourcesTasks(
+                "ResolveSelfResources${disambiguationClassifier}",
+                composeResourceDirectories,
+                outputDirectory
+            ).forEach { copyTask ->
+                result.dependsOn(copyTask)
+            }
         }
 
+
         // FIXME: Listing files in this directory may result in trash such as .DS_Store to suddenly appear. Figure out how to get the root of a zipTree?
-        outputCollection.from(outputDirectory.map { it.asFile.listFiles() ?: emptyArray() })
-        return outputCollection
+//        outputCollection.from(outputDirectory.map { it.asFile.listFiles() ?: emptyArray() })
+        return result
     }
 }
 
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt
index ebcac5c..f3f6e2a 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/factory/KotlinCompilationDependencyConfigurationsFactories.kt
@@ -218,7 +218,9 @@
         )
     ).apply {
         // FIXME: See usages of shouldResolveConsistentlyWith
-        extendsFrom(compileDependencyConfiguration)
+//        dependencies.addAllLater(target.project.provider { compileDependencyConfiguration.allDependencies })
+//        extendsFrom(compileDependencyConfiguration)
+        extendsFrom(implementationConfiguration)
         usesPlatformOf(target)
         isVisible = false
         isCanBeConsumed = false
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt
index b5b9738..f98a62b 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/external/ExternalKotlinTargetImpl.kt
@@ -58,7 +58,7 @@
         TODO("Not yet implemented")
     }
 
-    override fun composeResolveResources(): FileCollection {
+    override fun composeResolveResources(): TaskProvider<*> {
         TODO("Not yet implemented")
     }