[kotlin] KTIJ-35836 add KotlinScriptEntity.usedInScripts and KaScriptDependencyLibraryFallbackDependenciesModule

- reworked KotlinScriptLibraryEntityId and adapt usages
- adjust project structure script tests

GitOrigin-RevId: 684b0a55875d5597f62b38e0f0cc632225b063cc
This commit is contained in:
Vlad Koshkin
2026-01-14 20:54:39 +00:00
committed by intellij-monorepo-bot
parent 8990009f05
commit 5d045786db
26 changed files with 3801 additions and 1872 deletions
@@ -1,23 +1,15 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.base.fir.projectStructure.modules.library
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.impl.scopes.LibraryScopeBase
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.toNioPathOrNull
import com.intellij.platform.workspace.storage.SymbolicEntityId
import com.intellij.platform.workspace.storage.WorkspaceEntityWithSymbolicId
import com.intellij.psi.search.GlobalSearchScope
import it.unimi.dsi.fastutil.objects.Object2IntMap
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.analysis.api.KaImplementationDetail
import org.jetbrains.kotlin.analysis.api.impl.base.projectStructure.KaBuiltinsModuleImpl
import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibraryModule
import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibrarySourceModule
import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule
import org.jetbrains.kotlin.idea.base.fir.projectStructure.modules.KaEntityBasedModule
import org.jetbrains.kotlin.idea.base.projectStructure.scope.CombinableSourceAndClassRootsScope
import java.nio.file.Path
@ApiStatus.Internal
@@ -43,20 +35,3 @@ abstract class KaEntityBasedLibraryModuleBase<E : WorkspaceEntityWithSymbolicId,
override val transitiveDependsOnDependencies: List<KaModule> get() = emptyList()
}
@Suppress("EqualsOrHashCode") // DelegatingGlobalSearchScope requires to provide calcHashCode()
private class KaEntityBasedLibraryModuleScope(
private val entityId: SymbolicEntityId<*>,
classesRoots: Array<VirtualFile>,
project: Project,
) : LibraryScopeBase(project, classesRoots, /* sources = */VirtualFile.EMPTY_ARRAY), CombinableSourceAndClassRootsScope {
override fun getFileRoot(file: VirtualFile): VirtualFile? = myIndex.getClassRootForFile(file)
override val roots: Object2IntMap<VirtualFile> get() = entries
override val modules: Set<Module> get() = emptySet()
override val includesLibraryClassRoots: Boolean get() = true
override val includesLibrarySourceRoots: Boolean get() = false
override fun equals(other: Any?): Boolean = this === other || other is KaEntityBasedLibraryModuleScope && entityId == other.entityId
override fun calcHashCode(): Int = entityId.hashCode()
override fun toString(): String = "KaLibraryModuleScope($entityId)"
}
@@ -0,0 +1,28 @@
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.base.fir.projectStructure.modules.library
import com.intellij.openapi.module.Module
import com.intellij.openapi.module.impl.scopes.LibraryScopeBase
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.platform.workspace.storage.SymbolicEntityId
import it.unimi.dsi.fastutil.objects.Object2IntMap
import org.jetbrains.kotlin.idea.base.projectStructure.scope.CombinableSourceAndClassRootsScope
@Suppress("EqualsOrHashCode") // DelegatingGlobalSearchScope requires to provide calcHashCode()
class KaEntityBasedLibraryModuleScope(
private val entityId: SymbolicEntityId<*>,
classesRoots: Array<VirtualFile>,
project: Project,
) : LibraryScopeBase(project, classesRoots, /* sources = */VirtualFile.EMPTY_ARRAY), CombinableSourceAndClassRootsScope {
override fun getFileRoot(file: VirtualFile): VirtualFile? = myIndex.getClassRootForFile(file)
override val roots: Object2IntMap<VirtualFile> get() = entries
override val modules: Set<Module> get() = emptySet()
override val includesLibraryClassRoots: Boolean get() = true
override val includesLibrarySourceRoots: Boolean get() = false
override fun equals(other: Any?): Boolean = this === other || other is KaEntityBasedLibraryModuleScope && entityId == other.entityId
override fun calcHashCode(): Int = entityId.hashCode()
override fun toString(): String = "KaLibraryModuleScope($entityId)"
}
@@ -127,6 +127,7 @@ object KaModuleStructureMermaidRenderer {
append(targetPlatform.getTargetPlatformDescriptionForRendering())
}
is KaLibraryFallbackDependenciesModuleImpl -> null
is KaLibraryFallbackDependenciesModule -> null
else -> error("Unknown module type: ${this::class.java}")
}
@@ -53,7 +53,7 @@ object KaModuleStructureTxtRenderer {
appendLine("sourceModuleKind: ${module.sourceModuleKind}")
appendLine("stableModuleName: ${module.stableModuleName}")
}
is KaLibraryFallbackDependenciesModuleImpl -> {}
is KaLibraryFallbackDependenciesModule -> {}
else -> error("Unknown module type: ${module::class.java}")
}
@@ -67,7 +67,7 @@ object KaModuleStructureTxtRenderer {
if (dependencies.isEmpty()) {
appendLine("<empty>")
} else {
dependencies.map { "${it.getKaModuleClass()}(${it.getOneLineModuleDescriptionForRendering()})" }
dependencies.map { "${it.getKaModuleClass()}(${getOneLineModuleDescriptionForRendering(it)})" }
.sorted() // todo the order is unstable for moduleinfo-based impl, should be fixed as a part of KTIJ-31422
.forEach { appendLine(it) }
}
@@ -6,35 +6,27 @@ import org.jetbrains.kotlin.idea.base.projectStructure.KaSourceModuleKind
import org.jetbrains.kotlin.idea.base.projectStructure.sourceModuleKind
import org.jetbrains.kotlin.platform.TargetPlatform
internal fun KaModule.getOneLineModuleDescriptionForRendering(): String? {
val string = when (this) {
internal fun getOneLineModuleDescriptionForRendering(module: KaModule): String? {
val string = when (module) {
is KaBuiltinsModule -> null
is KaDanglingFileModule -> this.file.name
is KaLibraryModule -> buildString {
append(this@getOneLineModuleDescriptionForRendering.getModuleLibraryNameForRendering())
if (this@getOneLineModuleDescriptionForRendering is KaScriptDependencyModule) {
append(", scriptDependency")
}
}
is KaLibrarySourceModule -> "library sources of " + binaryLibrary.getOneLineModuleDescriptionForRendering()
is KaLibraryFallbackDependenciesModule -> "fallback dependencies of " + dependentLibrary.getOneLineModuleDescriptionForRendering()
is KaNotUnderContentRootModule -> (this.file?.name ?: "NO_FILE")
is KaScriptDependencyModule -> (this.file?.name ?: "NO_FILE")
is KaScriptModule -> this.file.name
is KaDanglingFileModule -> module.file.name
is KaLibraryModule -> module.getModuleLibraryNameForRendering()
is KaLibrarySourceModule -> "library sources of " + getOneLineModuleDescriptionForRendering(module.binaryLibrary)
is KaLibraryFallbackDependenciesModule -> "fallback dependencies of " + getOneLineModuleDescriptionForRendering(module.dependentLibrary)
is KaNotUnderContentRootModule -> (module.file?.name ?: "NO_FILE")
is KaScriptModule -> module.file.name
is KaSourceModule -> buildString {
append(this@getOneLineModuleDescriptionForRendering.name)
append(module.name)
append(", ")
append(
when (this@getOneLineModuleDescriptionForRendering.sourceModuleKind) {
when (module.sourceModuleKind) {
KaSourceModuleKind.PRODUCTION -> "production"
KaSourceModuleKind.TEST -> "test"
null -> "unknown"
}
)
}
else -> error("Unknown module type: ${this::class.java}")
else -> error("Unknown module type: ${module::class.java}")
}
return string
}
@@ -8,7 +8,6 @@ import com.intellij.openapi.roots.OrderEnumerator
import com.intellij.openapi.roots.libraries.Library
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar
import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule
import org.jetbrains.kotlin.analysis.api.projectStructure.allDirectDependencies
import org.jetbrains.kotlin.idea.base.projectStructure.moduleInfo.allSdks
import org.jetbrains.kotlin.idea.base.projectStructure.toKaLibraryModule
import org.jetbrains.kotlin.idea.base.projectStructure.toKaLibraryModules
@@ -31,7 +30,7 @@ internal fun Project.getAllKaModules(): List<KaModule> = buildSet {
internal val kaModulesComparatorForStableRendering =
compareBy<KaModule> { it.getKaModuleClass() }
.thenBy { it.getOneLineModuleDescriptionForRendering() }
.thenBy { getOneLineModuleDescriptionForRendering(it) }
.thenBy { it.targetPlatform.getTargetPlatformDescriptionForRendering() }
internal fun getAllKaModules(modules: Collection<Module>): List<KaModule> =
@@ -0,0 +1,71 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.base.fir.scripting.projectStructure.modules
import com.intellij.openapi.project.Project
import com.intellij.platform.backend.workspace.virtualFile
import com.intellij.platform.backend.workspace.workspaceModel
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analysis.api.platform.projectStructure.KaModuleBase
import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibraryFallbackDependenciesModule
import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule
import org.jetbrains.kotlin.idea.base.fir.projectStructure.modules.library.KaEntityBasedLibraryModuleScope
import org.jetbrains.kotlin.idea.base.projectStructure.ideProjectStructureProvider
import org.jetbrains.kotlin.idea.base.projectStructure.modules.KaLibraryFallbackDependenciesModuleImpl
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntity
import org.jetbrains.kotlin.platform.TargetPlatform
import java.util.*
internal class KaScriptDependencyLibraryFallbackDependenciesModule(
override val dependentLibrary: KaScriptDependencyLibraryModuleImpl
) : KaModuleBase(), KaLibraryFallbackDependenciesModule {
override val directRegularDependencies: List<KaModule> get() = emptyList()
override val directDependsOnDependencies: List<KaModule> get() = emptyList()
override val directFriendDependencies: List<KaModule> get() = emptyList()
override val baseContentScope: GlobalSearchScope
get() {
val scopes = mutableListOf<GlobalSearchScope>()
val snapshot = project.workspaceModel.currentSnapshot
val scriptEntity = dependentLibrary.entity.usedInScripts.firstOrNull()?.let {
snapshot.getVirtualFileUrlIndex().findEntitiesByUrl(it).filterIsInstance<KotlinScriptEntity>().singleOrNull()
}
if (scriptEntity != null) {
scriptEntity.dependencies.forEach { id ->
val libraryEntity = snapshot.resolve(id)
if (libraryEntity != null) {
scopes.add(
KaEntityBasedLibraryModuleScope(
id, libraryEntity.classes.mapNotNull { it.virtualFile }.toTypedArray(), project
)
)
}
}
val sdkLibraryModule = scriptEntity.sdkId?.let { project.ideProjectStructureProvider.getKaLibraryModule(it) }
if (sdkLibraryModule != null) {
scopes.add(sdkLibraryModule.contentScope)
}
}
return if (scopes.isEmpty()) GlobalSearchScope.EMPTY_SCOPE else GlobalSearchScope.union(scopes)
}
override val targetPlatform: TargetPlatform
get() = dependentLibrary.targetPlatform
override val project: Project
get() = dependentLibrary.project
override val moduleDescription: String
get() = "Fallback dependencies for script dependency module ${dependentLibrary.moduleDescription}"
override fun equals(other: Any?): Boolean =
this === other || other is KaLibraryFallbackDependenciesModuleImpl && dependentLibrary == other.dependentLibrary
override fun hashCode(): Int {
// Use `Objects.hash` to differentiate this module's hash code from `dependentLibrary`.
return Objects.hash(dependentLibrary)
}
}
@@ -8,6 +8,7 @@ import com.intellij.workspaceModel.ide.toPath
import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
import org.jetbrains.kotlin.analysis.api.KaPlatformInterface
import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibrarySourceModule
import org.jetbrains.kotlin.analysis.api.projectStructure.KaModule
import org.jetbrains.kotlin.analysis.api.projectStructure.KaScriptDependencyModule
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptLibraryEntity
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptLibraryEntityId
@@ -34,7 +35,7 @@ class KaScriptDependencyLibraryModuleImpl(
get() = JvmPlatforms.unspecifiedJvmPlatform
override val libraryName: String
get() = entity.classes.singleOrNull()?.presentableUrl ?: entity.symbolicId.presentableName
get() = entity.symbolicId.presentableName
@KaExperimentalApi
override val binaryVirtualFiles: Collection<VirtualFile>
@@ -47,6 +48,9 @@ class KaScriptDependencyLibraryModuleImpl(
KaScriptDependencyLibrarySourceModuleImpl(this)
}
override val directRegularDependencies: List<KaModule>
get() = super.directRegularDependencies + KaScriptDependencyLibraryFallbackDependenciesModule(this)
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
@@ -1,54 +1,52 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
@file:JvmName("KotlinScriptEntityModifications")
package org.jetbrains.kotlin.idea.core.script.k2.modules
import com.intellij.platform.workspace.jps.entities.ModuleEntity
import com.intellij.platform.workspace.jps.entities.ModuleId
import com.intellij.platform.workspace.jps.entities.SdkId
import com.intellij.platform.workspace.storage.*
import com.intellij.platform.workspace.storage.annotations.Default
import com.intellij.platform.workspace.storage.impl.containers.toMutableWorkspaceList
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
@GeneratedCodeApiVersion(3)
interface KotlinScriptEntityBuilder: WorkspaceEntityBuilder<KotlinScriptEntity>{
override var entitySource: EntitySource
var virtualFileUrl: VirtualFileUrl
var dependencies: MutableList<KotlinScriptLibraryEntityId>
var configuration: ScriptCompilationConfigurationEntity?
var sdkId: SdkId?
var relatedModuleIds: MutableList<ModuleId>
var reports: MutableList<ScriptDiagnosticData>
interface KotlinScriptEntityBuilder : WorkspaceEntityBuilder<KotlinScriptEntity> {
override var entitySource: EntitySource
var virtualFileUrl: VirtualFileUrl
var dependencies: MutableList<KotlinScriptLibraryEntityId>
var configuration: ScriptCompilationConfigurationEntity?
var sdkId: SdkId?
var relatedModuleIds: MutableList<ModuleId>
var reports: MutableList<ScriptDiagnosticData>
}
internal object KotlinScriptEntityType : EntityType<KotlinScriptEntity, KotlinScriptEntityBuilder>(){
override val entityClass: Class<KotlinScriptEntity> get() = KotlinScriptEntity::class.java
operator fun invoke(
virtualFileUrl: VirtualFileUrl,
dependencies: List<KotlinScriptLibraryEntityId>,
entitySource: EntitySource,
init: (KotlinScriptEntityBuilder.() -> Unit)? = null,
): KotlinScriptEntityBuilder{
val builder = builder()
builder.virtualFileUrl = virtualFileUrl
builder.dependencies = dependencies.toMutableWorkspaceList()
builder.entitySource = entitySource
init?.invoke(builder)
return builder
}
internal object KotlinScriptEntityType : EntityType<KotlinScriptEntity, KotlinScriptEntityBuilder>() {
override val entityClass: Class<KotlinScriptEntity> get() = KotlinScriptEntity::class.java
operator fun invoke(
virtualFileUrl: VirtualFileUrl,
dependencies: List<KotlinScriptLibraryEntityId>,
entitySource: EntitySource,
init: (KotlinScriptEntityBuilder.() -> Unit)? = null,
): KotlinScriptEntityBuilder {
val builder = builder()
builder.virtualFileUrl = virtualFileUrl
builder.dependencies = dependencies.toMutableWorkspaceList()
builder.entitySource = entitySource
init?.invoke(builder)
return builder
}
}
fun MutableEntityStorage.modifyKotlinScriptEntity(
entity: KotlinScriptEntity,
modification: KotlinScriptEntityBuilder.() -> Unit,
entity: KotlinScriptEntity,
modification: KotlinScriptEntityBuilder.() -> Unit,
): KotlinScriptEntity = modifyEntity(KotlinScriptEntityBuilder::class.java, entity, modification)
@JvmOverloads
@JvmName("createKotlinScriptEntity")
fun KotlinScriptEntity(
virtualFileUrl: VirtualFileUrl,
dependencies: List<KotlinScriptLibraryEntityId>,
entitySource: EntitySource,
init: (KotlinScriptEntityBuilder.() -> Unit)? = null,
virtualFileUrl: VirtualFileUrl,
dependencies: List<KotlinScriptLibraryEntityId>,
entitySource: EntitySource,
init: (KotlinScriptEntityBuilder.() -> Unit)? = null,
): KotlinScriptEntityBuilder = KotlinScriptEntityType(virtualFileUrl, dependencies, entitySource, init)
@@ -1,47 +1,48 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
@file:JvmName("KotlinScriptLibraryEntityModifications")
package org.jetbrains.kotlin.idea.core.script.k2.modules
import com.intellij.openapi.util.NlsSafe
import com.intellij.platform.workspace.storage.*
import com.intellij.platform.workspace.storage.impl.containers.toMutableWorkspaceList
import com.intellij.platform.workspace.storage.impl.containers.toMutableWorkspaceSet
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
@GeneratedCodeApiVersion(3)
interface KotlinScriptLibraryEntityBuilder: WorkspaceEntityBuilder<KotlinScriptLibraryEntity>{
override var entitySource: EntitySource
var classes: MutableList<VirtualFileUrl>
var sources: MutableList<VirtualFileUrl>
interface KotlinScriptLibraryEntityBuilder : WorkspaceEntityBuilder<KotlinScriptLibraryEntity> {
override var entitySource: EntitySource
var classes: MutableList<VirtualFileUrl>
var usedInScripts: MutableSet<VirtualFileUrl>
var sources: MutableSet<VirtualFileUrl>
}
internal object KotlinScriptLibraryEntityType : EntityType<KotlinScriptLibraryEntity, KotlinScriptLibraryEntityBuilder>(){
override val entityClass: Class<KotlinScriptLibraryEntity> get() = KotlinScriptLibraryEntity::class.java
operator fun invoke(
classes: List<VirtualFileUrl>,
sources: List<VirtualFileUrl>,
entitySource: EntitySource,
init: (KotlinScriptLibraryEntityBuilder.() -> Unit)? = null,
): KotlinScriptLibraryEntityBuilder{
val builder = builder()
builder.classes = classes.toMutableWorkspaceList()
builder.sources = sources.toMutableWorkspaceList()
builder.entitySource = entitySource
init?.invoke(builder)
return builder
}
internal object KotlinScriptLibraryEntityType : EntityType<KotlinScriptLibraryEntity, KotlinScriptLibraryEntityBuilder>() {
override val entityClass: Class<KotlinScriptLibraryEntity> get() = KotlinScriptLibraryEntity::class.java
operator fun invoke(
classes: List<VirtualFileUrl>,
usedInScripts: Set<VirtualFileUrl>,
entitySource: EntitySource,
init: (KotlinScriptLibraryEntityBuilder.() -> Unit)? = null,
): KotlinScriptLibraryEntityBuilder {
val builder = builder()
builder.classes = classes.toMutableWorkspaceList()
builder.usedInScripts = usedInScripts.toMutableWorkspaceSet()
builder.entitySource = entitySource
init?.invoke(builder)
return builder
}
}
fun MutableEntityStorage.modifyKotlinScriptLibraryEntity(
entity: KotlinScriptLibraryEntity,
modification: KotlinScriptLibraryEntityBuilder.() -> Unit,
entity: KotlinScriptLibraryEntity,
modification: KotlinScriptLibraryEntityBuilder.() -> Unit,
): KotlinScriptLibraryEntity = modifyEntity(KotlinScriptLibraryEntityBuilder::class.java, entity, modification)
@JvmOverloads
@JvmName("createKotlinScriptLibraryEntity")
fun KotlinScriptLibraryEntity(
classes: List<VirtualFileUrl>,
sources: List<VirtualFileUrl>,
entitySource: EntitySource,
init: (KotlinScriptLibraryEntityBuilder.() -> Unit)? = null,
): KotlinScriptLibraryEntityBuilder = KotlinScriptLibraryEntityType(classes, sources, entitySource, init)
classes: List<VirtualFileUrl>,
usedInScripts: Set<VirtualFileUrl>,
entitySource: EntitySource,
init: (KotlinScriptLibraryEntityBuilder.() -> Unit)? = null,
): KotlinScriptLibraryEntityBuilder = KotlinScriptLibraryEntityType(classes, usedInScripts, entitySource, init)
@@ -1,11 +1,9 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.core.script.k2.modules.impl
import com.intellij.platform.workspace.jps.entities.ModuleEntity
import com.intellij.platform.workspace.jps.entities.ModuleId
import com.intellij.platform.workspace.jps.entities.SdkId
import com.intellij.platform.workspace.storage.*
import com.intellij.platform.workspace.storage.annotations.Default
import com.intellij.platform.workspace.storage.impl.ModifiableWorkspaceEntityBase
import com.intellij.platform.workspace.storage.impl.SoftLinkable
import com.intellij.platform.workspace.storage.impl.WorkspaceEntityBase
@@ -17,449 +15,444 @@ import com.intellij.platform.workspace.storage.instrumentation.EntityStorageInst
import com.intellij.platform.workspace.storage.instrumentation.EntityStorageInstrumentationApi
import com.intellij.platform.workspace.storage.metadata.model.EntityMetadata
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntity
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntityBuilder
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptLibraryEntityId
import org.jetbrains.kotlin.idea.core.script.k2.modules.ScriptCompilationConfigurationEntity
import org.jetbrains.kotlin.idea.core.script.k2.modules.ScriptDiagnosticData
import org.jetbrains.kotlin.idea.core.script.k2.modules.*
@GeneratedCodeApiVersion(3)
@GeneratedCodeImplVersion(7)
@OptIn(WorkspaceEntityInternalApi::class)
internal class KotlinScriptEntityImpl(private val dataSource: KotlinScriptEntityData): KotlinScriptEntity, WorkspaceEntityBase(dataSource) {
internal class KotlinScriptEntityImpl(private val dataSource: KotlinScriptEntityData) : KotlinScriptEntity,
WorkspaceEntityBase(dataSource) {
private companion object {
private companion object {
private val connections = listOf<ConnectionId>()
private val connections = listOf<ConnectionId>()
}
}
override val virtualFileUrl: VirtualFileUrl
get() {
readField("virtualFileUrl")
return dataSource.virtualFileUrl
}
override val dependencies: List<KotlinScriptLibraryEntityId>
get() {
readField("dependencies")
return dataSource.dependencies
}
override val configuration: ScriptCompilationConfigurationEntity?
get() {
readField("configuration")
return dataSource.configuration
}
override val sdkId: SdkId?
get() {
readField("sdkId")
return dataSource.sdkId
}
override var relatedModuleIds: List<ModuleId> = dataSource.relatedModuleIds
override val virtualFileUrl: VirtualFileUrl
get() {
readField("virtualFileUrl")
return dataSource.virtualFileUrl
}
override val dependencies: List<KotlinScriptLibraryEntityId>
get() {
readField("dependencies")
return dataSource.dependencies
}
override val configuration: ScriptCompilationConfigurationEntity?
get() {
readField("configuration")
return dataSource.configuration
}
override val sdkId: SdkId?
get() {
readField("sdkId")
return dataSource.sdkId
}
override var relatedModuleIds: List<ModuleId> = dataSource.relatedModuleIds
override var reports: List<ScriptDiagnosticData> = dataSource.reports
override var reports: List<ScriptDiagnosticData> = dataSource.reports
override val entitySource: EntitySource
get() {
readField("entitySource")
return dataSource.entitySource
}
override val entitySource: EntitySource
get() {
readField("entitySource")
return dataSource.entitySource
}
override fun connectionIdList(): List<ConnectionId> {
return connections
}
override fun connectionIdList(): List<ConnectionId> {
return connections
}
internal class Builder(result: KotlinScriptEntityData?): ModifiableWorkspaceEntityBase<KotlinScriptEntity, KotlinScriptEntityData>(result), KotlinScriptEntityBuilder {
internal constructor(): this(KotlinScriptEntityData())
internal class Builder(result: KotlinScriptEntityData?) :
ModifiableWorkspaceEntityBase<KotlinScriptEntity, KotlinScriptEntityData>(result), KotlinScriptEntityBuilder {
internal constructor() : this(KotlinScriptEntityData())
override fun applyToBuilder(builder: MutableEntityStorage){
if (this.diff != null){
if (existsInBuilder(builder)){
this.diff = builder
return
}
else{
error("Entity KotlinScriptEntity is already created in a different builder")
}
}
this.diff = builder
addToBuilder()
this.id = getEntityData().createEntityId()
override fun applyToBuilder(builder: MutableEntityStorage) {
if (this.diff != null) {
if (existsInBuilder(builder)) {
this.diff = builder
return
} else {
error("Entity KotlinScriptEntity is already created in a different builder")
}
}
this.diff = builder
addToBuilder()
this.id = getEntityData().createEntityId()
// After adding entity data to the builder, we need to unbind it and move the control over entity data to builder
// Builder may switch to snapshot at any moment and lock entity data to modification
this.currentEntityData = null
index(this, "virtualFileUrl", this.virtualFileUrl)
this.currentEntityData = null
index(this, "virtualFileUrl", this.virtualFileUrl)
// Process linked entities that are connected without a builder
processLinkedEntities(builder)
checkInitialization() // TODO uncomment and check failed tests
}
processLinkedEntities(builder)
checkInitialization() // TODO uncomment and check failed tests
}
private fun checkInitialization(){
val _diff = diff
if (!getEntityData().isEntitySourceInitialized()){
error("Field WorkspaceEntity#entitySource should be initialized")
}
if (!getEntityData().isVirtualFileUrlInitialized()){
error("Field KotlinScriptEntity#virtualFileUrl should be initialized")
}
if (!getEntityData().isDependenciesInitialized()){
error("Field KotlinScriptEntity#dependencies should be initialized")
}
}
override fun connectionIdList(): List<ConnectionId>{
return connections
}
override fun afterModification(){
val collection_dependencies = getEntityData().dependencies
if (collection_dependencies is MutableWorkspaceList<*>){
collection_dependencies.cleanModificationUpdateAction()
}
val collection_relatedModuleIds = getEntityData().relatedModuleIds
if (collection_relatedModuleIds is MutableWorkspaceList<*>){
collection_relatedModuleIds.cleanModificationUpdateAction()
}
val collection_reports = getEntityData().reports
if (collection_reports is MutableWorkspaceList<*>){
collection_reports.cleanModificationUpdateAction()
}
}
// Relabeling code, move information from dataSource to this builder
override fun relabel(dataSource: WorkspaceEntity, parents: Set<WorkspaceEntity>?){
dataSource as KotlinScriptEntity
if (this.entitySource != dataSource.entitySource) this.entitySource = dataSource.entitySource
if (this.virtualFileUrl != dataSource.virtualFileUrl) this.virtualFileUrl = dataSource.virtualFileUrl
if (this.dependencies != dataSource.dependencies) this.dependencies = dataSource.dependencies.toMutableList()
if (this.configuration != dataSource?.configuration) this.configuration = dataSource.configuration
if (this.sdkId != dataSource?.sdkId) this.sdkId = dataSource.sdkId
if (this.relatedModuleIds != dataSource.relatedModuleIds) this.relatedModuleIds = dataSource.relatedModuleIds.toMutableList()
if (this.reports != dataSource.reports) this.reports = dataSource.reports.toMutableList()
updateChildToParentReferences(parents)
}
private fun checkInitialization() {
val _diff = diff
if (!getEntityData().isEntitySourceInitialized()) {
error("Field WorkspaceEntity#entitySource should be initialized")
}
if (!getEntityData().isVirtualFileUrlInitialized()) {
error("Field KotlinScriptEntity#virtualFileUrl should be initialized")
}
if (!getEntityData().isDependenciesInitialized()) {
error("Field KotlinScriptEntity#dependencies should be initialized")
}
}
override var entitySource: EntitySource
get() = getEntityData().entitySource
set(value) {
checkModificationAllowed()
getEntityData(true).entitySource = value
changedProperty.add("entitySource")
override fun connectionIdList(): List<ConnectionId> {
return connections
}
}
override var virtualFileUrl: VirtualFileUrl
get() = getEntityData().virtualFileUrl
set(value) {
checkModificationAllowed()
getEntityData(true).virtualFileUrl = value
changedProperty.add("virtualFileUrl")
val _diff = diff
if (_diff != null) index(this, "virtualFileUrl", value)
override fun afterModification() {
val collection_dependencies = getEntityData().dependencies
if (collection_dependencies is MutableWorkspaceList<*>) {
collection_dependencies.cleanModificationUpdateAction()
}
val collection_relatedModuleIds = getEntityData().relatedModuleIds
if (collection_relatedModuleIds is MutableWorkspaceList<*>) {
collection_relatedModuleIds.cleanModificationUpdateAction()
}
val collection_reports = getEntityData().reports
if (collection_reports is MutableWorkspaceList<*>) {
collection_reports.cleanModificationUpdateAction()
}
}
// Relabeling code, move information from dataSource to this builder
override fun relabel(dataSource: WorkspaceEntity, parents: Set<WorkspaceEntity>?) {
dataSource as KotlinScriptEntity
if (this.entitySource != dataSource.entitySource) this.entitySource = dataSource.entitySource
if (this.virtualFileUrl != dataSource.virtualFileUrl) this.virtualFileUrl = dataSource.virtualFileUrl
if (this.dependencies != dataSource.dependencies) this.dependencies = dataSource.dependencies.toMutableList()
if (this.configuration != dataSource?.configuration) this.configuration = dataSource.configuration
if (this.sdkId != dataSource?.sdkId) this.sdkId = dataSource.sdkId
if (this.relatedModuleIds != dataSource.relatedModuleIds) this.relatedModuleIds = dataSource.relatedModuleIds.toMutableList()
if (this.reports != dataSource.reports) this.reports = dataSource.reports.toMutableList()
updateChildToParentReferences(parents)
}
override var entitySource: EntitySource
get() = getEntityData().entitySource
set(value) {
checkModificationAllowed()
getEntityData(true).entitySource = value
changedProperty.add("entitySource")
}
override var virtualFileUrl: VirtualFileUrl
get() = getEntityData().virtualFileUrl
set(value) {
checkModificationAllowed()
getEntityData(true).virtualFileUrl = value
changedProperty.add("virtualFileUrl")
val _diff = diff
if (_diff != null) index(this, "virtualFileUrl", value)
}
private val dependenciesUpdater: (value: List<KotlinScriptLibraryEntityId>) -> Unit = { value ->
changedProperty.add("dependencies")
}
override var dependencies: MutableList<KotlinScriptLibraryEntityId>
get() {
val collection_dependencies = getEntityData().dependencies
if (collection_dependencies !is MutableWorkspaceList) return collection_dependencies
if (diff == null || modifiable.get()) {
collection_dependencies.setModificationUpdateAction(dependenciesUpdater)
} else {
collection_dependencies.cleanModificationUpdateAction()
}
return collection_dependencies
}
set(value) {
checkModificationAllowed()
getEntityData(true).dependencies = value
dependenciesUpdater.invoke(value)
}
override var configuration: ScriptCompilationConfigurationEntity?
get() = getEntityData().configuration
set(value) {
checkModificationAllowed()
getEntityData(true).configuration = value
changedProperty.add("configuration")
}
override var sdkId: SdkId?
get() = getEntityData().sdkId
set(value) {
checkModificationAllowed()
getEntityData(true).sdkId = value
changedProperty.add("sdkId")
}
private val relatedModuleIdsUpdater: (value: List<ModuleId>) -> Unit = { value ->
changedProperty.add("relatedModuleIds")
}
override var relatedModuleIds: MutableList<ModuleId>
get() {
val collection_relatedModuleIds = getEntityData().relatedModuleIds
if (collection_relatedModuleIds !is MutableWorkspaceList) return collection_relatedModuleIds
if (diff == null || modifiable.get()) {
collection_relatedModuleIds.setModificationUpdateAction(relatedModuleIdsUpdater)
} else {
collection_relatedModuleIds.cleanModificationUpdateAction()
}
return collection_relatedModuleIds
}
set(value) {
checkModificationAllowed()
getEntityData(true).relatedModuleIds = value
relatedModuleIdsUpdater.invoke(value)
}
private val reportsUpdater: (value: List<ScriptDiagnosticData>) -> Unit = { value ->
changedProperty.add("reports")
}
override var reports: MutableList<ScriptDiagnosticData>
get() {
val collection_reports = getEntityData().reports
if (collection_reports !is MutableWorkspaceList) return collection_reports
if (diff == null || modifiable.get()) {
collection_reports.setModificationUpdateAction(reportsUpdater)
} else {
collection_reports.cleanModificationUpdateAction()
}
return collection_reports
}
set(value) {
checkModificationAllowed()
getEntityData(true).reports = value
reportsUpdater.invoke(value)
}
override fun getEntityClass(): Class<KotlinScriptEntity> = KotlinScriptEntity::class.java
}
private val dependenciesUpdater: (value: List<KotlinScriptLibraryEntityId>) -> Unit = { value ->
changedProperty.add("dependencies")
}
override var dependencies: MutableList<KotlinScriptLibraryEntityId>
get() {
val collection_dependencies = getEntityData().dependencies
if (collection_dependencies !is MutableWorkspaceList) return collection_dependencies
if (diff == null || modifiable.get()) {
collection_dependencies.setModificationUpdateAction(dependenciesUpdater)
} else {
collection_dependencies.cleanModificationUpdateAction()
}
return collection_dependencies
}
set(value) {
checkModificationAllowed()
getEntityData(true).dependencies = value
dependenciesUpdater.invoke(value)
}
override var configuration: ScriptCompilationConfigurationEntity?
get() = getEntityData().configuration
set(value) {
checkModificationAllowed()
getEntityData(true).configuration = value
changedProperty.add("configuration")
}
override var sdkId: SdkId?
get() = getEntityData().sdkId
set(value) {
checkModificationAllowed()
getEntityData(true).sdkId = value
changedProperty.add("sdkId")
}
private val relatedModuleIdsUpdater: (value: List<ModuleId>) -> Unit = { value ->
changedProperty.add("relatedModuleIds")
}
override var relatedModuleIds: MutableList<ModuleId>
get() {
val collection_relatedModuleIds = getEntityData().relatedModuleIds
if (collection_relatedModuleIds !is MutableWorkspaceList) return collection_relatedModuleIds
if (diff == null || modifiable.get()) {
collection_relatedModuleIds.setModificationUpdateAction(relatedModuleIdsUpdater)
} else {
collection_relatedModuleIds.cleanModificationUpdateAction()
}
return collection_relatedModuleIds
}
set(value) {
checkModificationAllowed()
getEntityData(true).relatedModuleIds = value
relatedModuleIdsUpdater.invoke(value)
}
private val reportsUpdater: (value: List<ScriptDiagnosticData>) -> Unit = { value ->
changedProperty.add("reports")
}
override var reports: MutableList<ScriptDiagnosticData>
get() {
val collection_reports = getEntityData().reports
if (collection_reports !is MutableWorkspaceList) return collection_reports
if (diff == null || modifiable.get()) {
collection_reports.setModificationUpdateAction(reportsUpdater)
} else {
collection_reports.cleanModificationUpdateAction()
}
return collection_reports
}
set(value) {
checkModificationAllowed()
getEntityData(true).reports = value
reportsUpdater.invoke(value)
}
override fun getEntityClass(): Class<KotlinScriptEntity> = KotlinScriptEntity::class.java
}
}
@OptIn(WorkspaceEntityInternalApi::class)
internal class KotlinScriptEntityData : WorkspaceEntityData<KotlinScriptEntity>(), SoftLinkable{
lateinit var virtualFileUrl: VirtualFileUrl
lateinit var dependencies: MutableList<KotlinScriptLibraryEntityId>
var configuration: ScriptCompilationConfigurationEntity? = null
var sdkId: SdkId? = null
var relatedModuleIds: MutableList<ModuleId> = listOf<ModuleId>().toMutableWorkspaceList()
var reports: MutableList<ScriptDiagnosticData> = listOf<ScriptDiagnosticData>().toMutableWorkspaceList()
internal class KotlinScriptEntityData : WorkspaceEntityData<KotlinScriptEntity>(), SoftLinkable {
lateinit var virtualFileUrl: VirtualFileUrl
lateinit var dependencies: MutableList<KotlinScriptLibraryEntityId>
var configuration: ScriptCompilationConfigurationEntity? = null
var sdkId: SdkId? = null
var relatedModuleIds: MutableList<ModuleId> = listOf<ModuleId>().toMutableWorkspaceList()
var reports: MutableList<ScriptDiagnosticData> = listOf<ScriptDiagnosticData>().toMutableWorkspaceList()
internal fun isVirtualFileUrlInitialized(): Boolean = ::virtualFileUrl.isInitialized
internal fun isDependenciesInitialized(): Boolean = ::dependencies.isInitialized
internal fun isVirtualFileUrlInitialized(): Boolean = ::virtualFileUrl.isInitialized
internal fun isDependenciesInitialized(): Boolean = ::dependencies.isInitialized
override fun getLinks(): Set<SymbolicEntityId<*>>{
val result = HashSet<SymbolicEntityId<*>>()
for (item in dependencies){
result.add(item)
}
val optionalLink_sdkId = sdkId
if (optionalLink_sdkId != null){
result.add(optionalLink_sdkId)
}
for (item in relatedModuleIds){
result.add(item)
}
for (item in reports){
}
return result
}
override fun getLinks(): Set<SymbolicEntityId<*>> {
val result = HashSet<SymbolicEntityId<*>>()
for (item in dependencies) {
result.add(item)
}
val optionalLink_sdkId = sdkId
if (optionalLink_sdkId != null) {
result.add(optionalLink_sdkId)
}
for (item in relatedModuleIds) {
result.add(item)
}
for (item in reports) {
}
return result
}
override fun index(index: WorkspaceMutableIndex<SymbolicEntityId<*>>){
for (item in dependencies){
index.index(this, item)
}
val optionalLink_sdkId = sdkId
if (optionalLink_sdkId != null){
index.index(this, optionalLink_sdkId)
}
for (item in relatedModuleIds){
index.index(this, item)
}
for (item in reports){
}
}
override fun index(index: WorkspaceMutableIndex<SymbolicEntityId<*>>) {
for (item in dependencies) {
index.index(this, item)
}
val optionalLink_sdkId = sdkId
if (optionalLink_sdkId != null) {
index.index(this, optionalLink_sdkId)
}
for (item in relatedModuleIds) {
index.index(this, item)
}
for (item in reports) {
}
}
override fun updateLinksIndex(prev: Set<SymbolicEntityId<*>>, index: WorkspaceMutableIndex<SymbolicEntityId<*>>){
override fun updateLinksIndex(prev: Set<SymbolicEntityId<*>>, index: WorkspaceMutableIndex<SymbolicEntityId<*>>) {
// TODO verify logic
val mutablePreviousSet = HashSet(prev)
for (item in dependencies){
val removedItem_item = mutablePreviousSet.remove(item)
if (!removedItem_item){
index.index(this, item)
}
}
val optionalLink_sdkId = sdkId
if (optionalLink_sdkId != null){
val removedItem_optionalLink_sdkId = mutablePreviousSet.remove(optionalLink_sdkId)
if (!removedItem_optionalLink_sdkId){
index.index(this, optionalLink_sdkId)
}
}
for (item in relatedModuleIds){
val removedItem_item = mutablePreviousSet.remove(item)
if (!removedItem_item){
index.index(this, item)
}
}
for (item in reports){
}
for (removed in mutablePreviousSet){
index.remove(this, removed)
}
}
val mutablePreviousSet = HashSet(prev)
for (item in dependencies) {
val removedItem_item = mutablePreviousSet.remove(item)
if (!removedItem_item) {
index.index(this, item)
}
}
val optionalLink_sdkId = sdkId
if (optionalLink_sdkId != null) {
val removedItem_optionalLink_sdkId = mutablePreviousSet.remove(optionalLink_sdkId)
if (!removedItem_optionalLink_sdkId) {
index.index(this, optionalLink_sdkId)
}
}
for (item in relatedModuleIds) {
val removedItem_item = mutablePreviousSet.remove(item)
if (!removedItem_item) {
index.index(this, item)
}
}
for (item in reports) {
}
for (removed in mutablePreviousSet) {
index.remove(this, removed)
}
}
override fun updateLink(oldLink: SymbolicEntityId<*>, newLink: SymbolicEntityId<*>): Boolean{
var changed = false
val dependencies_data = dependencies.map{
val it_data = if (it == oldLink){
changed = true
newLink as KotlinScriptLibraryEntityId
}
else{
null
}
if (it_data != null){
it_data
}
else{
it
}
}
if (dependencies_data != null){
dependencies = dependencies_data as MutableList<KotlinScriptLibraryEntityId>
}
var sdkId_data_optional = if (sdkId != null){
val sdkId___data = if (sdkId!! == oldLink){
changed = true
newLink as SdkId
}
else{
null
}
sdkId___data
}
else{
null
}
if (sdkId_data_optional != null){
sdkId = sdkId_data_optional
}
val relatedModuleIds_data = relatedModuleIds.map{
val it_data = if (it == oldLink){
changed = true
newLink as ModuleId
}
else{
null
}
if (it_data != null){
it_data
}
else{
it
}
}
if (relatedModuleIds_data != null){
relatedModuleIds = relatedModuleIds_data as MutableList<ModuleId>
}
return changed
}
override fun updateLink(oldLink: SymbolicEntityId<*>, newLink: SymbolicEntityId<*>): Boolean {
var changed = false
val dependencies_data = dependencies.map {
val it_data = if (it == oldLink) {
changed = true
newLink as KotlinScriptLibraryEntityId
} else {
null
}
if (it_data != null) {
it_data
} else {
it
}
}
if (dependencies_data != null) {
dependencies = dependencies_data as MutableList<KotlinScriptLibraryEntityId>
}
var sdkId_data_optional = if (sdkId != null) {
val sdkId___data = if (sdkId!! == oldLink) {
changed = true
newLink as SdkId
} else {
null
}
sdkId___data
} else {
null
}
if (sdkId_data_optional != null) {
sdkId = sdkId_data_optional
}
val relatedModuleIds_data = relatedModuleIds.map {
val it_data = if (it == oldLink) {
changed = true
newLink as ModuleId
} else {
null
}
if (it_data != null) {
it_data
} else {
it
}
}
if (relatedModuleIds_data != null) {
relatedModuleIds = relatedModuleIds_data as MutableList<ModuleId>
}
return changed
}
override fun wrapAsModifiable(diff: MutableEntityStorage): WorkspaceEntityBuilder<KotlinScriptEntity>{
val modifiable = KotlinScriptEntityImpl.Builder(null)
modifiable.diff = diff
modifiable.id = createEntityId()
return modifiable
}
override fun wrapAsModifiable(diff: MutableEntityStorage): WorkspaceEntityBuilder<KotlinScriptEntity> {
val modifiable = KotlinScriptEntityImpl.Builder(null)
modifiable.diff = diff
modifiable.id = createEntityId()
return modifiable
}
@OptIn(EntityStorageInstrumentationApi::class)
override fun createEntity(snapshot: EntityStorageInstrumentation): KotlinScriptEntity{
val entityId = createEntityId()
return snapshot.initializeEntity(entityId){
val entity = KotlinScriptEntityImpl(this)
entity.snapshot = snapshot
entity.id = entityId
entity
}
}
@OptIn(EntityStorageInstrumentationApi::class)
override fun createEntity(snapshot: EntityStorageInstrumentation): KotlinScriptEntity {
val entityId = createEntityId()
return snapshot.initializeEntity(entityId) {
val entity = KotlinScriptEntityImpl(this)
entity.snapshot = snapshot
entity.id = entityId
entity
}
}
override fun getMetadata(): EntityMetadata{
return MetadataStorageImpl.getMetadataByTypeFqn("org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntity") as EntityMetadata
}
override fun getMetadata(): EntityMetadata {
return MetadataStorageImpl.getMetadataByTypeFqn("org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntity") as EntityMetadata
}
override fun clone(): KotlinScriptEntityData{
val clonedEntity = super.clone()
clonedEntity as KotlinScriptEntityData
clonedEntity.dependencies = clonedEntity.dependencies.toMutableWorkspaceList()
clonedEntity.relatedModuleIds = clonedEntity.relatedModuleIds.toMutableWorkspaceList()
clonedEntity.reports = clonedEntity.reports.toMutableWorkspaceList()
return clonedEntity
}
override fun clone(): KotlinScriptEntityData {
val clonedEntity = super.clone()
clonedEntity as KotlinScriptEntityData
clonedEntity.dependencies = clonedEntity.dependencies.toMutableWorkspaceList()
clonedEntity.relatedModuleIds = clonedEntity.relatedModuleIds.toMutableWorkspaceList()
clonedEntity.reports = clonedEntity.reports.toMutableWorkspaceList()
return clonedEntity
}
override fun getEntityInterface(): Class<out WorkspaceEntity>{
return KotlinScriptEntity::class.java
}
override fun getEntityInterface(): Class<out WorkspaceEntity> {
return KotlinScriptEntity::class.java
}
override fun createDetachedEntity(parents: List<WorkspaceEntityBuilder<*>>): WorkspaceEntityBuilder<*>{
return KotlinScriptEntity(virtualFileUrl, dependencies, entitySource){
this.configuration = this@KotlinScriptEntityData.configuration
this.sdkId = this@KotlinScriptEntityData.sdkId
this.relatedModuleIds = this@KotlinScriptEntityData.relatedModuleIds.toMutableWorkspaceList()
this.reports = this@KotlinScriptEntityData.reports.toMutableWorkspaceList()
}
}
override fun createDetachedEntity(parents: List<WorkspaceEntityBuilder<*>>): WorkspaceEntityBuilder<*> {
return KotlinScriptEntity(virtualFileUrl, dependencies, entitySource) {
this.configuration = this@KotlinScriptEntityData.configuration
this.sdkId = this@KotlinScriptEntityData.sdkId
this.relatedModuleIds = this@KotlinScriptEntityData.relatedModuleIds.toMutableWorkspaceList()
this.reports = this@KotlinScriptEntityData.reports.toMutableWorkspaceList()
}
}
override fun getRequiredParents(): List<Class<out WorkspaceEntity>>{
val res = mutableListOf<Class<out WorkspaceEntity>>()
return res
}
override fun getRequiredParents(): List<Class<out WorkspaceEntity>> {
val res = mutableListOf<Class<out WorkspaceEntity>>()
return res
}
override fun equals(other: Any?): Boolean{
if (other == null) return false
if (this.javaClass != other.javaClass) return false
other as KotlinScriptEntityData
if (this.entitySource != other.entitySource) return false
if (this.virtualFileUrl != other.virtualFileUrl) return false
if (this.dependencies != other.dependencies) return false
if (this.configuration != other.configuration) return false
if (this.sdkId != other.sdkId) return false
if (this.relatedModuleIds != other.relatedModuleIds) return false
if (this.reports != other.reports) return false
return true
}
override fun equals(other: Any?): Boolean {
if (other == null) return false
if (this.javaClass != other.javaClass) return false
other as KotlinScriptEntityData
if (this.entitySource != other.entitySource) return false
if (this.virtualFileUrl != other.virtualFileUrl) return false
if (this.dependencies != other.dependencies) return false
if (this.configuration != other.configuration) return false
if (this.sdkId != other.sdkId) return false
if (this.relatedModuleIds != other.relatedModuleIds) return false
if (this.reports != other.reports) return false
return true
}
override fun equalsIgnoringEntitySource(other: Any?): Boolean{
if (other == null) return false
if (this.javaClass != other.javaClass) return false
other as KotlinScriptEntityData
if (this.virtualFileUrl != other.virtualFileUrl) return false
if (this.dependencies != other.dependencies) return false
if (this.configuration != other.configuration) return false
if (this.sdkId != other.sdkId) return false
if (this.relatedModuleIds != other.relatedModuleIds) return false
if (this.reports != other.reports) return false
return true
}
override fun equalsIgnoringEntitySource(other: Any?): Boolean {
if (other == null) return false
if (this.javaClass != other.javaClass) return false
other as KotlinScriptEntityData
if (this.virtualFileUrl != other.virtualFileUrl) return false
if (this.dependencies != other.dependencies) return false
if (this.configuration != other.configuration) return false
if (this.sdkId != other.sdkId) return false
if (this.relatedModuleIds != other.relatedModuleIds) return false
if (this.reports != other.reports) return false
return true
}
override fun hashCode(): Int{
var result = entitySource.hashCode()
result = 31 * result + virtualFileUrl.hashCode()
result = 31 * result + dependencies.hashCode()
result = 31 * result + configuration.hashCode()
result = 31 * result + sdkId.hashCode()
result = 31 * result + relatedModuleIds.hashCode()
result = 31 * result + reports.hashCode()
return result
}
override fun hashCodeIgnoringEntitySource(): Int{
var result = javaClass.hashCode()
result = 31 * result + virtualFileUrl.hashCode()
result = 31 * result + dependencies.hashCode()
result = 31 * result + configuration.hashCode()
result = 31 * result + sdkId.hashCode()
result = 31 * result + relatedModuleIds.hashCode()
result = 31 * result + reports.hashCode()
return result
}
override fun hashCode(): Int {
var result = entitySource.hashCode()
result = 31 * result + virtualFileUrl.hashCode()
result = 31 * result + dependencies.hashCode()
result = 31 * result + configuration.hashCode()
result = 31 * result + sdkId.hashCode()
result = 31 * result + relatedModuleIds.hashCode()
result = 31 * result + reports.hashCode()
return result
}
override fun hashCodeIgnoringEntitySource(): Int {
var result = javaClass.hashCode()
result = 31 * result + virtualFileUrl.hashCode()
result = 31 * result + dependencies.hashCode()
result = 31 * result + configuration.hashCode()
result = 31 * result + sdkId.hashCode()
result = 31 * result + relatedModuleIds.hashCode()
result = 31 * result + reports.hashCode()
return result
}
}
@@ -1,13 +1,14 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.core.script.k2.modules.impl
import com.intellij.openapi.util.NlsSafe
import com.intellij.platform.workspace.storage.*
import com.intellij.platform.workspace.storage.impl.ModifiableWorkspaceEntityBase
import com.intellij.platform.workspace.storage.impl.WorkspaceEntityBase
import com.intellij.platform.workspace.storage.impl.WorkspaceEntityData
import com.intellij.platform.workspace.storage.impl.containers.MutableWorkspaceList
import com.intellij.platform.workspace.storage.impl.containers.MutableWorkspaceSet
import com.intellij.platform.workspace.storage.impl.containers.toMutableWorkspaceList
import com.intellij.platform.workspace.storage.impl.containers.toMutableWorkspaceSet
import com.intellij.platform.workspace.storage.instrumentation.EntityStorageInstrumentation
import com.intellij.platform.workspace.storage.instrumentation.EntityStorageInstrumentationApi
import com.intellij.platform.workspace.storage.metadata.model.EntityMetadata
@@ -19,234 +20,276 @@ import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptLibraryEntit
@GeneratedCodeApiVersion(3)
@GeneratedCodeImplVersion(7)
@OptIn(WorkspaceEntityInternalApi::class)
internal class KotlinScriptLibraryEntityImpl(private val dataSource: KotlinScriptLibraryEntityData): KotlinScriptLibraryEntity, WorkspaceEntityBase(dataSource) {
internal class KotlinScriptLibraryEntityImpl(private val dataSource: KotlinScriptLibraryEntityData) : KotlinScriptLibraryEntity,
WorkspaceEntityBase(dataSource) {
private companion object {
private companion object {
private val connections = listOf<ConnectionId>()
private val connections = listOf<ConnectionId>()
}
override val symbolicId: KotlinScriptLibraryEntityId = super.symbolicId
}
override val classes: List<VirtualFileUrl>
get() {
readField("classes")
return dataSource.classes
}
override val sources: List<VirtualFileUrl>
get() {
readField("sources")
return dataSource.sources
}
override val symbolicId: KotlinScriptLibraryEntityId = super.symbolicId
override val entitySource: EntitySource
get() {
readField("entitySource")
return dataSource.entitySource
}
override val classes: List<VirtualFileUrl>
get() {
readField("classes")
return dataSource.classes
}
override val usedInScripts: Set<VirtualFileUrl>
get() {
readField("usedInScripts")
return dataSource.usedInScripts
}
override var sources: Set<VirtualFileUrl> = dataSource.sources
override fun connectionIdList(): List<ConnectionId> {
return connections
}
override val entitySource: EntitySource
get() {
readField("entitySource")
return dataSource.entitySource
}
override fun connectionIdList(): List<ConnectionId> {
return connections
}
internal class Builder(result: KotlinScriptLibraryEntityData?): ModifiableWorkspaceEntityBase<KotlinScriptLibraryEntity, KotlinScriptLibraryEntityData>(result), KotlinScriptLibraryEntityBuilder {
internal constructor(): this(KotlinScriptLibraryEntityData())
internal class Builder(result: KotlinScriptLibraryEntityData?) :
ModifiableWorkspaceEntityBase<KotlinScriptLibraryEntity, KotlinScriptLibraryEntityData>(result), KotlinScriptLibraryEntityBuilder {
internal constructor() : this(KotlinScriptLibraryEntityData())
override fun applyToBuilder(builder: MutableEntityStorage){
if (this.diff != null){
if (existsInBuilder(builder)){
this.diff = builder
return
}
else{
error("Entity KotlinScriptLibraryEntity is already created in a different builder")
}
}
this.diff = builder
addToBuilder()
this.id = getEntityData().createEntityId()
override fun applyToBuilder(builder: MutableEntityStorage) {
if (this.diff != null) {
if (existsInBuilder(builder)) {
this.diff = builder
return
} else {
error("Entity KotlinScriptLibraryEntity is already created in a different builder")
}
}
this.diff = builder
addToBuilder()
this.id = getEntityData().createEntityId()
// After adding entity data to the builder, we need to unbind it and move the control over entity data to builder
// Builder may switch to snapshot at any moment and lock entity data to modification
this.currentEntityData = null
index(this, "classes", this.classes)
index(this, "sources", this.sources)
this.currentEntityData = null
index(this, "classes", this.classes)
index(this, "usedInScripts", this.usedInScripts)
index(this, "sources", this.sources)
// Process linked entities that are connected without a builder
processLinkedEntities(builder)
checkInitialization() // TODO uncomment and check failed tests
}
processLinkedEntities(builder)
checkInitialization() // TODO uncomment and check failed tests
}
private fun checkInitialization(){
val _diff = diff
if (!getEntityData().isEntitySourceInitialized()){
error("Field WorkspaceEntity#entitySource should be initialized")
}
if (!getEntityData().isClassesInitialized()){
error("Field KotlinScriptLibraryEntity#classes should be initialized")
}
if (!getEntityData().isSourcesInitialized()){
error("Field KotlinScriptLibraryEntity#sources should be initialized")
}
}
override fun connectionIdList(): List<ConnectionId>{
return connections
}
override fun afterModification(){
val collection_classes = getEntityData().classes
if (collection_classes is MutableWorkspaceList<*>){
collection_classes.cleanModificationUpdateAction()
}
val collection_sources = getEntityData().sources
if (collection_sources is MutableWorkspaceList<*>){
collection_sources.cleanModificationUpdateAction()
}
}
// Relabeling code, move information from dataSource to this builder
override fun relabel(dataSource: WorkspaceEntity, parents: Set<WorkspaceEntity>?){
dataSource as KotlinScriptLibraryEntity
if (this.entitySource != dataSource.entitySource) this.entitySource = dataSource.entitySource
if (this.classes != dataSource.classes) this.classes = dataSource.classes.toMutableList()
if (this.sources != dataSource.sources) this.sources = dataSource.sources.toMutableList()
updateChildToParentReferences(parents)
}
private fun checkInitialization() {
val _diff = diff
if (!getEntityData().isEntitySourceInitialized()) {
error("Field WorkspaceEntity#entitySource should be initialized")
}
if (!getEntityData().isClassesInitialized()) {
error("Field KotlinScriptLibraryEntity#classes should be initialized")
}
if (!getEntityData().isUsedInScriptsInitialized()) {
error("Field KotlinScriptLibraryEntity#usedInScripts should be initialized")
}
}
override var entitySource: EntitySource
get() = getEntityData().entitySource
set(value) {
checkModificationAllowed()
getEntityData(true).entitySource = value
changedProperty.add("entitySource")
override fun connectionIdList(): List<ConnectionId> {
return connections
}
}
override fun afterModification() {
val collection_classes = getEntityData().classes
if (collection_classes is MutableWorkspaceList<*>) {
collection_classes.cleanModificationUpdateAction()
}
val collection_usedInScripts = getEntityData().usedInScripts
if (collection_usedInScripts is MutableWorkspaceSet<*>) {
collection_usedInScripts.cleanModificationUpdateAction()
}
val collection_sources = getEntityData().sources
if (collection_sources is MutableWorkspaceSet<*>) {
collection_sources.cleanModificationUpdateAction()
}
}
// Relabeling code, move information from dataSource to this builder
override fun relabel(dataSource: WorkspaceEntity, parents: Set<WorkspaceEntity>?) {
dataSource as KotlinScriptLibraryEntity
if (this.entitySource != dataSource.entitySource) this.entitySource = dataSource.entitySource
if (this.classes != dataSource.classes) this.classes = dataSource.classes.toMutableList()
if (this.usedInScripts != dataSource.usedInScripts) this.usedInScripts = dataSource.usedInScripts.toMutableSet()
if (this.sources != dataSource.sources) this.sources = dataSource.sources.toMutableSet()
updateChildToParentReferences(parents)
}
override var entitySource: EntitySource
get() = getEntityData().entitySource
set(value) {
checkModificationAllowed()
getEntityData(true).entitySource = value
changedProperty.add("entitySource")
}
private val classesUpdater: (value: List<VirtualFileUrl>) -> Unit = { value ->
val _diff = diff
if (_diff != null) index(this, "classes", value)
changedProperty.add("classes")
val _diff = diff
if (_diff != null) index(this, "classes", value)
changedProperty.add("classes")
}
override var classes: MutableList<VirtualFileUrl>
get() {
val collection_classes = getEntityData().classes
if (collection_classes !is MutableWorkspaceList) return collection_classes
if (diff == null || modifiable.get()) {
collection_classes.setModificationUpdateAction(classesUpdater)
} else {
collection_classes.cleanModificationUpdateAction()
get() {
val collection_classes = getEntityData().classes
if (collection_classes !is MutableWorkspaceList) return collection_classes
if (diff == null || modifiable.get()) {
collection_classes.setModificationUpdateAction(classesUpdater)
} else {
collection_classes.cleanModificationUpdateAction()
}
return collection_classes
}
set(value) {
checkModificationAllowed()
getEntityData(true).classes = value
classesUpdater.invoke(value)
}
private val usedInScriptsUpdater: (value: Set<VirtualFileUrl>) -> Unit = { value ->
val _diff = diff
if (_diff != null) index(this, "usedInScripts", value)
changedProperty.add("usedInScripts")
}
return collection_classes
}
set(value) {
checkModificationAllowed()
getEntityData(true).classes = value
classesUpdater.invoke(value)
}
private val sourcesUpdater: (value: List<VirtualFileUrl>) -> Unit = { value ->
val _diff = diff
if (_diff != null) index(this, "sources", value)
changedProperty.add("sources")
}
override var sources: MutableList<VirtualFileUrl>
get() {
val collection_sources = getEntityData().sources
if (collection_sources !is MutableWorkspaceList) return collection_sources
if (diff == null || modifiable.get()) {
collection_sources.setModificationUpdateAction(sourcesUpdater)
} else {
collection_sources.cleanModificationUpdateAction()
}
return collection_sources
}
set(value) {
checkModificationAllowed()
getEntityData(true).sources = value
sourcesUpdater.invoke(value)
override var usedInScripts: MutableSet<VirtualFileUrl>
get() {
val collection_usedInScripts = getEntityData().usedInScripts
if (collection_usedInScripts !is MutableWorkspaceSet) return collection_usedInScripts
if (diff == null || modifiable.get()) {
collection_usedInScripts.setModificationUpdateAction(usedInScriptsUpdater)
} else {
collection_usedInScripts.cleanModificationUpdateAction()
}
return collection_usedInScripts
}
set(value) {
checkModificationAllowed()
getEntityData(true).usedInScripts = value
usedInScriptsUpdater.invoke(value)
}
private val sourcesUpdater: (value: Set<VirtualFileUrl>) -> Unit = { value ->
val _diff = diff
if (_diff != null) index(this, "sources", value)
changedProperty.add("sources")
}
override var sources: MutableSet<VirtualFileUrl>
get() {
val collection_sources = getEntityData().sources
if (collection_sources !is MutableWorkspaceSet) return collection_sources
if (diff == null || modifiable.get()) {
collection_sources.setModificationUpdateAction(sourcesUpdater)
} else {
collection_sources.cleanModificationUpdateAction()
}
return collection_sources
}
set(value) {
checkModificationAllowed()
getEntityData(true).sources = value
sourcesUpdater.invoke(value)
}
override fun getEntityClass(): Class<KotlinScriptLibraryEntity> = KotlinScriptLibraryEntity::class.java
}
override fun getEntityClass(): Class<KotlinScriptLibraryEntity> = KotlinScriptLibraryEntity::class.java
}
}
@OptIn(WorkspaceEntityInternalApi::class)
internal class KotlinScriptLibraryEntityData : WorkspaceEntityData<KotlinScriptLibraryEntity>(){
lateinit var classes: MutableList<VirtualFileUrl>
lateinit var sources: MutableList<VirtualFileUrl>
internal class KotlinScriptLibraryEntityData : WorkspaceEntityData<KotlinScriptLibraryEntity>() {
lateinit var classes: MutableList<VirtualFileUrl>
lateinit var usedInScripts: MutableSet<VirtualFileUrl>
var sources: MutableSet<VirtualFileUrl> = setOf<VirtualFileUrl>().toMutableWorkspaceSet()
internal fun isClassesInitialized(): Boolean = ::classes.isInitialized
internal fun isSourcesInitialized(): Boolean = ::sources.isInitialized
internal fun isClassesInitialized(): Boolean = ::classes.isInitialized
internal fun isUsedInScriptsInitialized(): Boolean = ::usedInScripts.isInitialized
override fun wrapAsModifiable(diff: MutableEntityStorage): WorkspaceEntityBuilder<KotlinScriptLibraryEntity>{
val modifiable = KotlinScriptLibraryEntityImpl.Builder(null)
modifiable.diff = diff
modifiable.id = createEntityId()
return modifiable
}
override fun wrapAsModifiable(diff: MutableEntityStorage): WorkspaceEntityBuilder<KotlinScriptLibraryEntity> {
val modifiable = KotlinScriptLibraryEntityImpl.Builder(null)
modifiable.diff = diff
modifiable.id = createEntityId()
return modifiable
}
@OptIn(EntityStorageInstrumentationApi::class)
override fun createEntity(snapshot: EntityStorageInstrumentation): KotlinScriptLibraryEntity{
val entityId = createEntityId()
return snapshot.initializeEntity(entityId){
val entity = KotlinScriptLibraryEntityImpl(this)
entity.snapshot = snapshot
entity.id = entityId
entity
}
}
@OptIn(EntityStorageInstrumentationApi::class)
override fun createEntity(snapshot: EntityStorageInstrumentation): KotlinScriptLibraryEntity {
val entityId = createEntityId()
return snapshot.initializeEntity(entityId) {
val entity = KotlinScriptLibraryEntityImpl(this)
entity.snapshot = snapshot
entity.id = entityId
entity
}
}
override fun getMetadata(): EntityMetadata{
return MetadataStorageImpl.getMetadataByTypeFqn("org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptLibraryEntity") as EntityMetadata
}
override fun getMetadata(): EntityMetadata {
return MetadataStorageImpl.getMetadataByTypeFqn("org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptLibraryEntity") as EntityMetadata
}
override fun clone(): KotlinScriptLibraryEntityData{
val clonedEntity = super.clone()
clonedEntity as KotlinScriptLibraryEntityData
clonedEntity.classes = clonedEntity.classes.toMutableWorkspaceList()
clonedEntity.sources = clonedEntity.sources.toMutableWorkspaceList()
return clonedEntity
}
override fun clone(): KotlinScriptLibraryEntityData {
val clonedEntity = super.clone()
clonedEntity as KotlinScriptLibraryEntityData
clonedEntity.classes = clonedEntity.classes.toMutableWorkspaceList()
clonedEntity.usedInScripts = clonedEntity.usedInScripts.toMutableWorkspaceSet()
clonedEntity.sources = clonedEntity.sources.toMutableWorkspaceSet()
return clonedEntity
}
override fun getEntityInterface(): Class<out WorkspaceEntity>{
return KotlinScriptLibraryEntity::class.java
}
override fun getEntityInterface(): Class<out WorkspaceEntity> {
return KotlinScriptLibraryEntity::class.java
}
override fun createDetachedEntity(parents: List<WorkspaceEntityBuilder<*>>): WorkspaceEntityBuilder<*>{
return KotlinScriptLibraryEntity(classes, sources, entitySource)
}
override fun createDetachedEntity(parents: List<WorkspaceEntityBuilder<*>>): WorkspaceEntityBuilder<*> {
return KotlinScriptLibraryEntity(classes, usedInScripts, entitySource) {
this.sources = this@KotlinScriptLibraryEntityData.sources.toMutableWorkspaceSet()
}
}
override fun getRequiredParents(): List<Class<out WorkspaceEntity>>{
val res = mutableListOf<Class<out WorkspaceEntity>>()
return res
}
override fun getRequiredParents(): List<Class<out WorkspaceEntity>> {
val res = mutableListOf<Class<out WorkspaceEntity>>()
return res
}
override fun equals(other: Any?): Boolean{
if (other == null) return false
if (this.javaClass != other.javaClass) return false
other as KotlinScriptLibraryEntityData
if (this.entitySource != other.entitySource) return false
if (this.classes != other.classes) return false
if (this.sources != other.sources) return false
return true
}
override fun equals(other: Any?): Boolean {
if (other == null) return false
if (this.javaClass != other.javaClass) return false
other as KotlinScriptLibraryEntityData
if (this.entitySource != other.entitySource) return false
if (this.classes != other.classes) return false
if (this.usedInScripts != other.usedInScripts) return false
if (this.sources != other.sources) return false
return true
}
override fun equalsIgnoringEntitySource(other: Any?): Boolean{
if (other == null) return false
if (this.javaClass != other.javaClass) return false
other as KotlinScriptLibraryEntityData
if (this.classes != other.classes) return false
if (this.sources != other.sources) return false
return true
}
override fun equalsIgnoringEntitySource(other: Any?): Boolean {
if (other == null) return false
if (this.javaClass != other.javaClass) return false
other as KotlinScriptLibraryEntityData
if (this.classes != other.classes) return false
if (this.usedInScripts != other.usedInScripts) return false
if (this.sources != other.sources) return false
return true
}
override fun hashCode(): Int{
var result = entitySource.hashCode()
result = 31 * result + classes.hashCode()
result = 31 * result + sources.hashCode()
return result
}
override fun hashCodeIgnoringEntitySource(): Int{
var result = javaClass.hashCode()
result = 31 * result + classes.hashCode()
result = 31 * result + sources.hashCode()
return result
}
override fun hashCode(): Int {
var result = entitySource.hashCode()
result = 31 * result + classes.hashCode()
result = 31 * result + usedInScripts.hashCode()
result = 31 * result + sources.hashCode()
return result
}
override fun hashCodeIgnoringEntitySource(): Int {
var result = javaClass.hashCode()
result = 31 * result + classes.hashCode()
result = 31 * result + usedInScripts.hashCode()
result = 31 * result + sources.hashCode()
return result
}
}
@@ -1,4 +1,4 @@
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.core.script.k2.modules.impl
import com.intellij.platform.workspace.storage.WorkspaceEntityInternalApi
@@ -6,4 +6,4 @@ import com.intellij.platform.workspace.storage.metadata.MetadataStorageBridge
import org.jetbrains.kotlin.idea.core.script.k2.configurations.impl.MetadataStorageImpl
@OptIn(WorkspaceEntityInternalApi::class)
internal object MetadataStorageImpl: MetadataStorageBridge(MetadataStorageImpl)
internal object MetadataStorageImpl : MetadataStorageBridge(MetadataStorageImpl)
@@ -16,6 +16,7 @@ import com.intellij.platform.backend.workspace.workspaceModel
import com.intellij.platform.workspace.storage.toBuilder
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntity
import org.jetbrains.kotlin.idea.core.script.v1.ScriptDependenciesModificationTracker
import org.jetbrains.kotlin.scripting.definitions.isNonScript
@@ -51,7 +52,7 @@ class KotlinScriptModuleManager(private val project: Project, private val corout
val fileUrlManager = project.workspaceModel.getVirtualFileUrlManager()
val modulesToRemove = scripts.flatMap {
builder.getVirtualFileUrlIndex().findEntitiesByUrl(it.toVirtualFileUrl(fileUrlManager))
builder.getVirtualFileUrlIndex().findEntitiesByUrl(it.toVirtualFileUrl(fileUrlManager)).filterIsInstance<KotlinScriptEntity>()
}
if (modulesToRemove.isEmpty()) return
@@ -7,15 +7,19 @@ import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.platform.backend.workspace.workspaceModel
import com.intellij.platform.workspace.storage.EntitySource
import com.intellij.platform.workspace.storage.EntityStorage
import com.intellij.platform.workspace.storage.MutableEntityStorage
import com.intellij.platform.workspace.storage.toBuilder
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
import kotlinx.coroutines.CoroutineScope
import org.jetbrains.kotlin.idea.core.script.k2.asEntity
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntity
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntityProvider
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptLibraryEntity
import org.jetbrains.kotlin.idea.core.script.k2.modules.modifyKotlinScriptLibraryEntity
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
import org.jetbrains.kotlin.scripting.resolve.VirtualFileScriptSource
import org.jetbrains.kotlin.scripting.resolve.refineScriptCompilationConfiguration
@@ -27,15 +31,15 @@ import kotlin.script.experimental.jvm.jvm
@Service(Service.Level.PROJECT)
class DefaultKotlinScriptEntityProvider(
override val project: Project,
val coroutineScope: CoroutineScope
override val project: Project, val coroutineScope: CoroutineScope
) : KotlinScriptEntityProvider(project) {
override suspend fun updateWorkspaceModel(
virtualFile: VirtualFile,
definition: ScriptDefinition
virtualFile: VirtualFile, definition: ScriptDefinition
) {
val configuration = definition.getInitialConfiguration()
val scriptSource = VirtualFileScriptSource(virtualFile)
val scriptUrl = virtualFile.virtualFileUrl
if (project.workspaceModel.currentSnapshot.containsScriptEntity(scriptUrl)) return
val result = smartReadAction(project) {
try {
@@ -43,27 +47,33 @@ class DefaultKotlinScriptEntityProvider(
} catch (e: Throwable) {
ResultWithDiagnostics.Failure(
ScriptDiagnostic(
code = unspecifiedError,
exception = e,
message = "Failed to refine script",
sourcePath = scriptSource.locationId
code = unspecifiedError, exception = e, message = "Failed to refine script", sourcePath = scriptSource.locationId
)
)
}
}
fun MutableEntityStorage.updatedStorage() {
fun updateStorage(storage: MutableEntityStorage) {
val configuration = result.valueOrNull()?.configuration ?: return
val definition = findScriptDefinition(project, VirtualFileScriptSource(virtualFile))
val libraryIds = generateScriptLibraryEntities(configuration, definition, project)
libraryIds.filterNot {
this.contains(it)
}.forEach { (classes, sources) ->
this addEntity KotlinScriptLibraryEntity(classes, sources, DefaultScriptEntitySource)
val libraryIds = generateScriptLibraryEntities(project, configuration, definition).toList()
for ((id, sources) in libraryIds) {
val existingLibrary = storage.resolve(id)
if (existingLibrary == null) {
storage addEntity KotlinScriptLibraryEntity(id.classes, setOf(scriptUrl), DefaultScriptEntitySource) {
this.sources += sources
}
} else {
storage.modifyKotlinScriptLibraryEntity(existingLibrary) {
this.sources += sources
this.usedInScripts += scriptUrl
}
}
}
this addEntity KotlinScriptEntity(
virtualFile.virtualFileUrl, libraryIds.toList(), DefaultScriptEntitySource
storage addEntity KotlinScriptEntity(
scriptUrl, libraryIds.map { it.first }, DefaultScriptEntitySource
) {
this.configuration = configuration.asEntity()
this.sdkId = configuration.sdkId
@@ -71,10 +81,8 @@ class DefaultKotlinScriptEntityProvider(
}
project.updateKotlinScriptEntities(DefaultScriptEntitySource) {
val builder = it.toSnapshot().toBuilder()
if (builder.getVirtualFileUrlIndex().findEntitiesByUrl(virtualFile.virtualFileUrl).none()) {
builder.updatedStorage()
it.applyChangesFrom(builder)
if (!it.containsScriptEntity(scriptUrl)) {
updateStorage(it)
}
}
@@ -101,4 +109,8 @@ class DefaultKotlinScriptEntityProvider(
}
}
private fun EntityStorage.containsScriptEntity(url: VirtualFileUrl) = getVirtualFileUrlIndex()
.findEntitiesByUrl(url)
.filterIsInstance<KotlinScriptEntity>().any()
object DefaultScriptEntitySource : EntitySource
@@ -21,11 +21,13 @@ import org.jetbrains.kotlin.idea.core.script.k2.highlighting.KotlinScriptResolut
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntity
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptEntityProvider
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptLibraryEntity
import org.jetbrains.kotlin.idea.core.script.k2.modules.modifyKotlinScriptLibraryEntity
import org.jetbrains.kotlin.idea.core.script.shared.KotlinBaseScriptingBundle
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
import org.jetbrains.kotlin.scripting.definitions.isNonScript
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationResult
import org.jetbrains.kotlin.scripting.resolve.ScriptReportSink
import org.jetbrains.kotlin.scripting.resolve.VirtualFileScriptSource
import org.jetbrains.kotlin.scripting.resolve.refineScriptCompilationConfiguration
import java.io.File
@@ -56,6 +58,7 @@ class MainKtsEntityProvider(
virtualFile: VirtualFile,
definition: ScriptDefinition
) {
val scriptUrl = virtualFile.virtualFileUrl
val mainKtsConfiguration = resolveMainKtsConfiguration(virtualFile, definition)
val scriptsToResolve = mainKtsConfiguration.importedScripts - visitedScripts.keys()
if (scriptsToResolve.isNotEmpty()) {
@@ -63,19 +66,31 @@ class MainKtsEntityProvider(
KotlinScriptResolutionService.getInstance(project).process(scriptsToResolve)
}
fun MutableEntityStorage.updatedStorage() {
fun updateStorage(storage: MutableEntityStorage) {
val configuration = mainKtsConfiguration.valueOrNull()?.configuration ?: return
val definition = findScriptDefinition(project, VirtualFileScriptSource(virtualFile))
val libraryIds = generateScriptLibraryEntities(configuration, definition, project)
libraryIds.filterNot {
this.contains(it)
}.forEach { (classes, sources) ->
this addEntity KotlinScriptLibraryEntity(classes, sources, MainKtsKotlinScriptEntitySource)
val libraryIds = generateScriptLibraryEntities(project, configuration, definition).toList()
for ((id, sources) in libraryIds) {
val existingLibrary = storage.resolve(id)
if (existingLibrary == null) {
storage addEntity KotlinScriptLibraryEntity(
classes = id.classes,
usedInScripts = setOf(scriptUrl),
entitySource = MainKtsKotlinScriptEntitySource
) {
this.sources += sources
}
} else {
storage.modifyKotlinScriptLibraryEntity(existingLibrary) {
this.sources += sources
this.usedInScripts += scriptUrl
}
}
}
this addEntity KotlinScriptEntity(
virtualFile.virtualFileUrl, libraryIds.toList(), MainKtsKotlinScriptEntitySource
storage addEntity KotlinScriptEntity(
scriptUrl, libraryIds.map { it.first }, MainKtsKotlinScriptEntitySource
) {
this.configuration = configuration.asEntity()
this.sdkId = configuration.sdkId
@@ -84,11 +99,13 @@ class MainKtsEntityProvider(
project.updateKotlinScriptEntities(MainKtsKotlinScriptEntitySource) {
val builder = it.toSnapshot().toBuilder()
if (builder.getVirtualFileUrlIndex().findEntitiesByUrl(virtualFile.virtualFileUrl).none()) {
builder.updatedStorage()
if (builder.getVirtualFileUrlIndex().findEntitiesByUrl(scriptUrl).none()) {
updateStorage(builder)
it.applyChangesFrom(builder)
}
}
project.service<ScriptReportSink>().attachReports(virtualFile, mainKtsConfiguration.reports)
}
private suspend fun resolveMainKtsConfiguration(
@@ -3,45 +3,49 @@ package org.jetbrains.kotlin.idea.core.script.k2.configurations
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.io.FileUtil
import com.intellij.platform.backend.workspace.WorkspaceModel
import com.intellij.platform.backend.workspace.workspaceModel
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
import com.intellij.platform.workspace.storage.url.VirtualFileUrlManager
import com.intellij.util.io.URLUtil
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.idea.core.script.k2.modules.KotlinScriptLibraryEntityId
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
import kotlin.collections.orEmpty
import kotlin.script.experimental.api.*
import kotlin.script.experimental.jvm.JvmDependency
import kotlin.script.experimental.util.PropertiesCollection
/**
* Generates a sequence of script library entities based on the provided script compilation configuration,
* script definition, and project. The method determines dependencies and resolves them into a sequence of
* library entities and associated source files URLs.
*
* @param configuration the script compilation configuration containing dependency information.
* @param definition the script definition providing additional compilation configuration details.
* @param project the current project within which the script library entities are generated.
* @return a sequence of pairs, where each pair contains a KotlinScriptLibraryEntityId and a list of associated
* source files URLs for the library entity.
*/
fun generateScriptLibraryEntities(
project: Project,
configuration: ScriptCompilationConfiguration,
definition: ScriptDefinition,
project: Project
): Sequence<KotlinScriptLibraryEntityId> = sequence {
definition: ScriptDefinition
): Sequence<Pair<KotlinScriptLibraryEntityId, List<VirtualFileUrl>>> = sequence {
val virtualFileUrlManager = project.workspaceModel.getVirtualFileUrlManager()
val classes = configuration.getOrEmpty(ScriptCompilationConfiguration.dependencies)
.toVirtualFileUrls(virtualFileUrlManager)
.toList()
val (classes, sources) = configuration.getDependencyUrls(virtualFileUrlManager)
if (configuration.isUberDependencyAllowed()) {
val sources = configuration.getOrEmpty(ScriptCompilationConfiguration.ide.dependenciesSources)
.toVirtualFileUrls(virtualFileUrlManager)
.toList()
yield(KotlinScriptLibraryEntityId(classes, sources))
val isUberDependencyAllowed = classes.size + sources.size <= 20
if (isUberDependencyAllowed) {
yield(KotlinScriptLibraryEntityId(classes) to sources)
} else {
val definitionLibraryId = createDefinitionLibraryId(definition, project)
yield(definitionLibraryId)
val (definitionClasses, definitionSources) = definition.compilationConfiguration.getDependencyUrls(virtualFileUrlManager)
yield(KotlinScriptLibraryEntityId(definitionClasses) to definitionSources)
val definitionLibraryRoots = definitionLibraryId.classes.toSet()
val definitionLibraryRoots = definitionClasses.toSet()
for (url in classes) {
if (definitionLibraryRoots.contains(url)) continue
yield(KotlinScriptLibraryEntityId(url))
yield(KotlinScriptLibraryEntityId(url) to listOf())
}
}
}
@@ -55,30 +59,10 @@ fun String.toVirtualFileUrl(fileUrlManager: VirtualFileUrlManager): VirtualFileU
return fileUrlManager.getOrCreateFromUrl(url)
}
private fun ScriptCompilationConfiguration.isUberDependencyAllowed(): Boolean {
return getOrEmpty(ScriptCompilationConfiguration.dependencies).size + getOrEmpty(ScriptCompilationConfiguration.ide.dependenciesSources).size < 20
}
@ApiStatus.Internal
private fun createDefinitionLibraryId(definition: ScriptDefinition, project: Project): KotlinScriptLibraryEntityId {
val urlManager = WorkspaceModel.getInstance(project).getVirtualFileUrlManager()
val classes = definition.compilationConfiguration[ScriptCompilationConfiguration.dependencies].orEmpty()
.toVirtualFileUrls(urlManager)
private fun Iterable<ScriptDependency>.toVirtualFileUrls(urlManager: VirtualFileUrlManager): List<VirtualFileUrl> =
asSequence().filterIsInstance<JvmDependency>().flatMap { it.classpath }.map { it.path }.sorted().map { it.toVirtualFileUrl(urlManager) }
.toList()
val sources = definition.compilationConfiguration[ScriptCompilationConfiguration.ide.dependenciesSources].orEmpty()
.toVirtualFileUrls(urlManager)
.toList()
return KotlinScriptLibraryEntityId(classes, sources)
}
private fun Iterable<ScriptDependency>.toVirtualFileUrls(urlManager: VirtualFileUrlManager): Sequence<VirtualFileUrl> = asSequence()
.filterIsInstance<JvmDependency>()
.flatMap { it.classpath }
.map { it.path }
.sorted()
.map { it.toVirtualFileUrl(urlManager) }
private fun <T> PropertiesCollection.getOrEmpty(key: PropertiesCollection.Key<List<T>>): List<T> = get(key).orEmpty()
fun ScriptCompilationConfiguration.getDependencyUrls(manager: VirtualFileUrlManager): Pair<List<VirtualFileUrl>, List<VirtualFileUrl>> =
get(ScriptCompilationConfiguration.dependencies).orEmpty()
.toVirtualFileUrls(manager) to get(ScriptCompilationConfiguration.ide.dependenciesSources).orEmpty().toVirtualFileUrls(manager)
@@ -2,23 +2,30 @@
package org.jetbrains.kotlin.idea.core.script.k2.modules
import com.intellij.openapi.util.NlsSafe
import com.intellij.platform.workspace.jps.entities.ModuleId
import com.intellij.platform.workspace.storage.*
import com.intellij.platform.workspace.storage.annotations.Default
import com.intellij.platform.workspace.storage.impl.containers.toMutableWorkspaceList
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
interface KotlinScriptLibraryEntity : WorkspaceEntityWithSymbolicId {
val classes: List<VirtualFileUrl>
val sources: List<VirtualFileUrl>
val usedInScripts: Set<VirtualFileUrl>
@Suppress("RemoveExplicitTypeArguments")
val sources: Set<VirtualFileUrl>
@Default get() = setOf<VirtualFileUrl>()
override val symbolicId: KotlinScriptLibraryEntityId
get() = KotlinScriptLibraryEntityId(classes, sources)
get() = KotlinScriptLibraryEntityId(classes)
}
data class KotlinScriptLibraryEntityId(val classes: List<VirtualFileUrl>, val sources: List<VirtualFileUrl> = emptyList()) :
data class KotlinScriptLibraryEntityId(val classes: List<VirtualFileUrl>) :
SymbolicEntityId<KotlinScriptLibraryEntity> {
constructor(classUrl: VirtualFileUrl) : this(listOf(classUrl), emptyList())
constructor(classUrl: VirtualFileUrl) : this(listOf(classUrl))
override val presentableName: @NlsSafe String
get() = "classes=${classes.joinToString(prefix = "[", postfix = "]")}, sources=${sources.joinToString(prefix = "[", postfix = "]")}"
get() = "KotlinScriptLibraryEntityId(classes=$classes)"
override fun toString(): String = presentableName
}
@@ -16,7 +16,6 @@ import com.intellij.platform.workspace.jps.entities.ModuleId
import com.intellij.platform.workspace.storage.ImmutableEntityStorage
import com.intellij.platform.workspace.storage.MutableEntityStorage
import com.intellij.platform.workspace.storage.VersionedStorageChange
import com.intellij.platform.workspace.storage.toBuilder
import com.intellij.platform.workspace.storage.url.VirtualFileUrl
import com.intellij.platform.workspace.storage.url.VirtualFileUrlManager
import org.jetbrains.kotlin.gradle.scripting.k2.definition.withIdeKeys
@@ -59,10 +58,8 @@ class GradleKotlinScriptEntityProvider(override val project: Project) : KotlinSc
) {
val configuration = refineScriptCompilationConfiguration(VirtualFileScriptSource(virtualFile), definition, project)
val currentStorage = currentSnapshot.toBuilder()
project.updateKotlinScriptEntities(KotlinGradleScriptEntitySource) { storage ->
currentStorage.updateStorage(virtualFile, configuration, null)
storage.applyChangesFrom(currentStorage)
updateStorage(storage, virtualFile.virtualFileUrl, configuration, null)
}
}
@@ -108,7 +105,7 @@ class GradleKotlinScriptEntityProvider(override val project: Project) : KotlinSc
}.adjustByDefinition(definition)
val configurationResult = refineScriptCompilationConfiguration(sourceCode, definition, project, configuration)
storage.updateStorage(model.virtualFile, configurationResult, model.classpathModel)
updateStorage(storage, model.virtualFile.virtualFileUrl, configurationResult, model.classpathModel)
}
return storage.toSnapshot()
@@ -124,13 +121,14 @@ class GradleKotlinScriptEntityProvider(override val project: Project) : KotlinSc
}
}
private fun MutableEntityStorage.updateStorage(
virtualFile: VirtualFile,
private fun updateStorage(
storage: MutableEntityStorage,
scriptUrl: VirtualFileUrl,
configurationResult: ScriptCompilationConfigurationResult,
classpathModel: GradleBuildScriptClasspathModel?
) {
val configurationWrapper = configurationResult.valueOrNull() ?: return
if (getVirtualFileUrlIndex().findEntitiesByUrl(virtualFile.virtualFileUrl).any()) return
if (storage.getVirtualFileUrlIndex().findEntitiesByUrl(scriptUrl).filterIsInstance<KotlinScriptEntity>().any()) return
val classes =
configurationWrapper.dependenciesClassPath.sorted().map { it.path.toVirtualFileUrl(urlManager) }.toMutableSet()
@@ -138,48 +136,63 @@ class GradleKotlinScriptEntityProvider(override val project: Project) : KotlinSc
val dependencies = buildList {
addIfNotNull(
extractRootsByPredicate(classes, sources) {
extractRootsByPredicate(storage, scriptUrl, classes, sources) {
it.url.contains("kotlin-stdlib")
})
addIfNotNull(
extractRootsByPredicate(classes, sources) {
extractRootsByPredicate(storage, scriptUrl, classes, sources) {
it.url.contains("accessors")
})
addIfNotNull(
extractRootsByPredicate(classes, sources) {
extractRootsByPredicate(storage, scriptUrl, classes, sources) {
it.url.contains("kotlin-gradle-plugin")
})
if (indexSourceRootsEagerly() || AdvancedSettings.getBoolean("gradle.attach.scripts.dependencies.sources")) {
addAll(extractDependenciesWithSources(classes, sources))
addAll(extractDependenciesWithSources(
storage = storage,
scriptUrl = scriptUrl,
classes = classes,
sources = sources
))
groupSourcesByParent(sources)
addAll(
classes.map {
getOrCreateScriptLibrary(it, sources)
getOrCreateScriptLibrary(
storage = storage,
classUrl = it,
sources = sources,
scriptUrl = scriptUrl
)
})
} else {
addAll(
classes.map {
getOrCreateScriptLibrary(it)
getOrCreateScriptLibrary(
storage = storage,
classUrl = it,
scriptUrl = scriptUrl
)
})
}
}
this addEntity KotlinScriptEntity(
virtualFile.virtualFileUrl, dependencies, KotlinGradleScriptEntitySource
storage addEntity KotlinScriptEntity(
scriptUrl, dependencies, KotlinGradleScriptEntitySource
) {
this.configuration = configurationWrapper.configuration?.asEntity()
this.reports = configurationResult.reports.map(ScriptDiagnostic::map).toMutableList()
this.sdkId = configurationWrapper.configuration?.sdkId
this.relatedModuleIds = classpathModel?.let { getRelatedModules(it) }.orEmpty().toMutableList()
this.relatedModuleIds = classpathModel?.let { getRelatedModules(storage, it) }.orEmpty().toMutableList()
}
}
private fun MutableEntityStorage.getRelatedModules(classpathModel: GradleBuildScriptClasspathModel): MutableSet<ModuleId> {
private fun getRelatedModules(storage: MutableEntityStorage, classpathModel: GradleBuildScriptClasspathModel): MutableSet<ModuleId> {
val virtualFileUrls = classpathModel.classpath.flatMap { it.sources }.mapNotNull {
it.toVirtualFileUrl(urlManager)
@@ -189,8 +202,8 @@ class GradleKotlinScriptEntityProvider(override val project: Project) : KotlinSc
for (url in virtualFileUrls) {
var current: VirtualFileUrl? = url
while (current != null && current.url != project.basePath) {
val moduleIds = getVirtualFileUrlIndex().findEntitiesByUrl(current)
.filterIsInstance<ContentRootEntity>().map { it.module.symbolicId }.toSet()
val moduleIds = storage.getVirtualFileUrlIndex().findEntitiesByUrl(current)
.filterIsInstance<ContentRootEntity>().map { it.module.symbolicId }.toSet()
if (result.addAll(moduleIds)) {
break
@@ -203,29 +216,27 @@ class GradleKotlinScriptEntityProvider(override val project: Project) : KotlinSc
return result
}
private fun MutableEntityStorage.getOrCreateScriptLibrary(
jar: VirtualFileUrl, sources: Collection<VirtualFileUrl>
private fun getOrCreateScriptLibrary(
storage: MutableEntityStorage,
classUrl: VirtualFileUrl,
sources: Collection<VirtualFileUrl> = listOf(),
scriptUrl: VirtualFileUrl
): KotlinScriptLibraryEntityId {
val id = KotlinScriptLibraryEntityId(listOf(jar), sources.toList())
val id = KotlinScriptLibraryEntityId(classUrl)
val existingLibrary = storage.resolve(id)
if (!contains(id)) {
this addEntity KotlinScriptLibraryEntity(
id.classes, id.sources, KotlinGradleScriptEntitySource
)
}
return id
}
private fun MutableEntityStorage.getOrCreateScriptLibrary(
url: VirtualFileUrl
): KotlinScriptLibraryEntityId {
val id = KotlinScriptLibraryEntityId(url)
if (!contains(id)) {
this addEntity KotlinScriptLibraryEntity(
id.classes, id.sources, KotlinGradleScriptEntitySource
)
if (existingLibrary == null) {
storage addEntity KotlinScriptLibraryEntity(
classes = id.classes,
usedInScripts = setOf(scriptUrl),
entitySource = KotlinGradleScriptEntitySource
) {
this.sources += sources
}
} else {
storage.modifyKotlinScriptLibraryEntity(existingLibrary) {
this.usedInScripts += scriptUrl
}
}
return id
@@ -239,8 +250,11 @@ class GradleKotlinScriptEntityProvider(override val project: Project) : KotlinSc
* @param sources a mutable set of [VirtualFileUrl]s pointing to source JAR files
* @return a list of [KotlinScriptLibraryEntityId]s that were successfully created and registered
*/
private fun MutableEntityStorage.extractDependenciesWithSources(
classes: MutableSet<VirtualFileUrl>, sources: MutableSet<VirtualFileUrl>
private fun extractDependenciesWithSources(
storage: MutableEntityStorage,
scriptUrl: VirtualFileUrl,
classes: MutableSet<VirtualFileUrl>,
sources: MutableSet<VirtualFileUrl>
): List<KotlinScriptLibraryEntityId> {
val result: MutableList<KotlinScriptLibraryEntityId> = mutableListOf()
val jar = ".jar!/"
@@ -258,9 +272,21 @@ class GradleKotlinScriptEntityProvider(override val project: Project) : KotlinSc
}
}
}.forEach { (classUrl, sourceUrl) ->
val id = KotlinScriptLibraryEntityId(listOf(classUrl), listOf(sourceUrl))
if (!this.contains(id)) {
this addEntity KotlinScriptLibraryEntity(id.classes, id.sources, KotlinGradleScriptEntitySource)
val id = KotlinScriptLibraryEntityId(classUrl)
val existingLibrary = storage.resolve(id)
if (existingLibrary == null) {
storage addEntity KotlinScriptLibraryEntity(
classes = id.classes,
usedInScripts = setOf(scriptUrl),
entitySource = KotlinGradleScriptEntitySource
) {
this.sources += sourceUrl
}
} else {
storage.modifyKotlinScriptLibraryEntity(existingLibrary) {
this.sources += sourceUrl
this.usedInScripts += scriptUrl
}
}
classes.remove(classUrl)
@@ -280,17 +306,34 @@ class GradleKotlinScriptEntityProvider(override val project: Project) : KotlinSc
}
}
private fun MutableEntityStorage.extractRootsByPredicate(
classes: MutableSet<VirtualFileUrl>, sources: MutableSet<VirtualFileUrl>, predicate: Predicate<VirtualFileUrl>
private fun extractRootsByPredicate(
storage: MutableEntityStorage,
scriptUrl: VirtualFileUrl,
classes: MutableSet<VirtualFileUrl>,
sources: MutableSet<VirtualFileUrl>,
predicate: Predicate<VirtualFileUrl>
): KotlinScriptLibraryEntityId? {
val groupedClasses = classes.removeOnMatch(predicate)
if (groupedClasses.isEmpty()) return null
val groupedSources = sources.removeOnMatch(predicate)
val id = KotlinScriptLibraryEntityId(groupedClasses, groupedSources)
if (!this.contains(id)) {
this addEntity KotlinScriptLibraryEntity(groupedClasses, groupedSources, KotlinGradleScriptEntitySource)
val id = KotlinScriptLibraryEntityId(groupedClasses)
val existingLibrary = storage.resolve(id)
if (existingLibrary == null) {
storage addEntity KotlinScriptLibraryEntity(
classes = groupedClasses,
usedInScripts = setOf(scriptUrl),
entitySource = KotlinGradleScriptEntitySource,
) {
this.sources += groupedSources
}
} else {
storage.modifyKotlinScriptLibraryEntity(existingLibrary) {
this.sources += groupedSources
this.usedInScripts += scriptUrl
}
}
return id
@@ -46,14 +46,21 @@ internal class KotlinDslBaseScriptSyncContributor : GradleSyncContributor {
it.file.name.endsWith(".gradle.kts")
}.map { fileEditor ->
GradleScriptModel(
fileEditor.file, baseModel.compileClassPath.map { it.path }, listOf(), baseModel.implicitImports
virtualFile = fileEditor.file,
classPath = baseModel.compileClassPath.map { it.path },
sourcePath = listOf(),
imports = baseModel.implicitImports
)
}
return GradleKotlinScriptEntityProvider.getInstance(context.project).getUpdatedStorage(
storage.toBuilder(),
models,
definitions,
)
return if (models.isEmpty()) {
storage
} else {
GradleKotlinScriptEntityProvider.getInstance(context.project).getUpdatedStorage(
storage.toBuilder(),
models,
definitions,
)
}
}
}
@@ -1,193 +1,289 @@
graph TD
KaScriptModule_49{{"KaScriptModule(build.gradle.kts)"}}
KaSourceModule_51["KaSourceModule(GradleKotlinFixture)<br />production<br />JVM (1.8)"]
KaLibraryModule_45(["KaLibraryModule(SDK)"])
KaSourceModule_52["KaSourceModule(GradleKotlinFixture)<br />test<br />JVM (1.8)"]
KaLibraryModule_48(["KaLibraryModule(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/2.0.20/7388d355f7cceb002cd387ccb7ab3850e4e0a07f/kotlin-stdlib-2.0.20.jar!/, jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-stdlib-2.0.20.jar!/], sources=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/2.0.20/a6abf4122d686e67c307f45a1d056cd2d6ae57b5/kotlin-stdlib-2.0.20-sources.jar!/])<br />scriptDependency"])
KaLibraryModule_46(["KaLibraryModule(classes=[file://GRADLE_REPOSITORY/caches/8.11/dependencies-accessors/932b97c9e0ae61a950d0c442ab66fbe219f5f218/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/052557a5633b3a9672d727e86d582b37-PS/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/10df8f053fd4cd232d18c89c668baf4e/classes], sources=[file://GRADLE_REPOSITORY/caches/8.11/dependencies-accessors/932b97c9e0ae61a950d0c442ab66fbe219f5f218/sources, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/052557a5633b3a9672d727e86d582b37-PS/sources, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/10df8f053fd4cd232d18c89c668baf4e/sources])<br />scriptDependency"])
KaLibraryModule_47(["KaLibraryModule(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-annotations/2.0.20/a68df0dc58b9bf664e96de49d673f30f24148224/kotlin-gradle-plugin-annotations-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d2bb3020f72504d0455fcb9cef3af4bdf6564de5/kotlin-gradle-plugin-api-2.0.20-gradle85.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d2bb3020f72504d0455fcb9cef3af4bdf6564de5/kotlin-gradle-plugin-api-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea-proto/2.0.20/71e7e908bab748c5b035e551c8efd19a5215c0ca/kotlin-gradle-plugin-idea-proto-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea/2.0.20/dc54973fe68b0bb9b816bd04ef39648ca29526a6/kotlin-gradle-plugin-idea-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-model/2.0.20/a23be6a5119ded89279f2bf9a095cddec6145614/kotlin-gradle-plugin-model-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/2.0.20/5ca90c0173fffe0f4e9b73aca425fd99213cc43a/kotlin-gradle-plugin-2.0.20-gradle85.jar!/], sources=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-annotations/2.0.20/3f6f45573f006285b4e59d162c7f410855b8bef6/kotlin-gradle-plugin-annotations-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d15196031072ecf00993e203149376d79e34a66e/kotlin-gradle-plugin-api-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea-proto/2.0.20/caa8b3be9bb97c22df14139749f646a69af8c057/kotlin-gradle-plugin-idea-proto-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea/2.0.20/703b885378c1e2c6a4ceddbac037850cde77ecf8/kotlin-gradle-plugin-idea-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-model/2.0.20/727acf04a3f280604db07a1c6d2374369eeb7b88/kotlin-gradle-plugin-model-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/2.0.20/f65f4fd987dd80f9cd192ba9f9e1ba82f36d39a4/kotlin-gradle-plugin-2.0.20-sources.jar!/])<br />scriptDependency"])
KaLibraryModule_0(["KaLibraryModule(GRADLE_REPOSITORY/caches/8.11/generated-gradle-jars/gradle-api-8.11.jar)<br />scriptDependency"])
KaLibraryModule_2(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.9/8a432c1d6825781e21a02db2e2c33c5fde2833b9/gson-2.8.9.jar)<br />scriptDependency"])
KaLibraryModule_3(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.gradle.kotlin/gradle-kotlin-dsl-plugins/5.1.1/3df489c5ed7c79591eaef488ac4462a685a2c3de/gradle-kotlin-dsl-plugins-5.1.1.jar)<br />scriptDependency"])
KaLibraryModule_4(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.intellij.deps/trove4j/1.0.20200330/3afb14d5f9ceb459d724e907a21145e8ff394f02/trove4j-1.0.20200330.jar)<br />scriptDependency"])
KaLibraryModule_5(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-assignment/2.0.20/b4f2e732fe09103b173377194c41ef14ef698c5c/kotlin-assignment-2.0.20-gradle85.jar)<br />scriptDependency"])
KaLibraryModule_6(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-build-statistics/2.0.20/fa1c73206997fe6ea912319041e105e6438accdf/kotlin-build-statistics-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_7(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-build-tools-api/2.0.20/7898f46131274ac85569ef30f965e3758e217551/kotlin-build-tools-api-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_8(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/2.0.20/244b603e8c729f98baaf9088d90b5b9350c68af8/kotlin-compiler-embeddable-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_9(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/2.0.20/b7298471a2af50b32b7c460775c23759edb5bb70/kotlin-compiler-runner-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_10(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-client/2.0.20/910b2107f6a7cc02366687b6e835ae0beaadb59b/kotlin-daemon-client-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_11(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-embeddable/2.0.20/9eb02dce62f058efe6a121cf00cf5da9779e2746/kotlin-daemon-embeddable-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_12(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-klib-commonizer-api/2.0.20/c3f877ed653b2d5afc74e9ed8b44bee8856807b1/kotlin-klib-commonizer-api-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_13(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-native-utils/2.0.20/9041e552da8fe20f7835123822f9ee273655e34b/kotlin-native-utils-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_14(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-sam-with-receiver/2.0.20/f53a1b6144691b0fc3c47032e8aa4695a5f59a01/kotlin-sam-with-receiver-2.0.20-gradle85.jar)<br />scriptDependency"])
KaLibraryModule_15(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-tooling-core/2.0.20/952179e9b7f114e78274ca73cea6df8fce3c8b3b/kotlin-tooling-core-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_16(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-util-io/2.0.20/b74831be580aa621e8158231fbd7904ab634ab7d/kotlin-util-io-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_17(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-util-klib/2.0.20/8f1da03af6d8cc1230daa83fabb150891533fb50/kotlin-util-klib-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_18(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.6.4/2c997cd1c0ef33f3e751d3831929aeff1390cb30/kotlinx-coroutines-core-jvm-1.6.4.jar)<br />scriptDependency"])
KaLibraryModule_19(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar)<br />scriptDependency"])
KaLibraryModule_20(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-base-services-8.11.jar)<br />scriptDependency"])
KaLibraryModule_21(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-base-services-groovy-8.11.jar)<br />scriptDependency"])
KaLibraryModule_22(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-core-8.11.jar)<br />scriptDependency"])
KaLibraryModule_23(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-core-api-8.11.jar)<br />scriptDependency"])
KaLibraryModule_24(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-installation-beacon-8.11.jar)<br />scriptDependency"])
KaLibraryModule_25(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-8.11.jar)<br />scriptDependency"])
KaLibraryModule_26(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-extensions-8.11.jar)<br />scriptDependency"])
KaLibraryModule_27(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-shared-runtime-8.11.jar)<br />scriptDependency"])
KaLibraryModule_28(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-tooling-models-8.11.jar)<br />scriptDependency"])
KaLibraryModule_29(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_30(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-ant-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_31(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-astbuilder-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_32(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-console-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_33(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-datetime-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_34(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-dateutil-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_35(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-groovydoc-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_36(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-json-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_37(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-nio-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_38(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-sql-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_39(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-templates-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_40(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-test-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_41(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-xml-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_42(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/javaparser-core-3.17.0.jar)<br />scriptDependency"])
KaLibraryModule_43(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-reflect-2.0.20.jar)<br />scriptDependency"])
KaScriptModule_50{{"KaScriptModule(settings.gradle.kts)"}}
KaLibraryModule_44(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-stdlib-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_1(["KaLibraryModule(GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/045fae15c156631da085875c7a614413/classes)<br />scriptDependency"])
style KaSourceModule_51 fill:#608BC1
style KaLibraryModule_45 fill:#CC2B52
style KaSourceModule_52 fill:#31511E
KaScriptModule_97{{"KaScriptModule(build.gradle.kts)"}}
KaSourceModule_99["KaSourceModule(GradleKotlinFixture)<br />production<br />JVM (1.8)"]
KaLibraryModule_96(["KaLibraryModule(SDK)"])
KaSourceModule_100["KaSourceModule(GradleKotlinFixture)<br />test<br />JVM (1.8)"]
KaLibraryModule_65(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/2.0.20/7388d355f7cceb002cd387ccb7ab3850e4e0a07f/kotlin-stdlib-2.0.20.jar!/, jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-stdlib-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_65[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_48(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[file://GRADLE_REPOSITORY/caches/8.11/dependencies-accessors/932b97c9e0ae61a950d0c442ab66fbe219f5f218/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/052557a5633b3a9672d727e86d582b37-PS/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/10df8f053fd4cd232d18c89c668baf4e/classes]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_48[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_61(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-annotations/2.0.20/a68df0dc58b9bf664e96de49d673f30f24148224/kotlin-gradle-plugin-annotations-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d2bb3020f72504d0455fcb9cef3af4bdf6564de5/kotlin-gradle-plugin-api-2.0.20-gradle85.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d2bb3020f72504d0455fcb9cef3af4bdf6564de5/kotlin-gradle-plugin-api-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea-proto/2.0.20/71e7e908bab748c5b035e551c8efd19a5215c0ca/kotlin-gradle-plugin-idea-proto-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea/2.0.20/dc54973fe68b0bb9b816bd04ef39648ca29526a6/kotlin-gradle-plugin-idea-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-model/2.0.20/a23be6a5119ded89279f2bf9a095cddec6145614/kotlin-gradle-plugin-model-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/2.0.20/5ca90c0173fffe0f4e9b73aca425fd99213cc43a/kotlin-gradle-plugin-2.0.20-gradle85.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_61[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_50(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/8.11/generated-gradle-jars/gradle-api-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_50[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_51(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.9/8a432c1d6825781e21a02db2e2c33c5fde2833b9/gson-2.8.9.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_51[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_52(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.gradle.kotlin/gradle-kotlin-dsl-plugins/5.1.1/3df489c5ed7c79591eaef488ac4462a685a2c3de/gradle-kotlin-dsl-plugins-5.1.1.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_52[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_53(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.intellij.deps/trove4j/1.0.20200330/3afb14d5f9ceb459d724e907a21145e8ff394f02/trove4j-1.0.20200330.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_53[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_54(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-assignment/2.0.20/b4f2e732fe09103b173377194c41ef14ef698c5c/kotlin-assignment-2.0.20-gradle85.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_54[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_55(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-build-statistics/2.0.20/fa1c73206997fe6ea912319041e105e6438accdf/kotlin-build-statistics-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_55[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_56(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-build-tools-api/2.0.20/7898f46131274ac85569ef30f965e3758e217551/kotlin-build-tools-api-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_56[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_57(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/2.0.20/244b603e8c729f98baaf9088d90b5b9350c68af8/kotlin-compiler-embeddable-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_57[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_58(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/2.0.20/b7298471a2af50b32b7c460775c23759edb5bb70/kotlin-compiler-runner-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_58[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_59(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-client/2.0.20/910b2107f6a7cc02366687b6e835ae0beaadb59b/kotlin-daemon-client-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_59[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_60(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-embeddable/2.0.20/9eb02dce62f058efe6a121cf00cf5da9779e2746/kotlin-daemon-embeddable-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_60[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_62(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-klib-commonizer-api/2.0.20/c3f877ed653b2d5afc74e9ed8b44bee8856807b1/kotlin-klib-commonizer-api-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_62[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_63(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-native-utils/2.0.20/9041e552da8fe20f7835123822f9ee273655e34b/kotlin-native-utils-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_63[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_64(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-sam-with-receiver/2.0.20/f53a1b6144691b0fc3c47032e8aa4695a5f59a01/kotlin-sam-with-receiver-2.0.20-gradle85.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_64[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_66(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-tooling-core/2.0.20/952179e9b7f114e78274ca73cea6df8fce3c8b3b/kotlin-tooling-core-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_66[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_67(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-util-io/2.0.20/b74831be580aa621e8158231fbd7904ab634ab7d/kotlin-util-io-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_67[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_68(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-util-klib/2.0.20/8f1da03af6d8cc1230daa83fabb150891533fb50/kotlin-util-klib-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_68[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_69(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.6.4/2c997cd1c0ef33f3e751d3831929aeff1390cb30/kotlinx-coroutines-core-jvm-1.6.4.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_69[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_70(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_70[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_71(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-base-services-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_71[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_72(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-base-services-groovy-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_72[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_73(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-core-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_73[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_74(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-core-api-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_74[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_75(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-installation-beacon-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_75[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_76(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_76[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_77(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-extensions-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_77[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_78(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-shared-runtime-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_78[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_79(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-tooling-models-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_79[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_80(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_80[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_81(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-ant-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_81[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_82(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-astbuilder-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_82[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_83(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-console-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_83[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_84(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-datetime-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_84[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_85(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-dateutil-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_85[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_86(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-groovydoc-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_86[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_87(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-json-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_87[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_88(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-nio-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_88[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_89(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-sql-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_89[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_90(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-templates-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_90[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_91(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-test-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_91[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_92(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-xml-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_92[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_93(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/javaparser-core-3.17.0.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_93[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_94(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-reflect-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_94[/"KaLibraryFallbackDependenciesModule"/]
KaScriptModule_98{{"KaScriptModule(settings.gradle.kts)"}}
KaLibraryModule_95(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-stdlib-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_95[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_49(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/045fae15c156631da085875c7a614413/classes]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_49[/"KaLibraryFallbackDependenciesModule"/]
style KaSourceModule_99 fill:#608BC1
style KaLibraryModule_96 fill:#CC2B52
style KaSourceModule_100 fill:#31511E
style KaLibraryModule_65 fill:#CB6040
style KaLibraryModule_48 fill:#CB6040
style KaLibraryModule_46 fill:#CB6040
style KaLibraryModule_47 fill:#CB6040
style KaLibraryModule_0 fill:#CB6040
style KaLibraryModule_2 fill:#CB6040
style KaLibraryModule_3 fill:#CB6040
style KaLibraryModule_4 fill:#CB6040
style KaLibraryModule_5 fill:#CB6040
style KaLibraryModule_6 fill:#CB6040
style KaLibraryModule_7 fill:#CB6040
style KaLibraryModule_8 fill:#CB6040
style KaLibraryModule_9 fill:#CB6040
style KaLibraryModule_10 fill:#CB6040
style KaLibraryModule_11 fill:#CB6040
style KaLibraryModule_12 fill:#CB6040
style KaLibraryModule_13 fill:#CB6040
style KaLibraryModule_14 fill:#CB6040
style KaLibraryModule_15 fill:#CB6040
style KaLibraryModule_16 fill:#CB6040
style KaLibraryModule_17 fill:#CB6040
style KaLibraryModule_18 fill:#CB6040
style KaLibraryModule_19 fill:#CB6040
style KaLibraryModule_20 fill:#CB6040
style KaLibraryModule_21 fill:#CB6040
style KaLibraryModule_22 fill:#CB6040
style KaLibraryModule_23 fill:#CB6040
style KaLibraryModule_24 fill:#CB6040
style KaLibraryModule_25 fill:#CB6040
style KaLibraryModule_26 fill:#CB6040
style KaLibraryModule_27 fill:#CB6040
style KaLibraryModule_28 fill:#CB6040
style KaLibraryModule_29 fill:#CB6040
style KaLibraryModule_30 fill:#CB6040
style KaLibraryModule_31 fill:#CB6040
style KaLibraryModule_32 fill:#CB6040
style KaLibraryModule_33 fill:#CB6040
style KaLibraryModule_34 fill:#CB6040
style KaLibraryModule_35 fill:#CB6040
style KaLibraryModule_36 fill:#CB6040
style KaLibraryModule_37 fill:#CB6040
style KaLibraryModule_38 fill:#CB6040
style KaLibraryModule_39 fill:#CB6040
style KaLibraryModule_40 fill:#CB6040
style KaLibraryModule_41 fill:#CB6040
style KaLibraryModule_42 fill:#CB6040
style KaLibraryModule_43 fill:#CB6040
style KaLibraryModule_44 fill:#CB6040
style KaLibraryModule_1 fill:#CB6040
KaScriptModule_49 --> KaLibraryModule_0
KaScriptModule_49 --> KaLibraryModule_10
KaScriptModule_49 --> KaLibraryModule_11
KaScriptModule_49 --> KaLibraryModule_12
KaScriptModule_49 --> KaLibraryModule_13
KaScriptModule_49 --> KaLibraryModule_14
KaScriptModule_49 --> KaLibraryModule_15
KaScriptModule_49 --> KaLibraryModule_16
KaScriptModule_49 --> KaLibraryModule_17
KaScriptModule_49 --> KaLibraryModule_18
KaScriptModule_49 --> KaLibraryModule_19
KaScriptModule_49 --> KaLibraryModule_2
KaScriptModule_49 --> KaLibraryModule_20
KaScriptModule_49 --> KaLibraryModule_21
KaScriptModule_49 --> KaLibraryModule_22
KaScriptModule_49 --> KaLibraryModule_23
KaScriptModule_49 --> KaLibraryModule_24
KaScriptModule_49 --> KaLibraryModule_25
KaScriptModule_49 --> KaLibraryModule_26
KaScriptModule_49 --> KaLibraryModule_27
KaScriptModule_49 --> KaLibraryModule_28
KaScriptModule_49 --> KaLibraryModule_29
KaScriptModule_49 --> KaLibraryModule_3
KaScriptModule_49 --> KaLibraryModule_30
KaScriptModule_49 --> KaLibraryModule_31
KaScriptModule_49 --> KaLibraryModule_32
KaScriptModule_49 --> KaLibraryModule_33
KaScriptModule_49 --> KaLibraryModule_34
KaScriptModule_49 --> KaLibraryModule_35
KaScriptModule_49 --> KaLibraryModule_36
KaScriptModule_49 --> KaLibraryModule_37
KaScriptModule_49 --> KaLibraryModule_38
KaScriptModule_49 --> KaLibraryModule_39
KaScriptModule_49 --> KaLibraryModule_4
KaScriptModule_49 --> KaLibraryModule_40
KaScriptModule_49 --> KaLibraryModule_41
KaScriptModule_49 --> KaLibraryModule_42
KaScriptModule_49 --> KaLibraryModule_43
KaScriptModule_49 --> KaLibraryModule_45
KaScriptModule_49 --> KaLibraryModule_46
KaScriptModule_49 --> KaLibraryModule_47
KaScriptModule_49 --> KaLibraryModule_48
KaScriptModule_49 --> KaLibraryModule_5
KaScriptModule_49 --> KaLibraryModule_6
KaScriptModule_49 --> KaLibraryModule_7
KaScriptModule_49 --> KaLibraryModule_8
KaScriptModule_49 --> KaLibraryModule_9
KaScriptModule_49 --> KaSourceModule_51
KaScriptModule_49 --> KaSourceModule_52
KaScriptModule_50 --> KaLibraryModule_0
KaScriptModule_50 --> KaLibraryModule_1
KaScriptModule_50 --> KaLibraryModule_20
KaScriptModule_50 --> KaLibraryModule_21
KaScriptModule_50 --> KaLibraryModule_22
KaScriptModule_50 --> KaLibraryModule_23
KaScriptModule_50 --> KaLibraryModule_24
KaScriptModule_50 --> KaLibraryModule_25
KaScriptModule_50 --> KaLibraryModule_26
KaScriptModule_50 --> KaLibraryModule_27
KaScriptModule_50 --> KaLibraryModule_28
KaScriptModule_50 --> KaLibraryModule_29
KaScriptModule_50 --> KaLibraryModule_30
KaScriptModule_50 --> KaLibraryModule_31
KaScriptModule_50 --> KaLibraryModule_32
KaScriptModule_50 --> KaLibraryModule_33
KaScriptModule_50 --> KaLibraryModule_34
KaScriptModule_50 --> KaLibraryModule_35
KaScriptModule_50 --> KaLibraryModule_36
KaScriptModule_50 --> KaLibraryModule_37
KaScriptModule_50 --> KaLibraryModule_38
KaScriptModule_50 --> KaLibraryModule_39
KaScriptModule_50 --> KaLibraryModule_40
KaScriptModule_50 --> KaLibraryModule_41
KaScriptModule_50 --> KaLibraryModule_42
KaScriptModule_50 --> KaLibraryModule_43
KaScriptModule_50 --> KaLibraryModule_44
KaScriptModule_50 --> KaLibraryModule_45
KaScriptModule_50 --> KaSourceModule_51
KaScriptModule_50 --> KaSourceModule_52
KaSourceModule_51 --> KaLibraryModule_45
KaSourceModule_52 --> KaLibraryModule_45
KaSourceModule_52 --> KaSourceModule_51
KaScriptModule_49 --friend--> KaSourceModule_51
KaScriptModule_50 --friend--> KaSourceModule_51
KaSourceModule_52 --friend--> KaSourceModule_51
style KaLibraryModule_61 fill:#CB6040
style KaLibraryModule_50 fill:#CB6040
style KaLibraryModule_51 fill:#CB6040
style KaLibraryModule_52 fill:#CB6040
style KaLibraryModule_53 fill:#CB6040
style KaLibraryModule_54 fill:#CB6040
style KaLibraryModule_55 fill:#CB6040
style KaLibraryModule_56 fill:#CB6040
style KaLibraryModule_57 fill:#CB6040
style KaLibraryModule_58 fill:#CB6040
style KaLibraryModule_59 fill:#CB6040
style KaLibraryModule_60 fill:#CB6040
style KaLibraryModule_62 fill:#CB6040
style KaLibraryModule_63 fill:#CB6040
style KaLibraryModule_64 fill:#CB6040
style KaLibraryModule_66 fill:#CB6040
style KaLibraryModule_67 fill:#CB6040
style KaLibraryModule_68 fill:#CB6040
style KaLibraryModule_69 fill:#CB6040
style KaLibraryModule_70 fill:#CB6040
style KaLibraryModule_71 fill:#CB6040
style KaLibraryModule_72 fill:#CB6040
style KaLibraryModule_73 fill:#CB6040
style KaLibraryModule_74 fill:#CB6040
style KaLibraryModule_75 fill:#CB6040
style KaLibraryModule_76 fill:#CB6040
style KaLibraryModule_77 fill:#CB6040
style KaLibraryModule_78 fill:#CB6040
style KaLibraryModule_79 fill:#CB6040
style KaLibraryModule_80 fill:#CB6040
style KaLibraryModule_81 fill:#CB6040
style KaLibraryModule_82 fill:#CB6040
style KaLibraryModule_83 fill:#CB6040
style KaLibraryModule_84 fill:#CB6040
style KaLibraryModule_85 fill:#CB6040
style KaLibraryModule_86 fill:#CB6040
style KaLibraryModule_87 fill:#CB6040
style KaLibraryModule_88 fill:#CB6040
style KaLibraryModule_89 fill:#CB6040
style KaLibraryModule_90 fill:#CB6040
style KaLibraryModule_91 fill:#CB6040
style KaLibraryModule_92 fill:#CB6040
style KaLibraryModule_93 fill:#CB6040
style KaLibraryModule_94 fill:#CB6040
style KaLibraryModule_95 fill:#CB6040
style KaLibraryModule_49 fill:#CB6040
KaLibraryModule_48 --> KaLibraryFallbackDependenciesModule_48
KaLibraryModule_49 --> KaLibraryFallbackDependenciesModule_49
KaLibraryModule_50 --> KaLibraryFallbackDependenciesModule_50
KaLibraryModule_51 --> KaLibraryFallbackDependenciesModule_51
KaLibraryModule_52 --> KaLibraryFallbackDependenciesModule_52
KaLibraryModule_53 --> KaLibraryFallbackDependenciesModule_53
KaLibraryModule_54 --> KaLibraryFallbackDependenciesModule_54
KaLibraryModule_55 --> KaLibraryFallbackDependenciesModule_55
KaLibraryModule_56 --> KaLibraryFallbackDependenciesModule_56
KaLibraryModule_57 --> KaLibraryFallbackDependenciesModule_57
KaLibraryModule_58 --> KaLibraryFallbackDependenciesModule_58
KaLibraryModule_59 --> KaLibraryFallbackDependenciesModule_59
KaLibraryModule_60 --> KaLibraryFallbackDependenciesModule_60
KaLibraryModule_61 --> KaLibraryFallbackDependenciesModule_61
KaLibraryModule_62 --> KaLibraryFallbackDependenciesModule_62
KaLibraryModule_63 --> KaLibraryFallbackDependenciesModule_63
KaLibraryModule_64 --> KaLibraryFallbackDependenciesModule_64
KaLibraryModule_65 --> KaLibraryFallbackDependenciesModule_65
KaLibraryModule_66 --> KaLibraryFallbackDependenciesModule_66
KaLibraryModule_67 --> KaLibraryFallbackDependenciesModule_67
KaLibraryModule_68 --> KaLibraryFallbackDependenciesModule_68
KaLibraryModule_69 --> KaLibraryFallbackDependenciesModule_69
KaLibraryModule_70 --> KaLibraryFallbackDependenciesModule_70
KaLibraryModule_71 --> KaLibraryFallbackDependenciesModule_71
KaLibraryModule_72 --> KaLibraryFallbackDependenciesModule_72
KaLibraryModule_73 --> KaLibraryFallbackDependenciesModule_73
KaLibraryModule_74 --> KaLibraryFallbackDependenciesModule_74
KaLibraryModule_75 --> KaLibraryFallbackDependenciesModule_75
KaLibraryModule_76 --> KaLibraryFallbackDependenciesModule_76
KaLibraryModule_77 --> KaLibraryFallbackDependenciesModule_77
KaLibraryModule_78 --> KaLibraryFallbackDependenciesModule_78
KaLibraryModule_79 --> KaLibraryFallbackDependenciesModule_79
KaLibraryModule_80 --> KaLibraryFallbackDependenciesModule_80
KaLibraryModule_81 --> KaLibraryFallbackDependenciesModule_81
KaLibraryModule_82 --> KaLibraryFallbackDependenciesModule_82
KaLibraryModule_83 --> KaLibraryFallbackDependenciesModule_83
KaLibraryModule_84 --> KaLibraryFallbackDependenciesModule_84
KaLibraryModule_85 --> KaLibraryFallbackDependenciesModule_85
KaLibraryModule_86 --> KaLibraryFallbackDependenciesModule_86
KaLibraryModule_87 --> KaLibraryFallbackDependenciesModule_87
KaLibraryModule_88 --> KaLibraryFallbackDependenciesModule_88
KaLibraryModule_89 --> KaLibraryFallbackDependenciesModule_89
KaLibraryModule_90 --> KaLibraryFallbackDependenciesModule_90
KaLibraryModule_91 --> KaLibraryFallbackDependenciesModule_91
KaLibraryModule_92 --> KaLibraryFallbackDependenciesModule_92
KaLibraryModule_93 --> KaLibraryFallbackDependenciesModule_93
KaLibraryModule_94 --> KaLibraryFallbackDependenciesModule_94
KaLibraryModule_95 --> KaLibraryFallbackDependenciesModule_95
KaScriptModule_97 --> KaLibraryModule_48
KaScriptModule_97 --> KaLibraryModule_50
KaScriptModule_97 --> KaLibraryModule_51
KaScriptModule_97 --> KaLibraryModule_52
KaScriptModule_97 --> KaLibraryModule_53
KaScriptModule_97 --> KaLibraryModule_54
KaScriptModule_97 --> KaLibraryModule_55
KaScriptModule_97 --> KaLibraryModule_56
KaScriptModule_97 --> KaLibraryModule_57
KaScriptModule_97 --> KaLibraryModule_58
KaScriptModule_97 --> KaLibraryModule_59
KaScriptModule_97 --> KaLibraryModule_60
KaScriptModule_97 --> KaLibraryModule_61
KaScriptModule_97 --> KaLibraryModule_62
KaScriptModule_97 --> KaLibraryModule_63
KaScriptModule_97 --> KaLibraryModule_64
KaScriptModule_97 --> KaLibraryModule_65
KaScriptModule_97 --> KaLibraryModule_66
KaScriptModule_97 --> KaLibraryModule_67
KaScriptModule_97 --> KaLibraryModule_68
KaScriptModule_97 --> KaLibraryModule_69
KaScriptModule_97 --> KaLibraryModule_70
KaScriptModule_97 --> KaLibraryModule_71
KaScriptModule_97 --> KaLibraryModule_72
KaScriptModule_97 --> KaLibraryModule_73
KaScriptModule_97 --> KaLibraryModule_74
KaScriptModule_97 --> KaLibraryModule_75
KaScriptModule_97 --> KaLibraryModule_76
KaScriptModule_97 --> KaLibraryModule_77
KaScriptModule_97 --> KaLibraryModule_78
KaScriptModule_97 --> KaLibraryModule_79
KaScriptModule_97 --> KaLibraryModule_80
KaScriptModule_97 --> KaLibraryModule_81
KaScriptModule_97 --> KaLibraryModule_82
KaScriptModule_97 --> KaLibraryModule_83
KaScriptModule_97 --> KaLibraryModule_84
KaScriptModule_97 --> KaLibraryModule_85
KaScriptModule_97 --> KaLibraryModule_86
KaScriptModule_97 --> KaLibraryModule_87
KaScriptModule_97 --> KaLibraryModule_88
KaScriptModule_97 --> KaLibraryModule_89
KaScriptModule_97 --> KaLibraryModule_90
KaScriptModule_97 --> KaLibraryModule_91
KaScriptModule_97 --> KaLibraryModule_92
KaScriptModule_97 --> KaLibraryModule_93
KaScriptModule_97 --> KaLibraryModule_94
KaScriptModule_97 --> KaLibraryModule_96
KaScriptModule_97 --> KaSourceModule_100
KaScriptModule_97 --> KaSourceModule_99
KaScriptModule_98 --> KaLibraryModule_49
KaScriptModule_98 --> KaLibraryModule_50
KaScriptModule_98 --> KaLibraryModule_71
KaScriptModule_98 --> KaLibraryModule_72
KaScriptModule_98 --> KaLibraryModule_73
KaScriptModule_98 --> KaLibraryModule_74
KaScriptModule_98 --> KaLibraryModule_75
KaScriptModule_98 --> KaLibraryModule_76
KaScriptModule_98 --> KaLibraryModule_77
KaScriptModule_98 --> KaLibraryModule_78
KaScriptModule_98 --> KaLibraryModule_79
KaScriptModule_98 --> KaLibraryModule_80
KaScriptModule_98 --> KaLibraryModule_81
KaScriptModule_98 --> KaLibraryModule_82
KaScriptModule_98 --> KaLibraryModule_83
KaScriptModule_98 --> KaLibraryModule_84
KaScriptModule_98 --> KaLibraryModule_85
KaScriptModule_98 --> KaLibraryModule_86
KaScriptModule_98 --> KaLibraryModule_87
KaScriptModule_98 --> KaLibraryModule_88
KaScriptModule_98 --> KaLibraryModule_89
KaScriptModule_98 --> KaLibraryModule_90
KaScriptModule_98 --> KaLibraryModule_91
KaScriptModule_98 --> KaLibraryModule_92
KaScriptModule_98 --> KaLibraryModule_93
KaScriptModule_98 --> KaLibraryModule_94
KaScriptModule_98 --> KaLibraryModule_95
KaScriptModule_98 --> KaLibraryModule_96
KaScriptModule_98 --> KaSourceModule_100
KaScriptModule_98 --> KaSourceModule_99
KaSourceModule_100 --> KaLibraryModule_96
KaSourceModule_100 --> KaSourceModule_99
KaSourceModule_99 --> KaLibraryModule_96
KaScriptModule_97 --friend--> KaSourceModule_99
KaScriptModule_98 --friend--> KaSourceModule_99
KaSourceModule_100 --friend--> KaSourceModule_99
linkStyle 0 stroke:black
linkStyle 1 stroke:black
linkStyle 2 stroke:black
@@ -270,6 +366,54 @@ graph TD
linkStyle 79 stroke:black
linkStyle 80 stroke:black
linkStyle 81 stroke:black
linkStyle 82 stroke:#E6C767
linkStyle 83 stroke:#E6C767
linkStyle 84 stroke:#E6C767
linkStyle 82 stroke:black
linkStyle 83 stroke:black
linkStyle 84 stroke:black
linkStyle 85 stroke:black
linkStyle 86 stroke:black
linkStyle 87 stroke:black
linkStyle 88 stroke:black
linkStyle 89 stroke:black
linkStyle 90 stroke:black
linkStyle 91 stroke:black
linkStyle 92 stroke:black
linkStyle 93 stroke:black
linkStyle 94 stroke:black
linkStyle 95 stroke:black
linkStyle 96 stroke:black
linkStyle 97 stroke:black
linkStyle 98 stroke:black
linkStyle 99 stroke:black
linkStyle 100 stroke:black
linkStyle 101 stroke:black
linkStyle 102 stroke:black
linkStyle 103 stroke:black
linkStyle 104 stroke:black
linkStyle 105 stroke:black
linkStyle 106 stroke:black
linkStyle 107 stroke:black
linkStyle 108 stroke:black
linkStyle 109 stroke:black
linkStyle 110 stroke:black
linkStyle 111 stroke:black
linkStyle 112 stroke:black
linkStyle 113 stroke:black
linkStyle 114 stroke:black
linkStyle 115 stroke:black
linkStyle 116 stroke:black
linkStyle 117 stroke:black
linkStyle 118 stroke:black
linkStyle 119 stroke:black
linkStyle 120 stroke:black
linkStyle 121 stroke:black
linkStyle 122 stroke:black
linkStyle 123 stroke:black
linkStyle 124 stroke:black
linkStyle 125 stroke:black
linkStyle 126 stroke:black
linkStyle 127 stroke:black
linkStyle 128 stroke:black
linkStyle 129 stroke:black
linkStyle 130 stroke:#E6C767
linkStyle 131 stroke:#E6C767
linkStyle 132 stroke:#E6C767
@@ -1,151 +1,197 @@
graph TD
KaScriptModule_102{{"KaScriptModule(build.gradle.kts)"}}
KaSourceModule_106["KaSourceModule(GradleKotlinFixture)<br />production<br />JVM (1.8)"]
KaLibraryModule_97(["KaLibraryModule(SDK)"])
KaSourceModule_107["KaSourceModule(GradleKotlinFixture)<br />test<br />JVM (1.8)"]
KaLibraryModule_70(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-stdlib-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_98(["KaLibraryModule(classes=[file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/03c8fec238ceb77c2bb1f7d49c6a26ba/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/2ac517f035e8a76801f7813951be75df-PS/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/d607a9a277312d1de9206d46321a5473/classes], sources=[file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/03c8fec238ceb77c2bb1f7d49c6a26ba/sources, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/2ac517f035e8a76801f7813951be75df-PS/sources])<br />scriptDependency"])
KaLibraryModule_25(["KaLibraryModule(GRADLE_REPOSITORY/caches/8.11/generated-gradle-jars/gradle-api-8.11.jar)<br />scriptDependency"])
KaLibraryModule_27(["KaLibraryModule(GRADLE_REPOSITORY/caches/8.11/transforms/577f4e09fb7161afdab82d9c1d092569/transformed/original/not-build-src.jar)<br />scriptDependency"])
KaLibraryModule_46(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-base-services-8.11.jar)<br />scriptDependency"])
KaLibraryModule_47(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-base-services-groovy-8.11.jar)<br />scriptDependency"])
KaLibraryModule_48(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-core-8.11.jar)<br />scriptDependency"])
KaLibraryModule_49(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-core-api-8.11.jar)<br />scriptDependency"])
KaLibraryModule_50(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-installation-beacon-8.11.jar)<br />scriptDependency"])
KaLibraryModule_51(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-8.11.jar)<br />scriptDependency"])
KaLibraryModule_52(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-extensions-8.11.jar)<br />scriptDependency"])
KaLibraryModule_53(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-shared-runtime-8.11.jar)<br />scriptDependency"])
KaLibraryModule_54(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-tooling-models-8.11.jar)<br />scriptDependency"])
KaLibraryModule_55(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_56(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-ant-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_57(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-astbuilder-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_58(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-console-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_59(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-datetime-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_60(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-dateutil-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_61(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-groovydoc-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_62(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-json-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_63(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-nio-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_64(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-sql-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_65(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-templates-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_66(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-test-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_67(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-xml-3.0.22.jar)<br />scriptDependency"])
KaLibraryModule_68(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/javaparser-core-3.17.0.jar)<br />scriptDependency"])
KaLibraryModule_69(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-reflect-2.0.20.jar)<br />scriptDependency"])
KaSourceModule_110["KaSourceModule(not-build-src.main)<br />production<br />JVM (17)"]
KaLibraryModule_72(["KaLibraryModule(Gradle: gradle-api-8.11.jar)"])
KaLibraryFallbackDependenciesModule_72[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_78(["KaLibraryModule(Gradle: groovy-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_78[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_79(["KaLibraryModule(Gradle: groovy-ant-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_79[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_80(["KaLibraryModule(Gradle: groovy-astbuilder-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_80[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_81(["KaLibraryModule(Gradle: groovy-console-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_81[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_82(["KaLibraryModule(Gradle: groovy-datetime-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_82[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_83(["KaLibraryModule(Gradle: groovy-dateutil-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_83[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_84(["KaLibraryModule(Gradle: groovy-groovydoc-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_84[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_85(["KaLibraryModule(Gradle: groovy-json-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_85[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_86(["KaLibraryModule(Gradle: groovy-nio-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_86[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_87(["KaLibraryModule(Gradle: groovy-sql-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_87[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_88(["KaLibraryModule(Gradle: groovy-templates-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_88[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_89(["KaLibraryModule(Gradle: groovy-test-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_89[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_90(["KaLibraryModule(Gradle: groovy-xml-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_90[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_91(["KaLibraryModule(Gradle: javaparser-core-3.17.0.jar)"])
KaLibraryFallbackDependenciesModule_91[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_93(["KaLibraryModule(Gradle: kotlin-stdlib-2.0.20.jar)"])
KaLibraryFallbackDependenciesModule_93[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_92(["KaLibraryModule(Gradle: kotlin-reflect-2.0.20.jar)"])
KaLibraryFallbackDependenciesModule_92[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_73(["KaLibraryModule(Gradle: gradle-installation-beacon-8.11.jar)"])
KaLibraryFallbackDependenciesModule_73[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_75(["KaLibraryModule(Gradle: gradle-kotlin-dsl-extensions-8.11.jar)"])
KaScriptModule_151{{"KaScriptModule(build.gradle.kts)"}}
KaSourceModule_155["KaSourceModule(GradleKotlinFixture)<br />production<br />JVM (1.8)"]
KaLibraryModule_150(["KaLibraryModule(SDK)"])
KaSourceModule_156["KaSourceModule(GradleKotlinFixture)<br />test<br />JVM (1.8)"]
KaLibraryModule_149(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-stdlib-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_149[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_100(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/03c8fec238ceb77c2bb1f7d49c6a26ba/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/2ac517f035e8a76801f7813951be75df-PS/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/d607a9a277312d1de9206d46321a5473/classes]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_100[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_103(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/8.11/generated-gradle-jars/gradle-api-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_103[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_104(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/8.11/transforms/577f4e09fb7161afdab82d9c1d092569/transformed/original/not-build-src.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_104[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_125(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-base-services-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_125[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_126(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-base-services-groovy-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_126[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_127(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-core-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_127[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_128(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-core-api-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_128[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_129(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-installation-beacon-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_129[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_130(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_130[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_131(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-extensions-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_131[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_132(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-shared-runtime-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_132[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_133(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/gradle-kotlin-dsl-tooling-models-8.11.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_133[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_134(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_134[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_135(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-ant-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_135[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_136(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-astbuilder-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_136[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_137(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-console-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_137[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_138(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-datetime-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_138[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_139(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-dateutil-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_139[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_140(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-groovydoc-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_140[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_141(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-json-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_141[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_142(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-nio-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_142[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_143(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-sql-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_143[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_144(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-templates-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_144[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_145(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-test-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_145[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_146(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/groovy-xml-3.0.22.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_146[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_147(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/javaparser-core-3.17.0.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_147[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_148(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-reflect-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_148[/"KaLibraryFallbackDependenciesModule"/]
KaSourceModule_159["KaSourceModule(not-build-src.main)<br />production<br />JVM (17)"]
KaLibraryModule_75(["KaLibraryModule(Gradle: gradle-api-8.11.jar)"])
KaLibraryFallbackDependenciesModule_75[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_74(["KaLibraryModule(Gradle: gradle-kotlin-dsl-8.11.jar)"])
KaLibraryFallbackDependenciesModule_74[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_76(["KaLibraryModule(Gradle: gradle-kotlin-dsl-shared-runtime-8.11.jar)"])
KaLibraryFallbackDependenciesModule_76[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_77(["KaLibraryModule(Gradle: gradle-kotlin-dsl-tooling-models-8.11.jar)"])
KaLibraryFallbackDependenciesModule_77[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_94(["KaLibraryModule(Gradle: org.jetbrains.kotlin:kotlin-reflect:2.0.20)"])
KaLibraryModule_81(["KaLibraryModule(Gradle: groovy-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_81[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_82(["KaLibraryModule(Gradle: groovy-ant-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_82[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_83(["KaLibraryModule(Gradle: groovy-astbuilder-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_83[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_84(["KaLibraryModule(Gradle: groovy-console-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_84[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_85(["KaLibraryModule(Gradle: groovy-datetime-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_85[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_86(["KaLibraryModule(Gradle: groovy-dateutil-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_86[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_87(["KaLibraryModule(Gradle: groovy-groovydoc-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_87[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_88(["KaLibraryModule(Gradle: groovy-json-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_88[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_89(["KaLibraryModule(Gradle: groovy-nio-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_89[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_90(["KaLibraryModule(Gradle: groovy-sql-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_90[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_91(["KaLibraryModule(Gradle: groovy-templates-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_91[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_92(["KaLibraryModule(Gradle: groovy-test-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_92[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_93(["KaLibraryModule(Gradle: groovy-xml-3.0.22.jar)"])
KaLibraryFallbackDependenciesModule_93[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_94(["KaLibraryModule(Gradle: javaparser-core-3.17.0.jar)"])
KaLibraryFallbackDependenciesModule_94[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_95(["KaLibraryModule(Gradle: org.jetbrains.kotlin:kotlin-stdlib:2.0.20)"])
KaLibraryFallbackDependenciesModule_95[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_96(["KaLibraryModule(Gradle: org.jetbrains:annotations:13.0)"])
KaLibraryModule_96(["KaLibraryModule(Gradle: kotlin-stdlib-2.0.20.jar)"])
KaLibraryFallbackDependenciesModule_96[/"KaLibraryFallbackDependenciesModule"/]
KaScriptModule_104{{"KaScriptModule(settings.gradle.kts)"}}
KaLibraryModule_71(["KaLibraryModule(GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-stdlib-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_26(["KaLibraryModule(GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/045fae15c156631da085875c7a614413/classes)<br />scriptDependency"])
KaScriptModule_103{{"KaScriptModule(build.gradle.kts)"}}
KaSourceModule_108["KaSourceModule(not-build-src)<br />production<br />JVM (1.8)"]
KaSourceModule_109["KaSourceModule(not-build-src)<br />test<br />JVM (1.8)"]
KaLibraryModule_101(["KaLibraryModule(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/2.0.20/7388d355f7cceb002cd387ccb7ab3850e4e0a07f/kotlin-stdlib-2.0.20.jar!/, jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-stdlib-2.0.20.jar!/], sources=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/2.0.20/a6abf4122d686e67c307f45a1d056cd2d6ae57b5/kotlin-stdlib-2.0.20-sources.jar!/])<br />scriptDependency"])
KaLibraryModule_99(["KaLibraryModule(classes=[file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/2ac517f035e8a76801f7813951be75df-PS/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/b93b493be2df37ad93a1f4ea15b8ba1e/classes], sources=[file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/2ac517f035e8a76801f7813951be75df-PS/sources, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/b93b493be2df37ad93a1f4ea15b8ba1e/sources])<br />scriptDependency"])
KaLibraryModule_100(["KaLibraryModule(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-annotations/2.0.20/a68df0dc58b9bf664e96de49d673f30f24148224/kotlin-gradle-plugin-annotations-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d2bb3020f72504d0455fcb9cef3af4bdf6564de5/kotlin-gradle-plugin-api-2.0.20-gradle85.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d2bb3020f72504d0455fcb9cef3af4bdf6564de5/kotlin-gradle-plugin-api-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea-proto/2.0.20/71e7e908bab748c5b035e551c8efd19a5215c0ca/kotlin-gradle-plugin-idea-proto-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea/2.0.20/dc54973fe68b0bb9b816bd04ef39648ca29526a6/kotlin-gradle-plugin-idea-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-model/2.0.20/a23be6a5119ded89279f2bf9a095cddec6145614/kotlin-gradle-plugin-model-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/2.0.20/5ca90c0173fffe0f4e9b73aca425fd99213cc43a/kotlin-gradle-plugin-2.0.20-gradle85.jar!/], sources=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-annotations/2.0.20/3f6f45573f006285b4e59d162c7f410855b8bef6/kotlin-gradle-plugin-annotations-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d15196031072ecf00993e203149376d79e34a66e/kotlin-gradle-plugin-api-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea-proto/2.0.20/caa8b3be9bb97c22df14139749f646a69af8c057/kotlin-gradle-plugin-idea-proto-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea/2.0.20/703b885378c1e2c6a4ceddbac037850cde77ecf8/kotlin-gradle-plugin-idea-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-model/2.0.20/727acf04a3f280604db07a1c6d2374369eeb7b88/kotlin-gradle-plugin-model-2.0.20-sources.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/2.0.20/f65f4fd987dd80f9cd192ba9f9e1ba82f36d39a4/kotlin-gradle-plugin-2.0.20-sources.jar!/])<br />scriptDependency"])
KaLibraryModule_28(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.9/8a432c1d6825781e21a02db2e2c33c5fde2833b9/gson-2.8.9.jar)<br />scriptDependency"])
KaLibraryModule_29(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.gradle.kotlin/gradle-kotlin-dsl-plugins/5.1.1/3df489c5ed7c79591eaef488ac4462a685a2c3de/gradle-kotlin-dsl-plugins-5.1.1.jar)<br />scriptDependency"])
KaLibraryModule_30(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.intellij.deps/trove4j/1.0.20200330/3afb14d5f9ceb459d724e907a21145e8ff394f02/trove4j-1.0.20200330.jar)<br />scriptDependency"])
KaLibraryModule_31(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-assignment/2.0.20/b4f2e732fe09103b173377194c41ef14ef698c5c/kotlin-assignment-2.0.20-gradle85.jar)<br />scriptDependency"])
KaLibraryModule_32(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-build-statistics/2.0.20/fa1c73206997fe6ea912319041e105e6438accdf/kotlin-build-statistics-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_33(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-build-tools-api/2.0.20/7898f46131274ac85569ef30f965e3758e217551/kotlin-build-tools-api-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_34(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/2.0.20/244b603e8c729f98baaf9088d90b5b9350c68af8/kotlin-compiler-embeddable-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_35(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/2.0.20/b7298471a2af50b32b7c460775c23759edb5bb70/kotlin-compiler-runner-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_36(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-client/2.0.20/910b2107f6a7cc02366687b6e835ae0beaadb59b/kotlin-daemon-client-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_37(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-embeddable/2.0.20/9eb02dce62f058efe6a121cf00cf5da9779e2746/kotlin-daemon-embeddable-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_38(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-klib-commonizer-api/2.0.20/c3f877ed653b2d5afc74e9ed8b44bee8856807b1/kotlin-klib-commonizer-api-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_39(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-native-utils/2.0.20/9041e552da8fe20f7835123822f9ee273655e34b/kotlin-native-utils-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_40(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-sam-with-receiver/2.0.20/f53a1b6144691b0fc3c47032e8aa4695a5f59a01/kotlin-sam-with-receiver-2.0.20-gradle85.jar)<br />scriptDependency"])
KaLibraryModule_41(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-tooling-core/2.0.20/952179e9b7f114e78274ca73cea6df8fce3c8b3b/kotlin-tooling-core-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_42(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-util-io/2.0.20/b74831be580aa621e8158231fbd7904ab634ab7d/kotlin-util-io-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_43(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-util-klib/2.0.20/8f1da03af6d8cc1230daa83fabb150891533fb50/kotlin-util-klib-2.0.20.jar)<br />scriptDependency"])
KaLibraryModule_44(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.6.4/2c997cd1c0ef33f3e751d3831929aeff1390cb30/kotlinx-coroutines-core-jvm-1.6.4.jar)<br />scriptDependency"])
KaLibraryModule_45(["KaLibraryModule(GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar)<br />scriptDependency"])
KaScriptModule_105{{"KaScriptModule(settings.gradle.kts)"}}
style KaSourceModule_106 fill:#608BC1
style KaLibraryModule_97 fill:#CC2B52
style KaSourceModule_107 fill:#31511E
style KaLibraryModule_70 fill:#CB6040
style KaLibraryModule_98 fill:#CB6040
style KaLibraryModule_25 fill:#CB6040
style KaLibraryModule_27 fill:#CB6040
style KaLibraryModule_46 fill:#CB6040
style KaLibraryModule_47 fill:#CB6040
style KaLibraryModule_48 fill:#CB6040
style KaLibraryModule_49 fill:#CB6040
style KaLibraryModule_50 fill:#CB6040
style KaLibraryModule_51 fill:#CB6040
style KaLibraryModule_52 fill:#CB6040
style KaLibraryModule_53 fill:#CB6040
style KaLibraryModule_54 fill:#CB6040
style KaLibraryModule_55 fill:#CB6040
style KaLibraryModule_56 fill:#CB6040
style KaLibraryModule_57 fill:#CB6040
style KaLibraryModule_58 fill:#CB6040
style KaLibraryModule_59 fill:#CB6040
style KaLibraryModule_60 fill:#CB6040
style KaLibraryModule_61 fill:#CB6040
style KaLibraryModule_62 fill:#CB6040
style KaLibraryModule_63 fill:#CB6040
style KaLibraryModule_64 fill:#CB6040
style KaLibraryModule_65 fill:#CB6040
style KaLibraryModule_66 fill:#CB6040
style KaLibraryModule_67 fill:#CB6040
style KaLibraryModule_68 fill:#CB6040
style KaLibraryModule_69 fill:#CB6040
style KaSourceModule_110 fill:#608BC1
style KaLibraryModule_72 fill:#CB6040
style KaLibraryModule_78 fill:#CB6040
style KaLibraryModule_79 fill:#CB6040
style KaLibraryModule_80 fill:#CB6040
KaLibraryModule_95(["KaLibraryModule(Gradle: kotlin-reflect-2.0.20.jar)"])
KaLibraryFallbackDependenciesModule_95[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_76(["KaLibraryModule(Gradle: gradle-installation-beacon-8.11.jar)"])
KaLibraryFallbackDependenciesModule_76[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_78(["KaLibraryModule(Gradle: gradle-kotlin-dsl-extensions-8.11.jar)"])
KaLibraryFallbackDependenciesModule_78[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_77(["KaLibraryModule(Gradle: gradle-kotlin-dsl-8.11.jar)"])
KaLibraryFallbackDependenciesModule_77[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_79(["KaLibraryModule(Gradle: gradle-kotlin-dsl-shared-runtime-8.11.jar)"])
KaLibraryFallbackDependenciesModule_79[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_80(["KaLibraryModule(Gradle: gradle-kotlin-dsl-tooling-models-8.11.jar)"])
KaLibraryFallbackDependenciesModule_80[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_97(["KaLibraryModule(Gradle: org.jetbrains.kotlin:kotlin-reflect:2.0.20)"])
KaLibraryFallbackDependenciesModule_97[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_98(["KaLibraryModule(Gradle: org.jetbrains.kotlin:kotlin-stdlib:2.0.20)"])
KaLibraryFallbackDependenciesModule_98[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_99(["KaLibraryModule(Gradle: org.jetbrains:annotations:13.0)"])
KaLibraryFallbackDependenciesModule_99[/"KaLibraryFallbackDependenciesModule"/]
KaScriptModule_153{{"KaScriptModule(settings.gradle.kts)"}}
KaLibraryModule_101(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/045fae15c156631da085875c7a614413/classes]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_101[/"KaLibraryFallbackDependenciesModule"/]
KaScriptModule_152{{"KaScriptModule(build.gradle.kts)"}}
KaSourceModule_157["KaSourceModule(not-build-src)<br />production<br />JVM (1.8)"]
KaSourceModule_158["KaSourceModule(not-build-src)<br />test<br />JVM (1.8)"]
KaLibraryModule_119(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/2.0.20/7388d355f7cceb002cd387ccb7ab3850e4e0a07f/kotlin-stdlib-2.0.20.jar!/, jar://GRADLE_REPOSITORY/wrapper/dists/gradle-8.11-bin/c4te04g51qsyw1bxcb929u7br/gradle-8.11/lib/kotlin-stdlib-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_119[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_102(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/2ac517f035e8a76801f7813951be75df-PS/classes, file://GRADLE_REPOSITORY/caches/8.11/kotlin-dsl/accessors/b93b493be2df37ad93a1f4ea15b8ba1e/classes]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_102[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_115(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-annotations/2.0.20/a68df0dc58b9bf664e96de49d673f30f24148224/kotlin-gradle-plugin-annotations-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d2bb3020f72504d0455fcb9cef3af4bdf6564de5/kotlin-gradle-plugin-api-2.0.20-gradle85.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-api/2.0.20/d2bb3020f72504d0455fcb9cef3af4bdf6564de5/kotlin-gradle-plugin-api-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea-proto/2.0.20/71e7e908bab748c5b035e551c8efd19a5215c0ca/kotlin-gradle-plugin-idea-proto-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-idea/2.0.20/dc54973fe68b0bb9b816bd04ef39648ca29526a6/kotlin-gradle-plugin-idea-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin-model/2.0.20/a23be6a5119ded89279f2bf9a095cddec6145614/kotlin-gradle-plugin-model-2.0.20.jar!/, jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-gradle-plugin/2.0.20/5ca90c0173fffe0f4e9b73aca425fd99213cc43a/kotlin-gradle-plugin-2.0.20-gradle85.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_115[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_105(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.9/8a432c1d6825781e21a02db2e2c33c5fde2833b9/gson-2.8.9.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_105[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_106(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.gradle.kotlin/gradle-kotlin-dsl-plugins/5.1.1/3df489c5ed7c79591eaef488ac4462a685a2c3de/gradle-kotlin-dsl-plugins-5.1.1.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_106[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_107(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.intellij.deps/trove4j/1.0.20200330/3afb14d5f9ceb459d724e907a21145e8ff394f02/trove4j-1.0.20200330.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_107[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_108(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-assignment/2.0.20/b4f2e732fe09103b173377194c41ef14ef698c5c/kotlin-assignment-2.0.20-gradle85.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_108[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_109(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-build-statistics/2.0.20/fa1c73206997fe6ea912319041e105e6438accdf/kotlin-build-statistics-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_109[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_110(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-build-tools-api/2.0.20/7898f46131274ac85569ef30f965e3758e217551/kotlin-build-tools-api-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_110[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_111(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/2.0.20/244b603e8c729f98baaf9088d90b5b9350c68af8/kotlin-compiler-embeddable-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_111[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_112(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-runner/2.0.20/b7298471a2af50b32b7c460775c23759edb5bb70/kotlin-compiler-runner-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_112[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_113(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-client/2.0.20/910b2107f6a7cc02366687b6e835ae0beaadb59b/kotlin-daemon-client-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_113[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_114(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-embeddable/2.0.20/9eb02dce62f058efe6a121cf00cf5da9779e2746/kotlin-daemon-embeddable-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_114[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_116(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-klib-commonizer-api/2.0.20/c3f877ed653b2d5afc74e9ed8b44bee8856807b1/kotlin-klib-commonizer-api-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_116[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_117(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-native-utils/2.0.20/9041e552da8fe20f7835123822f9ee273655e34b/kotlin-native-utils-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_117[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_118(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-sam-with-receiver/2.0.20/f53a1b6144691b0fc3c47032e8aa4695a5f59a01/kotlin-sam-with-receiver-2.0.20-gradle85.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_118[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_120(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-tooling-core/2.0.20/952179e9b7f114e78274ca73cea6df8fce3c8b3b/kotlin-tooling-core-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_120[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_121(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-util-io/2.0.20/b74831be580aa621e8158231fbd7904ab634ab7d/kotlin-util-io-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_121[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_122(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-util-klib/2.0.20/8f1da03af6d8cc1230daa83fabb150891533fb50/kotlin-util-klib-2.0.20.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_122[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_123(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.6.4/2c997cd1c0ef33f3e751d3831929aeff1390cb30/kotlinx-coroutines-core-jvm-1.6.4.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_123[/"KaLibraryFallbackDependenciesModule"/]
KaLibraryModule_124(["KaLibraryModule(KotlinScriptLibraryEntityId(classes=[jar://GRADLE_REPOSITORY/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar!/]))<br />scriptDependency"])
KaLibraryFallbackDependenciesModule_124[/"KaLibraryFallbackDependenciesModule"/]
KaScriptModule_154{{"KaScriptModule(settings.gradle.kts)"}}
style KaSourceModule_155 fill:#608BC1
style KaLibraryModule_150 fill:#CC2B52
style KaSourceModule_156 fill:#31511E
style KaLibraryModule_149 fill:#CB6040
style KaLibraryModule_100 fill:#CB6040
style KaLibraryModule_103 fill:#CB6040
style KaLibraryModule_104 fill:#CB6040
style KaLibraryModule_125 fill:#CB6040
style KaLibraryModule_126 fill:#CB6040
style KaLibraryModule_127 fill:#CB6040
style KaLibraryModule_128 fill:#CB6040
style KaLibraryModule_129 fill:#CB6040
style KaLibraryModule_130 fill:#CB6040
style KaLibraryModule_131 fill:#CB6040
style KaLibraryModule_132 fill:#CB6040
style KaLibraryModule_133 fill:#CB6040
style KaLibraryModule_134 fill:#CB6040
style KaLibraryModule_135 fill:#CB6040
style KaLibraryModule_136 fill:#CB6040
style KaLibraryModule_137 fill:#CB6040
style KaLibraryModule_138 fill:#CB6040
style KaLibraryModule_139 fill:#CB6040
style KaLibraryModule_140 fill:#CB6040
style KaLibraryModule_141 fill:#CB6040
style KaLibraryModule_142 fill:#CB6040
style KaLibraryModule_143 fill:#CB6040
style KaLibraryModule_144 fill:#CB6040
style KaLibraryModule_145 fill:#CB6040
style KaLibraryModule_146 fill:#CB6040
style KaLibraryModule_147 fill:#CB6040
style KaLibraryModule_148 fill:#CB6040
style KaSourceModule_159 fill:#608BC1
style KaLibraryModule_75 fill:#CB6040
style KaLibraryModule_81 fill:#CB6040
style KaLibraryModule_82 fill:#CB6040
style KaLibraryModule_83 fill:#CB6040
@@ -157,44 +203,93 @@ graph TD
style KaLibraryModule_89 fill:#CB6040
style KaLibraryModule_90 fill:#CB6040
style KaLibraryModule_91 fill:#CB6040
style KaLibraryModule_93 fill:#CB6040
style KaLibraryModule_92 fill:#CB6040
style KaLibraryModule_73 fill:#CB6040
style KaLibraryModule_75 fill:#CB6040
style KaLibraryModule_74 fill:#CB6040
style KaLibraryModule_76 fill:#CB6040
style KaLibraryModule_77 fill:#CB6040
style KaLibraryModule_93 fill:#CB6040
style KaLibraryModule_94 fill:#CB6040
style KaLibraryModule_95 fill:#CB6040
style KaLibraryModule_96 fill:#CB6040
style KaLibraryModule_71 fill:#CB6040
style KaLibraryModule_26 fill:#CB6040
style KaSourceModule_108 fill:#608BC1
style KaSourceModule_109 fill:#31511E
style KaLibraryModule_101 fill:#CB6040
style KaLibraryModule_95 fill:#CB6040
style KaLibraryModule_76 fill:#CB6040
style KaLibraryModule_78 fill:#CB6040
style KaLibraryModule_77 fill:#CB6040
style KaLibraryModule_79 fill:#CB6040
style KaLibraryModule_80 fill:#CB6040
style KaLibraryModule_97 fill:#CB6040
style KaLibraryModule_98 fill:#CB6040
style KaLibraryModule_99 fill:#CB6040
style KaLibraryModule_100 fill:#CB6040
style KaLibraryModule_28 fill:#CB6040
style KaLibraryModule_29 fill:#CB6040
style KaLibraryModule_30 fill:#CB6040
style KaLibraryModule_31 fill:#CB6040
style KaLibraryModule_32 fill:#CB6040
style KaLibraryModule_33 fill:#CB6040
style KaLibraryModule_34 fill:#CB6040
style KaLibraryModule_35 fill:#CB6040
style KaLibraryModule_36 fill:#CB6040
style KaLibraryModule_37 fill:#CB6040
style KaLibraryModule_38 fill:#CB6040
style KaLibraryModule_39 fill:#CB6040
style KaLibraryModule_40 fill:#CB6040
style KaLibraryModule_41 fill:#CB6040
style KaLibraryModule_42 fill:#CB6040
style KaLibraryModule_43 fill:#CB6040
style KaLibraryModule_44 fill:#CB6040
style KaLibraryModule_45 fill:#CB6040
KaLibraryModule_72 --> KaLibraryFallbackDependenciesModule_72
KaLibraryModule_73 --> KaLibraryFallbackDependenciesModule_73
KaLibraryModule_74 --> KaLibraryFallbackDependenciesModule_74
style KaLibraryModule_101 fill:#CB6040
style KaSourceModule_157 fill:#608BC1
style KaSourceModule_158 fill:#31511E
style KaLibraryModule_119 fill:#CB6040
style KaLibraryModule_102 fill:#CB6040
style KaLibraryModule_115 fill:#CB6040
style KaLibraryModule_105 fill:#CB6040
style KaLibraryModule_106 fill:#CB6040
style KaLibraryModule_107 fill:#CB6040
style KaLibraryModule_108 fill:#CB6040
style KaLibraryModule_109 fill:#CB6040
style KaLibraryModule_110 fill:#CB6040
style KaLibraryModule_111 fill:#CB6040
style KaLibraryModule_112 fill:#CB6040
style KaLibraryModule_113 fill:#CB6040
style KaLibraryModule_114 fill:#CB6040
style KaLibraryModule_116 fill:#CB6040
style KaLibraryModule_117 fill:#CB6040
style KaLibraryModule_118 fill:#CB6040
style KaLibraryModule_120 fill:#CB6040
style KaLibraryModule_121 fill:#CB6040
style KaLibraryModule_122 fill:#CB6040
style KaLibraryModule_123 fill:#CB6040
style KaLibraryModule_124 fill:#CB6040
KaLibraryModule_100 --> KaLibraryFallbackDependenciesModule_100
KaLibraryModule_101 --> KaLibraryFallbackDependenciesModule_101
KaLibraryModule_102 --> KaLibraryFallbackDependenciesModule_102
KaLibraryModule_103 --> KaLibraryFallbackDependenciesModule_103
KaLibraryModule_104 --> KaLibraryFallbackDependenciesModule_104
KaLibraryModule_105 --> KaLibraryFallbackDependenciesModule_105
KaLibraryModule_106 --> KaLibraryFallbackDependenciesModule_106
KaLibraryModule_107 --> KaLibraryFallbackDependenciesModule_107
KaLibraryModule_108 --> KaLibraryFallbackDependenciesModule_108
KaLibraryModule_109 --> KaLibraryFallbackDependenciesModule_109
KaLibraryModule_110 --> KaLibraryFallbackDependenciesModule_110
KaLibraryModule_111 --> KaLibraryFallbackDependenciesModule_111
KaLibraryModule_112 --> KaLibraryFallbackDependenciesModule_112
KaLibraryModule_113 --> KaLibraryFallbackDependenciesModule_113
KaLibraryModule_114 --> KaLibraryFallbackDependenciesModule_114
KaLibraryModule_115 --> KaLibraryFallbackDependenciesModule_115
KaLibraryModule_116 --> KaLibraryFallbackDependenciesModule_116
KaLibraryModule_117 --> KaLibraryFallbackDependenciesModule_117
KaLibraryModule_118 --> KaLibraryFallbackDependenciesModule_118
KaLibraryModule_119 --> KaLibraryFallbackDependenciesModule_119
KaLibraryModule_120 --> KaLibraryFallbackDependenciesModule_120
KaLibraryModule_121 --> KaLibraryFallbackDependenciesModule_121
KaLibraryModule_122 --> KaLibraryFallbackDependenciesModule_122
KaLibraryModule_123 --> KaLibraryFallbackDependenciesModule_123
KaLibraryModule_124 --> KaLibraryFallbackDependenciesModule_124
KaLibraryModule_125 --> KaLibraryFallbackDependenciesModule_125
KaLibraryModule_126 --> KaLibraryFallbackDependenciesModule_126
KaLibraryModule_127 --> KaLibraryFallbackDependenciesModule_127
KaLibraryModule_128 --> KaLibraryFallbackDependenciesModule_128
KaLibraryModule_129 --> KaLibraryFallbackDependenciesModule_129
KaLibraryModule_130 --> KaLibraryFallbackDependenciesModule_130
KaLibraryModule_131 --> KaLibraryFallbackDependenciesModule_131
KaLibraryModule_132 --> KaLibraryFallbackDependenciesModule_132
KaLibraryModule_133 --> KaLibraryFallbackDependenciesModule_133
KaLibraryModule_134 --> KaLibraryFallbackDependenciesModule_134
KaLibraryModule_135 --> KaLibraryFallbackDependenciesModule_135
KaLibraryModule_136 --> KaLibraryFallbackDependenciesModule_136
KaLibraryModule_137 --> KaLibraryFallbackDependenciesModule_137
KaLibraryModule_138 --> KaLibraryFallbackDependenciesModule_138
KaLibraryModule_139 --> KaLibraryFallbackDependenciesModule_139
KaLibraryModule_140 --> KaLibraryFallbackDependenciesModule_140
KaLibraryModule_141 --> KaLibraryFallbackDependenciesModule_141
KaLibraryModule_142 --> KaLibraryFallbackDependenciesModule_142
KaLibraryModule_143 --> KaLibraryFallbackDependenciesModule_143
KaLibraryModule_144 --> KaLibraryFallbackDependenciesModule_144
KaLibraryModule_145 --> KaLibraryFallbackDependenciesModule_145
KaLibraryModule_146 --> KaLibraryFallbackDependenciesModule_146
KaLibraryModule_147 --> KaLibraryFallbackDependenciesModule_147
KaLibraryModule_148 --> KaLibraryFallbackDependenciesModule_148
KaLibraryModule_149 --> KaLibraryFallbackDependenciesModule_149
KaLibraryModule_75 --> KaLibraryFallbackDependenciesModule_75
KaLibraryModule_76 --> KaLibraryFallbackDependenciesModule_76
KaLibraryModule_77 --> KaLibraryFallbackDependenciesModule_77
@@ -217,186 +312,189 @@ graph TD
KaLibraryModule_94 --> KaLibraryFallbackDependenciesModule_94
KaLibraryModule_95 --> KaLibraryFallbackDependenciesModule_95
KaLibraryModule_96 --> KaLibraryFallbackDependenciesModule_96
KaScriptModule_102 --> KaLibraryModule_25
KaScriptModule_102 --> KaLibraryModule_27
KaScriptModule_102 --> KaLibraryModule_46
KaScriptModule_102 --> KaLibraryModule_47
KaScriptModule_102 --> KaLibraryModule_48
KaScriptModule_102 --> KaLibraryModule_49
KaScriptModule_102 --> KaLibraryModule_50
KaScriptModule_102 --> KaLibraryModule_51
KaScriptModule_102 --> KaLibraryModule_52
KaScriptModule_102 --> KaLibraryModule_53
KaScriptModule_102 --> KaLibraryModule_54
KaScriptModule_102 --> KaLibraryModule_55
KaScriptModule_102 --> KaLibraryModule_56
KaScriptModule_102 --> KaLibraryModule_57
KaScriptModule_102 --> KaLibraryModule_58
KaScriptModule_102 --> KaLibraryModule_59
KaScriptModule_102 --> KaLibraryModule_60
KaScriptModule_102 --> KaLibraryModule_61
KaScriptModule_102 --> KaLibraryModule_62
KaScriptModule_102 --> KaLibraryModule_63
KaScriptModule_102 --> KaLibraryModule_64
KaScriptModule_102 --> KaLibraryModule_65
KaScriptModule_102 --> KaLibraryModule_66
KaScriptModule_102 --> KaLibraryModule_67
KaScriptModule_102 --> KaLibraryModule_68
KaScriptModule_102 --> KaLibraryModule_69
KaScriptModule_102 --> KaLibraryModule_70
KaScriptModule_102 --> KaLibraryModule_97
KaScriptModule_102 --> KaLibraryModule_98
KaScriptModule_102 --> KaSourceModule_106
KaScriptModule_102 --> KaSourceModule_107
KaScriptModule_103 --> KaLibraryModule_100
KaScriptModule_103 --> KaLibraryModule_101
KaScriptModule_103 --> KaLibraryModule_25
KaScriptModule_103 --> KaLibraryModule_28
KaScriptModule_103 --> KaLibraryModule_29
KaScriptModule_103 --> KaLibraryModule_30
KaScriptModule_103 --> KaLibraryModule_31
KaScriptModule_103 --> KaLibraryModule_32
KaScriptModule_103 --> KaLibraryModule_33
KaScriptModule_103 --> KaLibraryModule_34
KaScriptModule_103 --> KaLibraryModule_35
KaScriptModule_103 --> KaLibraryModule_36
KaScriptModule_103 --> KaLibraryModule_37
KaScriptModule_103 --> KaLibraryModule_38
KaScriptModule_103 --> KaLibraryModule_39
KaScriptModule_103 --> KaLibraryModule_40
KaScriptModule_103 --> KaLibraryModule_41
KaScriptModule_103 --> KaLibraryModule_42
KaScriptModule_103 --> KaLibraryModule_43
KaScriptModule_103 --> KaLibraryModule_44
KaScriptModule_103 --> KaLibraryModule_45
KaScriptModule_103 --> KaLibraryModule_46
KaScriptModule_103 --> KaLibraryModule_47
KaScriptModule_103 --> KaLibraryModule_48
KaScriptModule_103 --> KaLibraryModule_49
KaScriptModule_103 --> KaLibraryModule_50
KaScriptModule_103 --> KaLibraryModule_51
KaScriptModule_103 --> KaLibraryModule_52
KaScriptModule_103 --> KaLibraryModule_53
KaScriptModule_103 --> KaLibraryModule_54
KaScriptModule_103 --> KaLibraryModule_55
KaScriptModule_103 --> KaLibraryModule_56
KaScriptModule_103 --> KaLibraryModule_57
KaScriptModule_103 --> KaLibraryModule_58
KaScriptModule_103 --> KaLibraryModule_59
KaScriptModule_103 --> KaLibraryModule_60
KaScriptModule_103 --> KaLibraryModule_61
KaScriptModule_103 --> KaLibraryModule_62
KaScriptModule_103 --> KaLibraryModule_63
KaScriptModule_103 --> KaLibraryModule_64
KaScriptModule_103 --> KaLibraryModule_65
KaScriptModule_103 --> KaLibraryModule_66
KaScriptModule_103 --> KaLibraryModule_67
KaScriptModule_103 --> KaLibraryModule_68
KaScriptModule_103 --> KaLibraryModule_69
KaScriptModule_103 --> KaLibraryModule_97
KaScriptModule_103 --> KaLibraryModule_99
KaScriptModule_103 --> KaSourceModule_108
KaScriptModule_103 --> KaSourceModule_109
KaScriptModule_104 --> KaLibraryModule_25
KaScriptModule_104 --> KaLibraryModule_26
KaScriptModule_104 --> KaLibraryModule_46
KaScriptModule_104 --> KaLibraryModule_47
KaScriptModule_104 --> KaLibraryModule_48
KaScriptModule_104 --> KaLibraryModule_49
KaScriptModule_104 --> KaLibraryModule_50
KaScriptModule_104 --> KaLibraryModule_51
KaScriptModule_104 --> KaLibraryModule_52
KaScriptModule_104 --> KaLibraryModule_53
KaScriptModule_104 --> KaLibraryModule_54
KaScriptModule_104 --> KaLibraryModule_55
KaScriptModule_104 --> KaLibraryModule_56
KaScriptModule_104 --> KaLibraryModule_57
KaScriptModule_104 --> KaLibraryModule_58
KaScriptModule_104 --> KaLibraryModule_59
KaScriptModule_104 --> KaLibraryModule_60
KaScriptModule_104 --> KaLibraryModule_61
KaScriptModule_104 --> KaLibraryModule_62
KaScriptModule_104 --> KaLibraryModule_63
KaScriptModule_104 --> KaLibraryModule_64
KaScriptModule_104 --> KaLibraryModule_65
KaScriptModule_104 --> KaLibraryModule_66
KaScriptModule_104 --> KaLibraryModule_67
KaScriptModule_104 --> KaLibraryModule_68
KaScriptModule_104 --> KaLibraryModule_69
KaScriptModule_104 --> KaLibraryModule_71
KaScriptModule_104 --> KaLibraryModule_97
KaScriptModule_104 --> KaSourceModule_106
KaScriptModule_104 --> KaSourceModule_107
KaScriptModule_105 --> KaLibraryModule_25
KaScriptModule_105 --> KaLibraryModule_26
KaScriptModule_105 --> KaLibraryModule_46
KaScriptModule_105 --> KaLibraryModule_47
KaScriptModule_105 --> KaLibraryModule_48
KaScriptModule_105 --> KaLibraryModule_49
KaScriptModule_105 --> KaLibraryModule_50
KaScriptModule_105 --> KaLibraryModule_51
KaScriptModule_105 --> KaLibraryModule_52
KaScriptModule_105 --> KaLibraryModule_53
KaScriptModule_105 --> KaLibraryModule_54
KaScriptModule_105 --> KaLibraryModule_55
KaScriptModule_105 --> KaLibraryModule_56
KaScriptModule_105 --> KaLibraryModule_57
KaScriptModule_105 --> KaLibraryModule_58
KaScriptModule_105 --> KaLibraryModule_59
KaScriptModule_105 --> KaLibraryModule_60
KaScriptModule_105 --> KaLibraryModule_61
KaScriptModule_105 --> KaLibraryModule_62
KaScriptModule_105 --> KaLibraryModule_63
KaScriptModule_105 --> KaLibraryModule_64
KaScriptModule_105 --> KaLibraryModule_65
KaScriptModule_105 --> KaLibraryModule_66
KaScriptModule_105 --> KaLibraryModule_67
KaScriptModule_105 --> KaLibraryModule_68
KaScriptModule_105 --> KaLibraryModule_69
KaScriptModule_105 --> KaLibraryModule_71
KaScriptModule_105 --> KaLibraryModule_97
KaScriptModule_105 --> KaSourceModule_108
KaScriptModule_105 --> KaSourceModule_109
KaSourceModule_106 --> KaLibraryModule_97
KaSourceModule_107 --> KaLibraryModule_97
KaSourceModule_107 --> KaSourceModule_106
KaSourceModule_108 --> KaLibraryModule_97
KaSourceModule_109 --> KaLibraryModule_97
KaSourceModule_109 --> KaSourceModule_108
KaSourceModule_110 --> KaLibraryModule_72
KaSourceModule_110 --> KaLibraryModule_73
KaSourceModule_110 --> KaLibraryModule_74
KaSourceModule_110 --> KaLibraryModule_75
KaSourceModule_110 --> KaLibraryModule_76
KaSourceModule_110 --> KaLibraryModule_77
KaSourceModule_110 --> KaLibraryModule_78
KaSourceModule_110 --> KaLibraryModule_79
KaSourceModule_110 --> KaLibraryModule_80
KaSourceModule_110 --> KaLibraryModule_81
KaSourceModule_110 --> KaLibraryModule_82
KaSourceModule_110 --> KaLibraryModule_83
KaSourceModule_110 --> KaLibraryModule_84
KaSourceModule_110 --> KaLibraryModule_85
KaSourceModule_110 --> KaLibraryModule_86
KaSourceModule_110 --> KaLibraryModule_87
KaSourceModule_110 --> KaLibraryModule_88
KaSourceModule_110 --> KaLibraryModule_89
KaSourceModule_110 --> KaLibraryModule_90
KaSourceModule_110 --> KaLibraryModule_91
KaSourceModule_110 --> KaLibraryModule_92
KaSourceModule_110 --> KaLibraryModule_93
KaSourceModule_110 --> KaLibraryModule_94
KaSourceModule_110 --> KaLibraryModule_95
KaSourceModule_110 --> KaLibraryModule_96
KaSourceModule_110 --> KaLibraryModule_97
KaScriptModule_102 --friend--> KaSourceModule_106
KaScriptModule_102 --friend--> KaSourceModule_110
KaScriptModule_103 --friend--> KaSourceModule_108
KaScriptModule_104 --friend--> KaSourceModule_106
KaScriptModule_104 --friend--> KaSourceModule_110
KaScriptModule_105 --friend--> KaSourceModule_108
KaSourceModule_107 --friend--> KaSourceModule_106
KaSourceModule_109 --friend--> KaSourceModule_108
KaLibraryModule_97 --> KaLibraryFallbackDependenciesModule_97
KaLibraryModule_98 --> KaLibraryFallbackDependenciesModule_98
KaLibraryModule_99 --> KaLibraryFallbackDependenciesModule_99
KaScriptModule_151 --> KaLibraryModule_100
KaScriptModule_151 --> KaLibraryModule_103
KaScriptModule_151 --> KaLibraryModule_104
KaScriptModule_151 --> KaLibraryModule_125
KaScriptModule_151 --> KaLibraryModule_126
KaScriptModule_151 --> KaLibraryModule_127
KaScriptModule_151 --> KaLibraryModule_128
KaScriptModule_151 --> KaLibraryModule_129
KaScriptModule_151 --> KaLibraryModule_130
KaScriptModule_151 --> KaLibraryModule_131
KaScriptModule_151 --> KaLibraryModule_132
KaScriptModule_151 --> KaLibraryModule_133
KaScriptModule_151 --> KaLibraryModule_134
KaScriptModule_151 --> KaLibraryModule_135
KaScriptModule_151 --> KaLibraryModule_136
KaScriptModule_151 --> KaLibraryModule_137
KaScriptModule_151 --> KaLibraryModule_138
KaScriptModule_151 --> KaLibraryModule_139
KaScriptModule_151 --> KaLibraryModule_140
KaScriptModule_151 --> KaLibraryModule_141
KaScriptModule_151 --> KaLibraryModule_142
KaScriptModule_151 --> KaLibraryModule_143
KaScriptModule_151 --> KaLibraryModule_144
KaScriptModule_151 --> KaLibraryModule_145
KaScriptModule_151 --> KaLibraryModule_146
KaScriptModule_151 --> KaLibraryModule_147
KaScriptModule_151 --> KaLibraryModule_148
KaScriptModule_151 --> KaLibraryModule_149
KaScriptModule_151 --> KaLibraryModule_150
KaScriptModule_151 --> KaSourceModule_155
KaScriptModule_151 --> KaSourceModule_156
KaScriptModule_152 --> KaLibraryModule_102
KaScriptModule_152 --> KaLibraryModule_103
KaScriptModule_152 --> KaLibraryModule_105
KaScriptModule_152 --> KaLibraryModule_106
KaScriptModule_152 --> KaLibraryModule_107
KaScriptModule_152 --> KaLibraryModule_108
KaScriptModule_152 --> KaLibraryModule_109
KaScriptModule_152 --> KaLibraryModule_110
KaScriptModule_152 --> KaLibraryModule_111
KaScriptModule_152 --> KaLibraryModule_112
KaScriptModule_152 --> KaLibraryModule_113
KaScriptModule_152 --> KaLibraryModule_114
KaScriptModule_152 --> KaLibraryModule_115
KaScriptModule_152 --> KaLibraryModule_116
KaScriptModule_152 --> KaLibraryModule_117
KaScriptModule_152 --> KaLibraryModule_118
KaScriptModule_152 --> KaLibraryModule_119
KaScriptModule_152 --> KaLibraryModule_120
KaScriptModule_152 --> KaLibraryModule_121
KaScriptModule_152 --> KaLibraryModule_122
KaScriptModule_152 --> KaLibraryModule_123
KaScriptModule_152 --> KaLibraryModule_124
KaScriptModule_152 --> KaLibraryModule_125
KaScriptModule_152 --> KaLibraryModule_126
KaScriptModule_152 --> KaLibraryModule_127
KaScriptModule_152 --> KaLibraryModule_128
KaScriptModule_152 --> KaLibraryModule_129
KaScriptModule_152 --> KaLibraryModule_130
KaScriptModule_152 --> KaLibraryModule_131
KaScriptModule_152 --> KaLibraryModule_132
KaScriptModule_152 --> KaLibraryModule_133
KaScriptModule_152 --> KaLibraryModule_134
KaScriptModule_152 --> KaLibraryModule_135
KaScriptModule_152 --> KaLibraryModule_136
KaScriptModule_152 --> KaLibraryModule_137
KaScriptModule_152 --> KaLibraryModule_138
KaScriptModule_152 --> KaLibraryModule_139
KaScriptModule_152 --> KaLibraryModule_140
KaScriptModule_152 --> KaLibraryModule_141
KaScriptModule_152 --> KaLibraryModule_142
KaScriptModule_152 --> KaLibraryModule_143
KaScriptModule_152 --> KaLibraryModule_144
KaScriptModule_152 --> KaLibraryModule_145
KaScriptModule_152 --> KaLibraryModule_146
KaScriptModule_152 --> KaLibraryModule_147
KaScriptModule_152 --> KaLibraryModule_148
KaScriptModule_152 --> KaLibraryModule_150
KaScriptModule_152 --> KaSourceModule_157
KaScriptModule_152 --> KaSourceModule_158
KaScriptModule_153 --> KaLibraryModule_101
KaScriptModule_153 --> KaLibraryModule_103
KaScriptModule_153 --> KaLibraryModule_125
KaScriptModule_153 --> KaLibraryModule_126
KaScriptModule_153 --> KaLibraryModule_127
KaScriptModule_153 --> KaLibraryModule_128
KaScriptModule_153 --> KaLibraryModule_129
KaScriptModule_153 --> KaLibraryModule_130
KaScriptModule_153 --> KaLibraryModule_131
KaScriptModule_153 --> KaLibraryModule_132
KaScriptModule_153 --> KaLibraryModule_133
KaScriptModule_153 --> KaLibraryModule_134
KaScriptModule_153 --> KaLibraryModule_135
KaScriptModule_153 --> KaLibraryModule_136
KaScriptModule_153 --> KaLibraryModule_137
KaScriptModule_153 --> KaLibraryModule_138
KaScriptModule_153 --> KaLibraryModule_139
KaScriptModule_153 --> KaLibraryModule_140
KaScriptModule_153 --> KaLibraryModule_141
KaScriptModule_153 --> KaLibraryModule_142
KaScriptModule_153 --> KaLibraryModule_143
KaScriptModule_153 --> KaLibraryModule_144
KaScriptModule_153 --> KaLibraryModule_145
KaScriptModule_153 --> KaLibraryModule_146
KaScriptModule_153 --> KaLibraryModule_147
KaScriptModule_153 --> KaLibraryModule_148
KaScriptModule_153 --> KaLibraryModule_149
KaScriptModule_153 --> KaLibraryModule_150
KaScriptModule_153 --> KaSourceModule_155
KaScriptModule_153 --> KaSourceModule_156
KaScriptModule_154 --> KaLibraryModule_101
KaScriptModule_154 --> KaLibraryModule_103
KaScriptModule_154 --> KaLibraryModule_125
KaScriptModule_154 --> KaLibraryModule_126
KaScriptModule_154 --> KaLibraryModule_127
KaScriptModule_154 --> KaLibraryModule_128
KaScriptModule_154 --> KaLibraryModule_129
KaScriptModule_154 --> KaLibraryModule_130
KaScriptModule_154 --> KaLibraryModule_131
KaScriptModule_154 --> KaLibraryModule_132
KaScriptModule_154 --> KaLibraryModule_133
KaScriptModule_154 --> KaLibraryModule_134
KaScriptModule_154 --> KaLibraryModule_135
KaScriptModule_154 --> KaLibraryModule_136
KaScriptModule_154 --> KaLibraryModule_137
KaScriptModule_154 --> KaLibraryModule_138
KaScriptModule_154 --> KaLibraryModule_139
KaScriptModule_154 --> KaLibraryModule_140
KaScriptModule_154 --> KaLibraryModule_141
KaScriptModule_154 --> KaLibraryModule_142
KaScriptModule_154 --> KaLibraryModule_143
KaScriptModule_154 --> KaLibraryModule_144
KaScriptModule_154 --> KaLibraryModule_145
KaScriptModule_154 --> KaLibraryModule_146
KaScriptModule_154 --> KaLibraryModule_147
KaScriptModule_154 --> KaLibraryModule_148
KaScriptModule_154 --> KaLibraryModule_149
KaScriptModule_154 --> KaLibraryModule_150
KaScriptModule_154 --> KaSourceModule_157
KaScriptModule_154 --> KaSourceModule_158
KaSourceModule_155 --> KaLibraryModule_150
KaSourceModule_156 --> KaLibraryModule_150
KaSourceModule_156 --> KaSourceModule_155
KaSourceModule_157 --> KaLibraryModule_150
KaSourceModule_158 --> KaLibraryModule_150
KaSourceModule_158 --> KaSourceModule_157
KaSourceModule_159 --> KaLibraryModule_150
KaSourceModule_159 --> KaLibraryModule_75
KaSourceModule_159 --> KaLibraryModule_76
KaSourceModule_159 --> KaLibraryModule_77
KaSourceModule_159 --> KaLibraryModule_78
KaSourceModule_159 --> KaLibraryModule_79
KaSourceModule_159 --> KaLibraryModule_80
KaSourceModule_159 --> KaLibraryModule_81
KaSourceModule_159 --> KaLibraryModule_82
KaSourceModule_159 --> KaLibraryModule_83
KaSourceModule_159 --> KaLibraryModule_84
KaSourceModule_159 --> KaLibraryModule_85
KaSourceModule_159 --> KaLibraryModule_86
KaSourceModule_159 --> KaLibraryModule_87
KaSourceModule_159 --> KaLibraryModule_88
KaSourceModule_159 --> KaLibraryModule_89
KaSourceModule_159 --> KaLibraryModule_90
KaSourceModule_159 --> KaLibraryModule_91
KaSourceModule_159 --> KaLibraryModule_92
KaSourceModule_159 --> KaLibraryModule_93
KaSourceModule_159 --> KaLibraryModule_94
KaSourceModule_159 --> KaLibraryModule_95
KaSourceModule_159 --> KaLibraryModule_96
KaSourceModule_159 --> KaLibraryModule_97
KaSourceModule_159 --> KaLibraryModule_98
KaSourceModule_159 --> KaLibraryModule_99
KaScriptModule_151 --friend--> KaSourceModule_155
KaScriptModule_151 --friend--> KaSourceModule_159
KaScriptModule_152 --friend--> KaSourceModule_157
KaScriptModule_153 --friend--> KaSourceModule_155
KaScriptModule_153 --friend--> KaSourceModule_159
KaScriptModule_154 --friend--> KaSourceModule_157
KaSourceModule_156 --friend--> KaSourceModule_155
KaSourceModule_158 --friend--> KaSourceModule_157
linkStyle 0 stroke:black
linkStyle 1 stroke:black
linkStyle 2 stroke:black
@@ -594,11 +692,61 @@ graph TD
linkStyle 194 stroke:black
linkStyle 195 stroke:black
linkStyle 196 stroke:black
linkStyle 197 stroke:#E6C767
linkStyle 198 stroke:#E6C767
linkStyle 199 stroke:#E6C767
linkStyle 200 stroke:#E6C767
linkStyle 201 stroke:#E6C767
linkStyle 202 stroke:#E6C767
linkStyle 203 stroke:#E6C767
linkStyle 204 stroke:#E6C767
linkStyle 197 stroke:black
linkStyle 198 stroke:black
linkStyle 199 stroke:black
linkStyle 200 stroke:black
linkStyle 201 stroke:black
linkStyle 202 stroke:black
linkStyle 203 stroke:black
linkStyle 204 stroke:black
linkStyle 205 stroke:black
linkStyle 206 stroke:black
linkStyle 207 stroke:black
linkStyle 208 stroke:black
linkStyle 209 stroke:black
linkStyle 210 stroke:black
linkStyle 211 stroke:black
linkStyle 212 stroke:black
linkStyle 213 stroke:black
linkStyle 214 stroke:black
linkStyle 215 stroke:black
linkStyle 216 stroke:black
linkStyle 217 stroke:black
linkStyle 218 stroke:black
linkStyle 219 stroke:black
linkStyle 220 stroke:black
linkStyle 221 stroke:black
linkStyle 222 stroke:black
linkStyle 223 stroke:black
linkStyle 224 stroke:black
linkStyle 225 stroke:black
linkStyle 226 stroke:black
linkStyle 227 stroke:black
linkStyle 228 stroke:black
linkStyle 229 stroke:black
linkStyle 230 stroke:black
linkStyle 231 stroke:black
linkStyle 232 stroke:black
linkStyle 233 stroke:black
linkStyle 234 stroke:black
linkStyle 235 stroke:black
linkStyle 236 stroke:black
linkStyle 237 stroke:black
linkStyle 238 stroke:black
linkStyle 239 stroke:black
linkStyle 240 stroke:black
linkStyle 241 stroke:black
linkStyle 242 stroke:black
linkStyle 243 stroke:black
linkStyle 244 stroke:black
linkStyle 245 stroke:black
linkStyle 246 stroke:black
linkStyle 247 stroke:#E6C767
linkStyle 248 stroke:#E6C767
linkStyle 249 stroke:#E6C767
linkStyle 250 stroke:#E6C767
linkStyle 251 stroke:#E6C767
linkStyle 252 stroke:#E6C767
linkStyle 253 stroke:#E6C767
linkStyle 254 stroke:#E6C767
@@ -53,19 +53,55 @@ internal abstract class AbstractGradleKotlinProjectStructureTest : AbstractGradl
txt to mermaid
}
val gradleLocalPath = getGradleLocalRepoPath(project).invariantSeparatorsPathString.removeSuffix("/")
val javaHome = getJavaHomePath(project).invariantSeparatorsPathString.removeSuffix("/")
val projectPath = getBaseProjectPath(project).invariantSeparatorsPathString.removeSuffix("/")
val userHome = Path(System.getProperty("user.home")).invariantSeparatorsPathString.removeSuffix("/")
/**
* jar:///home/neon/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar!/
* =>
* jar:///MAVEN_REPOSITORY/org/jetbrains/annotations/13.0/annotations-13.0.jar!/
*/
fun String.replaceLocalPathWithPlaceholder(): String =
replace(gradleLocalPath, GRADLE_IML_PLACEHOLDER, ignoreCase = false)
.replace(javaHome, JAVA_HOME_PLACEHOLDER, ignoreCase = false)
.replace(projectPath, PROJECT_IML_PLACEHOLDER, ignoreCase = false)
.replace(userHome, USER_HOME_PLACEHOLDER, ignoreCase = false)
// .replaceTransformHash()
// .replaceAccessorsHash()
val testDataFilePath = dataFile().toPath()
KotlinTestUtils.assertEqualsToFile(
testDataFilePath.resolveSibling(testDataFilePath.nameWithoutExtension + ".txt"),
txt
) { replaceLocalPathWithPlaceholder(it, project) }
) { it.replaceLocalPathWithPlaceholder() }
KotlinTestUtils.assertEqualsToFile(
testDataFilePath.resolveSibling(testDataFilePath.nameWithoutExtension + ".mmd"),
mermaid
) { replaceLocalPathWithPlaceholder(it, project) }
) { it.replaceLocalPathWithPlaceholder() }
}
}
private fun String.replaceTransformHash(): String {
val transformsIndex = indexOf("/transforms/")
val transformedIndex = indexOf("/transformed/")
return if (transformsIndex != -1 && transformedIndex != -1 && transformsIndex < transformedIndex) {
removeRange(transformsIndex, transformedIndex)
} else this
}
private fun String.replaceAccessorsHash(): String {
val transformsIndex = indexOf("/accessors/")
val transformedIndex = indexOf("/classes/")
return if (transformsIndex != -1 && transformedIndex != -1 && transformsIndex < transformedIndex) {
removeRange(transformsIndex, transformedIndex)
} else this
}
@OptIn(KaExperimentalApi::class)
private fun validateScriptModules(modules: List<KaModule>) {
val allVirtualFiles = getAllVirtualFiles()
@@ -113,23 +149,6 @@ internal abstract class AbstractGradleKotlinProjectStructureTest : AbstractGradl
return result.toList()
}
/**
* jar:///home/neon/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar!/
* =>
* jar:///MAVEN_REPOSITORY/org/jetbrains/annotations/13.0/annotations-13.0.jar!/
*/
private fun replaceLocalPathWithPlaceholder(input: String, project: Project): String {
val gradleLocalPath = getGradleLocalRepoPath(project).invariantSeparatorsPathString.removeSuffix("/")
val javaHome = getJavaHomePath(project).invariantSeparatorsPathString.removeSuffix("/")
val projectPath = getBaseProjectPath(project).invariantSeparatorsPathString.removeSuffix("/")
val userHome = Path(System.getProperty("user.home")).invariantSeparatorsPathString.removeSuffix("/")
return input
.replace(gradleLocalPath, GRADLE_IML_PLACEHOLDER, ignoreCase = false)
.replace(javaHome, JAVA_HOME_PLACEHOLDER, ignoreCase = false)
.replace(projectPath, PROJECT_IML_PLACEHOLDER, ignoreCase = false)
.replace(userHome, USER_HOME_PLACEHOLDER, ignoreCase = false)
}
private fun getGradleLocalRepoPath(project: Project): Path {
return GradleInstallationManager.getInstance()
.getGradleHomePath(project, project.stateStore.projectBasePath.invariantSeparatorsPathString)