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

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;docs&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;docsWithoutApiSince&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;kmpDocs&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;samples&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;stubs&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;docs-sources&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;multiplatform-docs-sources&quot;) { configuration ->"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;samples-sources&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;library-version-metadata&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;docs-compile-classpath&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;docs-runtime-classpath&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            project.configurations.create(&quot;dackka&quot;) {"
        errorLine2="                                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use configureEach instead of whenTaskAdded"
        errorLine1="        project.tasks.whenTaskAdded { task ->"
        errorLine2="                      ~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/docs/AndroidXDocsImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            val constraintConfiguration = project.configurations.create(&quot;groupConstraints&quot;)"
        errorLine2="                                                                 ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/AndroidXImplPlugin.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            .create(&quot;ReleaseApiDependencies&quot;) {"
        errorLine2="             ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/checkapi/ApiTasks.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="            configurations.create(CONFIGURATION_NAME) {"
        errorLine2="                           ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/BundleInsideHelper.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="        ?: configurations.create(ERROR_PRONE_CONFIGURATION).apply {"
        errorLine2="                          ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/ErrorProneConfiguration.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method get"
        errorLine1="            val compileTask = compileTaskProvider?.get() ?: return@register"
        errorLine2="                                                   ~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/ErrorProneConfiguration.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="    configurations.create(&quot;libraryVersionMetadata&quot;) { configuration ->"
        errorLine2="                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/metalava/GenerateApiLevels.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method forEach"
        errorLine1="        otherProject.tasks.forEach { task -> allTasks.add(task) }"
        errorLine2="                           ~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/ListTaskOutputsTask.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="    configurations.create(sbomEmptyConfiguration) { emptyConfiguration ->"
        errorLine2="                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/sbom/Sbom.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use configureEach instead of whenObjectAdded"
        errorLine1="    configurations.whenObjectAdded {"
        errorLine2="                   ~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/sources/SourceJarTaskHelper.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="    configurations.create(configurationName) { gradleVariant ->"
        errorLine2="                   ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/sources/SourceJarTaskHelper.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Avoid using method findByName"
        errorLine1="            .findByName(FINALIZE_TEST_CONFIGS_WITH_APKS_TASK)!!"
        errorLine2="             ~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/testConfiguration/TestSuiteConfiguration.kt"/>
    </issue>

    <issue
        id="EagerGradleConfiguration"
        message="Use register instead of create"
        errorLine1="                configurations.create(&quot;${variant.name}TestedApks&quot;) { config ->"
        errorLine2="                               ~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/testConfiguration/TestSuiteConfiguration.kt"/>
    </issue>

    <issue
        id="GradlePerformance"
        message="Avoid using method mustRunAfter"
        errorLine1="                task.mustRunAfter(&quot;updateApiLintBaseline&quot;)"
        errorLine2="                     ~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/metalava/MetalavaTasks.kt"/>
    </issue>

    <issue
        id="GradlePerformance"
        message="Avoid using method mustRunAfter"
        errorLine1="        ignoreApiChanges?.configure { it.mustRunAfter(regenerateOldApis) }"
        errorLine2="                                         ~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/metalava/MetalavaTasks.kt"/>
    </issue>

    <issue
        id="GradlePerformance"
        message="Avoid using method mustRunAfter"
        errorLine1="        checkApiRelease?.configure { it.mustRunAfter(regenerateOldApis) }"
        errorLine2="                                        ~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/metalava/MetalavaTasks.kt"/>
    </issue>

    <issue
        id="GradlePerformance"
        message="Avoid using method mustRunAfter"
        errorLine1="        ignoreApiChanges?.configure { it.mustRunAfter(updateApi) }"
        errorLine2="                                         ~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/metalava/MetalavaTasks.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="            val extensions = project.rootProject.extensions"
        errorLine2="                                     ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/AffectedModuleDetector.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="            val compilerProject = project.rootProject.resolveProject(&quot;:compose&quot;)"
        errorLine2="                                          ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/AndroidXComposeImplPlugin.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="    return File(rootProject.projectDir, &quot;../../tools/external/gradle&quot;).canonicalFile"
        errorLine2="                ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/AndroidXConfig.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="    return File(rootProject.projectDir, &quot;../../external&quot;).canonicalFile"
        errorLine2="                ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/AndroidXConfig.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="            playgroundProjectOrArtifact(project.rootProject, name)"
        errorLine2="                                                ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/AndroidXExtension.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use providers.gradleProperty instead of getProperties"
        errorLine1="    for (propertyName in project.properties.keys) {"
        errorLine2="                                 ~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/AndroidXGradleProperties.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Avoid using method findProject"
        errorLine1="                    allProjectsExist || findProject(otherGradlePath) != null"
        errorLine2="                                        ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/AndroidXImplPlugin.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="                    project.rootProject.rootDir == project.getSupportRootFolder()"
        errorLine2="                            ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/AndroidXImplPlugin.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="                project.rootProject.tasks.named(NAME).configure { it.dependsOn(task) }"
        errorLine2="                        ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/AndroidXPlaygroundRootImplPlugin.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="    rootProject.layout.buildDirectory.dir(&quot;test-xml-configs&quot;)"
        errorLine2="    ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/BuildServerConfiguration.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="    rootProject.layout.buildDirectory.dir(&quot;app-apks-files&quot;)"
        errorLine2="    ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/BuildServerConfiguration.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="    val actualRootProject = if (project.isRoot) project else project.rootProject"
        errorLine2="                                                                     ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/BuildServerConfiguration.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="    rootProject.tasks.named(CREATE_AGGREGATE_BUILD_INFO_FILES_TASK).configure {"
        errorLine2="    ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateAggregateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="    get() = this == rootProject"
        errorLine2="                    ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/gradle/Extensions.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use providers.gradleProperty instead of getProperties"
        errorLine1="        val pathPrefixes = (properties[PROP_PATH_PREFIX] as String).split(&quot;,&quot;)"
        errorLine2="                            ~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/FilteredAnchorTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use providers.gradleProperty instead of getProperties"
        errorLine1="            val taskName = properties[PROP_TASK_NAME] as String"
        errorLine2="                           ~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/FilteredAnchorTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="                    rootProject.tasks.named(GLOBAL_TASK_NAME).configure { task ->"
        errorLine2="                    ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/FilteredAnchorTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use providers.gradleProperty instead of getProperties"
        errorLine1="            task.pathPrefix = properties[PROP_PATH_PREFIX] as String"
        errorLine2="                              ~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/FilteredAnchorTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use providers.gradleProperty instead of getProperties"
        errorLine1="            task.taskName = properties[PROP_TASK_NAME] as String"
        errorLine2="                            ~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/FilteredAnchorTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="            it.parameters.workingDir.set(rootProject.layout.projectDirectory)"
        errorLine2="                                         ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/gitclient/GitClient.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="        val rootBaseDir = if (compilerDaemonDisabled) projectDir else rootProject.projectDir"
        errorLine2="                                                                      ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/KonanPrebuiltsSetup.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Avoid using method findProject"
        errorLine1="    return project.rootProject.findProject(path)"
        errorLine2="                               ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/LintConfiguration.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="    return project.rootProject.findProject(path)"
        errorLine2="                   ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/LintConfiguration.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Avoid using method findProject"
        errorLine1="        project.rootProject.findProject(&quot;:lint:lint-gradle&quot;)?.let {"
        errorLine2="                            ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/LintConfiguration.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="        project.rootProject.findProject(&quot;:lint:lint-gradle&quot;)?.let {"
        errorLine2="                ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/LintConfiguration.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="        val tasksByOutput = project.rootProject.findAllTasksByOutput()"
        errorLine2="                                    ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/ListTaskOutputsTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Avoid using method findProject"
        errorLine1="            project.findProject(projectPath)?.let { project ->"
        errorLine2="                    ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/MavenUploadHelper.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="        rootProject.tasks.named(CREATE_MODULE_INFO).configure {"
        errorLine2="        ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/testConfiguration/OwnersService.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Avoid using method findProject"
        errorLine1="    val requested = rootProject.findProject(path)"
        errorLine2="                                ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/ProjectOrArtifact.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="                regenerate(project.rootProject, groupId, artifactId, artifactVersion, location)"
        errorLine2="                                   ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/metalava/RegenerateOldApisTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="            regenerate(project.rootProject, groupId, artifactId, version, location)"
        errorLine2="                               ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/metalava/RegenerateOldApisTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="            project.rootProject.maybeRegister("
        errorLine2="                    ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/Release.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="                        project.rootProject.getRepositoryDirectory()"
        errorLine2="                                ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/Release.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="        return project.rootProject.maybeRegister("
        errorLine2="                       ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/Release.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="        val localPropsFile = rootProject.projectDir.resolve(&quot;local.properties&quot;)"
        errorLine2="                             ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/SdkHelper.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="        project.rootProject.rootDir.toRelativeString(project.projectDir)"
        errorLine2="                ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*3}/androidx/build/SdkResourceGenerator.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="        (project.rootProject.extensions.extraProperties).let { it.get(&quot;supportRootFolder&quot;) as File }"
        errorLine2="                 ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/studio/StudioTask.kt"/>
    </issue>

    <issue
        id="GradleProjectIsolation"
        message="Use isolated.rootProject instead of getRootProject"
        errorLine1="        rootProject.tasks"
        errorLine2="        ~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/testConfiguration/TestSuiteConfiguration.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependencyConstraint"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectComponentPublication"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.api.internal.component.SoftwareComponentInternal"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method isAlias from org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectComponentPublication)"
        errorLine1="                if (!mavenPub.isAlias) {"
        errorLine2="                     ~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method getComponent from org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectComponentPublication)"
        errorLine1="                    pub.component.map { component ->"
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method getUsages from org.gradle.api.internal.component.SoftwareComponentInternal)"
        errorLine1="                            component.usages.orEmpty().flatMap { it.dependencies }"
        errorLine2="                            ~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method getComponent from org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectComponentPublication)"
        errorLine1="                    pub.component.map { component ->"
        errorLine2="                    ~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method getUsages from org.gradle.api.internal.component.SoftwareComponentInternal)"
        errorLine1="                        component.usages.orEmpty().flatMap { it.dependencyConstraints }"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/buildInfo/CreateLibraryBuildInfoFileTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/FileLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/FileLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.internal.time.Clock"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/FileLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method setLevel from org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext)"
        errorLine1="                            it.level = LogLevel.DEBUG"
        errorLine2="                            ~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/FileLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method setOutputEventListener from org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext)"
        errorLine1="                            it.setOutputEventListener { file.appendText(it.toString() + &quot;\n&quot;) }"
        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/FileLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.internal.component.external.model.DefaultModuleComponentIdentifier"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dackka/GenerateMetadataTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.api.internal.artifacts.ivyservice.TypedResolveException"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/metalava/RegenerateOldApisTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.api.internal.tasks.userinput.UserInputHandler"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/studio/StudioTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.internal.service.ServiceRegistry"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/studio/StudioTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method get from org.gradle.internal.service.ServiceRegistry)"
        errorLine1="            val userInput = services.get(UserInputHandler::class.java)"
        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/studio/StudioTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method askYesNoQuestion from org.gradle.api.internal.tasks.userinput.UserInputHandler)"
        errorLine1="                    userInput.askYesNoQuestion("
        errorLine2="                    ^">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/studio/StudioTask.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/ToStringLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/ToStringLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs"
        errorLine1="import org.gradle.internal.time.Clock"
        errorLine2="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/ToStringLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method setLevel from org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext)"
        errorLine1="            it.level = LogLevel.DEBUG"
        errorLine2="            ~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/ToStringLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method setLevel from org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext)"
        errorLine1="            it.level = LogLevel.DEBUG"
        errorLine2="            ~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/ToStringLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method setOutputEventListener from org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext)"
        errorLine1="            it.setOutputEventListener { stringBuilder.append(it.toString() + &quot;\n&quot;) }"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/ToStringLogger.kt"/>
    </issue>

    <issue
        id="InternalGradleApiUsage"
        message="Avoid using internal Gradle APIs (method setOutputEventListener from org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext)"
        errorLine1="            it.setOutputEventListener { stringBuilder.append(it.toString() + &quot;\n&quot;) }"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/dependencyTracker/ToStringLogger.kt"/>
    </issue>

    <issue
        id="WithPluginClasspathUsage"
        message="Avoid usage of GradleRunner#withPluginClasspath, which is broken. Instead use something like https://github.com/autonomousapps/dependency-analysis-gradle-plugin/tree/main/testkit#gradle-testkit-support-plugin"
        errorLine1="                .withPluginClasspath()"
        errorLine2="                 ~~~~~~~~~~~~~~~~~~~">
        <location
            file="src/test/java/androidx/build/buildInfo/CreateLibraryBuildInfoFileTaskTest.kt"/>
    </issue>

    <issue
        id="WithTypeWithoutConfigureEach"
        message="Avoid passing a closure to withType, use withType().configureEach instead"
        errorLine1="        project.tasks.withType(AbstractTestTask::class.java) { task ->"
        errorLine2="                      ~~~~~~~~">
        <location
            file="${:buildSrc-tests*main*MAIN*sourceProvider*0*javaDir*4}/androidx/build/AndroidXImplPlugin.kt"/>
    </issue>

</issues>
