<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.10.0" type="baseline" client="gradle" dependencies="false" name="AGP (8.10.0)" variant="all" version="8.10.0">

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method get"
        errorLine1="                    val destinationProperty = (kaptProvider?.get() as? KaptTask)?.destinationDir"
        errorLine2="                                                             ~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/AndroidPluginIntegration.kt"
            line="89"
            column="62"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method get"
        errorLine1="                    val destinationProperty = (kaptProvider?.get() as? KaptTask)?.destinationDir"
        errorLine2="                                                             ~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/AndroidPluginIntegration.kt"
            line="104"
            column="62"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method get"
        errorLine1="                                    kotlinCompileProvider.get().libraries.filter {"
        errorLine2="                                                          ~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspAATask.kt"
            line="224"
            column="59"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method get"
        errorLine1="                        cfg.konanHome.value((kotlinCompileProvider.get() as KotlinNativeCompile).konanHome)"
        errorLine2="                                                                   ~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspAATask.kt"
            line="343"
            column="68"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="    private val configurationForAll = project.configurations.create(PREFIX).apply {"
        errorLine2="                                                             ~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspConfigurations.kt"
            line="27"
            column="62"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of maybeCreate"
        errorLine1="        return project.configurations.maybeCreate(name).apply {"
        errorLine2="                                      ~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspConfigurations.kt"
            line="46"
            column="39"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use configureEach instead of whenObjectAdded"
        errorLine1="                configurationForAll.dependencies.whenObjectAdded {"
        errorLine2="                                                 ~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspConfigurations.kt"
            line="121"
            column="50"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of maybeCreate"
        errorLine1="            project.configurations.maybeCreate(&quot;${kspTaskName}ProcessorClasspath&quot;).markResolvable()"
        errorLine2="                                   ~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="296"
            column="36"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of maybeCreate"
        errorLine1="        val kspClasspathCfg = project.configurations.maybeCreate("
        errorLine2="                                                     ~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="315"
            column="54"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of maybeCreate"
        errorLine1="        val kspClasspathCfgNonEmbeddable = project.configurations.maybeCreate("
        errorLine2="                                                                  ~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="327"
            column="67"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method get"
        errorLine1="                val kotlinCompileTask = kotlinCompileProvider.get()"
        errorLine2="                                                              ~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="383"
            column="63"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method get"
        errorLine1="                            kotlinCompileProvider.get().libraries.filter {"
        errorLine2="                                                  ~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="430"
            column="51"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method get"
        errorLine1="                            val kotlinCompileTask = kotlinCompileProvider.get() as KotlinNativeCompile"
        errorLine2="                                                                          ~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="592"
            column="75"/>
    </issue>

    <issue
        id="FilePropertyDetector"
        message="`Property&lt;File>` is discouraged. Use `RegularFileProperty` or `DirectoryProperty`."
        errorLine1="    abstract val jdkHome: Property&lt;File>"
        errorLine2="                 ~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspAATask.kt"
            line="401"
            column="18"/>
    </issue>

    <issue
        id="FilePropertyDetector"
        message="`Property&lt;File>` is discouraged. Use `RegularFileProperty` or `DirectoryProperty`."
        errorLine1="    abstract val projectBaseDir: Property&lt;File>"
        errorLine2="                 ~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspAATask.kt"
            line="408"
            column="18"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="import org.jetbrains.kotlin.gradle.internal.KaptTask"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/AndroidPluginIntegration.kt"
            line="31"
            column="1"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="import org.jetbrains.kotlin.gradle.internal.Kapt3GradleSubplugin"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="45"
            column="1"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="import org.jetbrains.kotlin.gradle.internal.kapt.incremental.CLASS_STRUCTURE_ARTIFACT_TYPE"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="46"
            column="1"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="import org.jetbrains.kotlin.gradle.internal.kapt.incremental.ClasspathSnapshot"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="47"
            column="1"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="import org.jetbrains.kotlin.gradle.internal.kapt.incremental.KaptClasspathChanges"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="48"
            column="1"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="import org.jetbrains.kotlin.gradle.internal.kapt.incremental.StructureTransformAction"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="49"
            column="1"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="import org.jetbrains.kotlin.gradle.internal.kapt.incremental.StructureTransformLegacyAction"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="50"
            column="1"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="    val loadedPrevious = ClasspathSnapshot.ClasspathSnapshotFactory.loadFrom(cacheDir)"
        errorLine2="                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="774"
            column="26"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="        ClasspathSnapshot.ClasspathSnapshotFactory.getEmptySnapshot()"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="789"
            column="9"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="        ClasspathSnapshot.ClasspathSnapshotFactory.createCurrent("
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="793"
            column="9"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="    if (classpathChanges is KaptClasspathChanges.Unknown || changes is SourcesChanges.Unknown) {"
        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="801"
            column="29"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="    return if (this is KaptClasspathChanges.Known) {"
        errorLine2="                       ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="820"
            column="24"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs (field names from org.jetbrains.kotlin.gradle.internal.kapt.incremental.KaptClasspathChanges.Known)"
        errorLine1="        this.names.map { it.replace(&apos;/&apos;, &apos;.&apos;).replace(&apos;$&apos;, &apos;.&apos;) }.ifNotEmpty {"
        errorLine2="        ~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="821"
            column="9"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs"
        errorLine1="    return if (classpathChanges is KaptClasspathChanges.Known) {"
        errorLine2="                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="915"
            column="36"/>
    </issue>

    <issue
        id="InternalKgpApiUsage"
        message="Avoid using internal Kotlin Gradle Plugin APIs (field names from org.jetbrains.kotlin.gradle.internal.kapt.incremental.KaptClasspathChanges.Known)"
        errorLine1="        classpathChanges.names.map {"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/main/kotlin/com/google/devtools/ksp/gradle/KspSubplugin.kt"
            line="916"
            column="9"/>
    </issue>

</issues>
