Replaced using of the separate BCV plugin to BCV in KGP
diff --git a/analysis/analysis-api/build.gradle.kts b/analysis/analysis-api/build.gradle.kts
index 6fff126..af90d51 100644
--- a/analysis/analysis-api/build.gradle.kts
+++ b/analysis/analysis-api/build.gradle.kts
@@ -3,7 +3,6 @@
 plugins {
     kotlin("jvm")
     id("jps-compatible")
-    id("org.jetbrains.kotlinx.binary-compatibility-validator")
 }
 
 kotlin {
@@ -42,15 +41,26 @@
     "test" { projectDefault() }
 }
 
-apiValidation {
-    nonPublicMarkers += listOf(
-        "org.jetbrains.kotlin.analysis.api.KaImplementationDetail",
-        "org.jetbrains.kotlin.analysis.api.KaNonPublicApi",
-        "org.jetbrains.kotlin.analysis.api.KaIdeApi",
-        "org.jetbrains.kotlin.analysis.api.KaExperimentalApi",
-        "org.jetbrains.kotlin.analysis.api.KaPlatformInterface", // Platform interface is not stable yet
-        "org.jetbrains.kotlin.analysis.api.KaContextParameterApi",
-    )
+kotlin {
+    @OptIn(org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation::class)
+    abiValidation {
+        enabled = true
+
+        filters {
+            excluded.annotatedWith.addAll(
+                "org.jetbrains.kotlin.analysis.api.KaImplementationDetail",
+                "org.jetbrains.kotlin.analysis.api.KaNonPublicApi",
+                "org.jetbrains.kotlin.analysis.api.KaIdeApi",
+                "org.jetbrains.kotlin.analysis.api.KaExperimentalApi",
+                "org.jetbrains.kotlin.analysis.api.KaPlatformInterface", // Platform interface is not stable yet
+                "org.jetbrains.kotlin.analysis.api.KaContextParameterApi",
+            )
+        }
+    }
+}
+
+tasks.check {
+    dependsOn(tasks.checkLegacyAbi)
 }
 
 testsJar()
diff --git a/compiler/build-tools/kotlin-build-tools-api/build.gradle.kts b/compiler/build-tools/kotlin-build-tools-api/build.gradle.kts
index 82f8403..d11f6cb 100644
--- a/compiler/build-tools/kotlin-build-tools-api/build.gradle.kts
+++ b/compiler/build-tools/kotlin-build-tools-api/build.gradle.kts
@@ -4,7 +4,6 @@
 plugins {
     kotlin("jvm")
     id("jps-compatible")
-    id("org.jetbrains.kotlinx.binary-compatibility-validator")
 }
 
 configureKotlinCompileTasksGradleCompatibility()
@@ -25,6 +24,16 @@
     explicitApi()
 }
 
+kotlin {
+    @OptIn(org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation::class)
+    abiValidation {
+        enabled = true
+    }
+}
+tasks.check {
+    dependsOn(tasks.checkLegacyAbi)
+}
+
 publish()
 
 standardPublicJars()
diff --git a/compiler/psi/psi-api/build.gradle.kts b/compiler/psi/psi-api/build.gradle.kts
index 44a3b8e..2689222 100644
--- a/compiler/psi/psi-api/build.gradle.kts
+++ b/compiler/psi/psi-api/build.gradle.kts
@@ -1,7 +1,6 @@
 plugins {
     kotlin("jvm")
     id("jps-compatible")
-    id("org.jetbrains.kotlinx.binary-compatibility-validator")
     id("java-test-fixtures")
 }
 
@@ -31,10 +30,18 @@
     "testFixtures" { projectDefault() }
 }
 
-apiValidation {
-    nonPublicMarkers += listOf(
-        "org.jetbrains.kotlin.psi.KtImplementationDetail",
-    )
+kotlin {
+    @OptIn(org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation::class)
+    abiValidation {
+        enabled = true
+
+        filters {
+            excluded.annotatedWith.add("org.jetbrains.kotlin.psi.KtImplementationDetail")
+        }
+    }
+}
+tasks.check {
+    dependsOn(tasks.checkLegacyAbi)
 }
 
 testsJar()
diff --git a/libraries/kotlinx-metadata/jvm/build.gradle.kts b/libraries/kotlinx-metadata/jvm/build.gradle.kts
index 7145c41..18c2805 100644
--- a/libraries/kotlinx-metadata/jvm/build.gradle.kts
+++ b/libraries/kotlinx-metadata/jvm/build.gradle.kts
@@ -62,6 +62,7 @@
 }
 
 tasks.apiBuild {
+    // dependency on local jar
     inputJar.value(runtimeJar.flatMap { it.archiveFile })
 }
 
