fixup! Use FlowParameter for buildFinish event
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt
index 9824982..998ca8d 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/StatisticsBuildFlowManager.kt
@@ -11,8 +11,6 @@
 import org.gradle.api.services.ServiceReference
 import org.gradle.api.tasks.Input
 import org.jetbrains.kotlin.gradle.plugin.statistics.BuildFlowService
-import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
-import org.jetbrains.kotlin.gradle.plugin.statistics.MetricContainer
 import org.jetbrains.kotlin.gradle.report.BuildMetricsService
 import org.jetbrains.kotlin.gradle.report.BuildScanExtensionHolder
 import javax.inject.Inject
@@ -28,15 +26,12 @@
 
     fun subscribeForBuildResult(project: Project) {
         val buildScanExtension = project.rootProject.extensions.findByName("buildScan")
-        val buildScan = buildScanExtension?.let { BuildScanExtensionHolder(it) }
-        val configurationTimeMetrics = project.provider {
-            KotlinBuildStatsService.getInstance()?.collectedStartMetrics(project)
-        }
+        val buildScanHolder = buildScanExtension?.let { BuildScanExtensionHolder(it) }
+
         flowScope.always(
             BuildFinishFlowAction::class.java
         ) { spec ->
-            spec.parameters.buildScanExtensionHolder.set(buildScan)
-            spec.parameters.configurationTimeMetrics.set(configurationTimeMetrics)
+            spec.parameters.buildScanExtensionHolder.set(buildScanHolder)
             spec.parameters.buildFailed.set(flowProviders.buildWorkResult.map { it.failure.isPresent })
         }
     }
@@ -59,14 +54,11 @@
 
         @get:Input
         val buildScanExtensionHolder: Property<BuildScanExtensionHolder?>
-
-        @get:Input
-        val configurationTimeMetrics: Property<MetricContainer>
     }
 
     override fun execute(parameters: Parameters) {
         parameters.buildFlowServiceProperty.get().recordBuildFinished(
-            parameters.action.orNull, parameters.buildFailed.get(), parameters.configurationTimeMetrics.get()
+            parameters.action.orNull, parameters.buildFailed.get()
         )
         parameters.buildMetricService.orNull?.addCollectedTagsToBuildScan(parameters.buildScanExtensionHolder.orNull)
     }
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt
index 189d399..281a022 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/BuildFlowService.kt
@@ -27,20 +27,18 @@
 internal abstract class BuildFlowService : BuildService<BuildFlowService.Parameters>, AutoCloseable, OperationCompletionListener {
     private var buildFailed: Boolean = false
 
-
     interface Parameters : BuildServiceParameters {
         val configurationMetrics: Property<MetricContainer>
     }
+
     companion object {
         fun registerIfAbsentImpl(
             project: Project,
         ): Provider<BuildFlowService> {
-            val buildService = project.gradle.registerClassLoaderScopedBuildService(BuildFlowService::class) { buidlService ->
-                project.gradle.projectsEvaluated {
-                    buidlService.parameters.configurationMetrics.set(project.provider {
-                        KotlinBuildStatsService.getInstance()?.collectedStartMetrics(project)
-                    })
-                }
+            val buildService = project.gradle.registerClassLoaderScopedBuildService(BuildFlowService::class) { spec ->
+                spec.parameters.configurationMetrics.set(project.provider {
+                    KotlinBuildStatsService.getInstance()?.collectedStartMetrics(project)
+                })
             }
 
             KotlinBuildStatsService.applyIfInitialised {
@@ -63,12 +61,12 @@
     }
 
     override fun close() {
-        recordBuildFinished(null, buildFailed, parameters.configurationMetrics.orElse(MetricContainer()).get())
+        recordBuildFinished(null, buildFailed)
     }
 
-    internal fun recordBuildFinished(action: String?, buildFailed: Boolean, configurationTimeMetrics: MetricContainer) {
+    internal fun recordBuildFinished(action: String?, buildFailed: Boolean) {
         KotlinBuildStatsService.applyIfInitialised {
-            it.recordBuildFinish(action, buildFailed, configurationTimeMetrics)
+            it.recordBuildFinish(action, buildFailed, parameters.configurationMetrics.orElse(MetricContainer()).get())
         }
     }
 }
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt
index 9147b66..a1f94ce 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandler.kt
@@ -112,38 +112,42 @@
                     configurationTimeMetrics.put(BooleanMetrics.ENABLED_DOKKA, true)
                 }
                 for (configuration in project.configurations) {
-                    val configurationName = configuration.name
-                    val dependencies = configuration.dependencies
+                    try {
+                        val configurationName = configuration.name
+                        val dependencies = configuration.dependencies
 
-                    when (configurationName) {
-                        "KoverEngineConfig" -> {
-                            configurationTimeMetrics.put(BooleanMetrics.ENABLED_KOVER, true)
-                        }
-                        "kapt" -> {
-                            configurationTimeMetrics.put(BooleanMetrics.ENABLED_KAPT, true)
-                            for (dependency in dependencies) {
-                                when (dependency.group) {
-                                    "com.google.dagger" -> configurationTimeMetrics.put(BooleanMetrics.ENABLED_DAGGER, true)
-                                    "com.android.databinding" -> configurationTimeMetrics.put(BooleanMetrics.ENABLED_DATABINDING, true)
+                        when (configurationName) {
+                            "KoverEngineConfig" -> {
+                                configurationTimeMetrics.put(BooleanMetrics.ENABLED_KOVER, true)
+                            }
+                            "kapt" -> {
+                                configurationTimeMetrics.put(BooleanMetrics.ENABLED_KAPT, true)
+                                for (dependency in dependencies) {
+                                    when (dependency.group) {
+                                        "com.google.dagger" -> configurationTimeMetrics.put(BooleanMetrics.ENABLED_DAGGER, true)
+                                        "com.android.databinding" -> configurationTimeMetrics.put(BooleanMetrics.ENABLED_DATABINDING, true)
+                                    }
                                 }
                             }
+                            API -> {
+                                configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_API_COUNT, 1)
+                                reportLibrariesVersions(configurationTimeMetrics, dependencies)
+                            }
+                            IMPLEMENTATION -> {
+                                configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_IMPLEMENTATION_COUNT, 1)
+                                reportLibrariesVersions(configurationTimeMetrics, dependencies)
+                            }
+                            COMPILE -> {
+                                configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_COMPILE_COUNT, 1)
+                                reportLibrariesVersions(configurationTimeMetrics, dependencies)
+                            }
+                            RUNTIME -> {
+                                configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_RUNTIME_COUNT, 1)
+                                reportLibrariesVersions(configurationTimeMetrics, dependencies)
+                            }
                         }
-                        API -> {
-                            configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_API_COUNT, 1)
-                            reportLibrariesVersions(configurationTimeMetrics, dependencies)
-                        }
-                        IMPLEMENTATION -> {
-                            configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_IMPLEMENTATION_COUNT, 1)
-                            reportLibrariesVersions(configurationTimeMetrics, dependencies)
-                        }
-                        COMPILE -> {
-                            configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_COMPILE_COUNT, 1)
-                            reportLibrariesVersions(configurationTimeMetrics, dependencies)
-                        }
-                        RUNTIME -> {
-                            configurationTimeMetrics.put(NumericalMetrics.CONFIGURATION_RUNTIME_COUNT, 1)
-                            reportLibrariesVersions(configurationTimeMetrics, dependencies)
-                        }
+                    } catch (e: Throwable) {
+                        // log?
                     }
                 }
                 val taskNames = project.tasks.names