diff --git a/libraries/tools/abi-validation/abi-tools-api/build.gradle.kts b/libraries/tools/abi-validation/abi-tools-api/build.gradle.kts
index 80fd7c0..d1380ba 100644
--- a/libraries/tools/abi-validation/abi-tools-api/build.gradle.kts
+++ b/libraries/tools/abi-validation/abi-tools-api/build.gradle.kts
@@ -1,6 +1,5 @@
 plugins {
     kotlin("jvm")
-    id("org.jetbrains.kotlinx.binary-compatibility-validator")
 }
 
 kotlin {
@@ -13,6 +12,16 @@
 
 standardPublicJars()
 
+kotlin {
+    @OptIn(org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation::class)
+    abiValidation {
+        enabled = true
+    }
+}
+tasks.check {
+    dependsOn(tasks.checkLegacyAbi)
+}
+
 dependencies {
     // remove stdlib dependency from api artifact in order not to affect the dependencies of the user project
     val coreDepsVersion = libs.versions.kotlin.`for`.gradle.plugins.compilation.get()
diff --git a/libraries/tools/abi-validation/abi-tools/build.gradle.kts b/libraries/tools/abi-validation/abi-tools/build.gradle.kts
index 3c0c343..600591f 100644
--- a/libraries/tools/abi-validation/abi-tools/build.gradle.kts
+++ b/libraries/tools/abi-validation/abi-tools/build.gradle.kts
@@ -1,6 +1,5 @@
 plugins {
     kotlin("jvm")
-    id("org.jetbrains.kotlinx.binary-compatibility-validator")
 }
 
 kotlin {
@@ -29,6 +28,16 @@
     }
 }
 
+kotlin {
+    @OptIn(org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation::class)
+    abiValidation {
+        enabled = true
+    }
+}
+tasks.check {
+    dependsOn(tasks.checkLegacyAbi)
+}
+
 dependencies {
     api(project(":libraries:tools:abi-validation:abi-tools-api"))
 
diff --git a/libraries/tools/gradle/kotlin-gradle-ecosystem-plugin/build.gradle.kts b/libraries/tools/gradle/kotlin-gradle-ecosystem-plugin/build.gradle.kts
index 39e74a6..3f9d8e9 100644
--- a/libraries/tools/gradle/kotlin-gradle-ecosystem-plugin/build.gradle.kts
+++ b/libraries/tools/gradle/kotlin-gradle-ecosystem-plugin/build.gradle.kts
@@ -21,5 +21,6 @@
 }
 
 tasks.named<KotlinApiBuildTask>("apiBuild") {
+    // local jar
     inputJar.value(tasks.named<Jar>("jar").flatMap { it.archiveFile })
 }
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-annotations/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-annotations/build.gradle.kts
index 4d7fae9..2e38c718 100644
--- a/libraries/tools/kotlin-gradle-plugin-annotations/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-annotations/build.gradle.kts
@@ -22,6 +22,7 @@
 
 tasks {
     apiBuild {
+        // local jar
         inputJar.value(jar.flatMap { it.archiveFile })
     }
 }
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts
index ceb7465..2af5e05 100644
--- a/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-api/build.gradle.kts
@@ -38,6 +38,7 @@
 
 tasks {
     apiBuild {
+        // same with local jar task
         inputJar.value(jar.flatMap { it.archiveFile })
     }
 }
diff --git a/libraries/tools/kotlin-gradle-plugin-idea-proto/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-idea-proto/build.gradle.kts
index fce8e65..67f9e5b 100644
--- a/libraries/tools/kotlin-gradle-plugin-idea-proto/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-idea-proto/build.gradle.kts
@@ -61,6 +61,7 @@
 
     tasks {
         apiBuild {
+            // actually we use only `mainSourceSet.output` classes, classes from `FileCollection`
             inputJar.value(binaryValidationApiJar.flatMap { it.archiveFile })
         }
     }
diff --git a/libraries/tools/kotlin-gradle-plugin-idea/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-idea/build.gradle.kts
index 424a946..8918bbe 100644
--- a/libraries/tools/kotlin-gradle-plugin-idea/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-idea/build.gradle.kts
@@ -71,6 +71,7 @@
 
 tasks {
     apiBuild {
+        // local jar
         inputJar.value(jar.flatMap { it.archiveFile })
     }
 }
diff --git a/libraries/tools/kotlin-tooling-core/build.gradle.kts b/libraries/tools/kotlin-tooling-core/build.gradle.kts
index 2f03793..2cffa423 100644
--- a/libraries/tools/kotlin-tooling-core/build.gradle.kts
+++ b/libraries/tools/kotlin-tooling-core/build.gradle.kts
@@ -17,6 +17,7 @@
 
 tasks {
     apiBuild {
+        // use output of local JAR task
         inputJar.value(jar.flatMap { it.archiveFile })
     }
 }
\ No newline at end of file