[Commonizer] Switch from trove4j to fastutil

^KT-63159
This commit is contained in:
Dmitriy Dolovov
2023-11-03 15:08:27 +01:00
committed by Space Team
parent 7658b818ac
commit 0de04f934e
18 changed files with 63 additions and 70 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ dependencies {
compileOnly(project(":native:frontend.native"))
compileOnly(project(":kotlin-util-klib-metadata"))
compileOnly(intellijCore())
compileOnly(commonDependency("org.jetbrains.intellij.deps:trove4j"))
compileOnly(commonDependency("org.jetbrains.intellij.deps.fastutil:intellij-deps-fastutil"))
// This dependency is necessary to keep the right dependency record inside of POM file:
publishedCompile(project(":kotlin-compiler"))
@@ -7,7 +7,7 @@
package org.jetbrains.kotlin.commonizer
import gnu.trove.THashMap
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
sealed interface TargetDependent<T> : Iterable<T> {
val size: Int get() = targets.size
@@ -116,7 +116,7 @@ private class FactoryBasedTargetDependent<T>(
private object Null
private object Uninitialized
private val values = targets.associateWithTo(THashMap<CommonizerTarget, Any>(targets.size)) { Uninitialized }
private val values = targets.associateWithTo(CommonizerMap<CommonizerTarget, Any>(targets.size)) { Uninitialized }
@Suppress("UNCHECKED_CAST")
override fun get(target: CommonizerTarget): T {
@@ -7,9 +7,9 @@
package org.jetbrains.kotlin.commonizer.konan
import gnu.trove.THashMap
import org.jetbrains.kotlin.commonizer.CommonizerTarget
import org.jetbrains.kotlin.commonizer.UniqueLibraryName
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
import org.jetbrains.kotlin.library.KotlinLibrary
interface NativeManifestDataProvider {
@@ -80,11 +80,11 @@ internal class CommonNativeManifestDataProvider(
internal fun NativeManifestDataProvider(target: CommonizerTarget, libraries: List<NativeLibrariesToCommonize>): NativeManifestDataProvider {
val manifestsByName = libraries
.flatMap { it.libraries }
.groupByTo(THashMap()) { it.manifestData.uniqueName }
.groupByTo(CommonizerMap()) { it.manifestData.uniqueName }
.mapValues { (_, libraries) -> libraries.map { it.manifestData } }
return CommonNativeManifestDataProvider(target, manifestsByName)
}
private fun NativeLibrariesToCommonize.buildManifestIndex(): MutableMap<UniqueLibraryName, NativeSensitiveManifestData> =
libraries.map { it.manifestData }.associateByTo(THashMap()) { it.uniqueName }
libraries.map { it.manifestData }.associateByTo(CommonizerMap()) { it.uniqueName }
@@ -7,12 +7,12 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import gnu.trove.THashMap
import gnu.trove.THashSet
import org.jetbrains.kotlin.commonizer.TargetDependent
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
import org.jetbrains.kotlin.commonizer.cir.CirProvided
import org.jetbrains.kotlin.commonizer.cir.CirTypeAlias
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
import org.jetbrains.kotlin.commonizer.utils.CommonizerSet
internal fun AssociatedClassifierIdsResolver(
classifierIndices: TargetDependent<CirClassifierIndex>,
@@ -38,8 +38,8 @@ internal interface AssociatedClassifierIdsResolverCache {
}
private class Default : AssociatedClassifierIdsResolverCache {
private val cachedResults = THashMap<CirEntityId, AssociatedClassifierIds>()
private val cachedNullResults = THashSet<CirEntityId>()
private val cachedResults = CommonizerMap<CirEntityId, AssociatedClassifierIds>()
private val cachedNullResults = CommonizerSet<CirEntityId>()
override fun set(id: CirEntityId, result: AssociatedClassifierIds?) {
if (result == null) cachedNullResults.add(id)
@@ -67,10 +67,10 @@ private class AssociatedClassifierIdsResolverImpl(
override fun resolveAssociatedIds(id: CirEntityId): AssociatedClassifierIds? {
cache[id]?.let { return it }
val results = THashSet<CirEntityId>()
val results = CommonizerSet<CirEntityId>()
/* Set of every classifier id that once was enqueued already */
val visited = THashSet<CirEntityId>()
val visited = CommonizerSet<CirEntityId>()
/* Actual, current queue of classifiers to resolve */
val queue = ArrayDeque<CirEntityId>()
@@ -5,11 +5,11 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import gnu.trove.THashMap
import org.jetbrains.kotlin.commonizer.cir.CirClass
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
import org.jetbrains.kotlin.commonizer.cir.CirName
import org.jetbrains.kotlin.commonizer.utils.CommonizedGroup
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
import org.jetbrains.kotlin.storage.NullableLazyValue
class CirClassNode(
@@ -18,10 +18,10 @@ class CirClassNode(
override val commonDeclaration: NullableLazyValue<CirClass>,
) : CirClassifierNode<CirClass, CirClass>, CirNodeWithMembers<CirClass, CirClass> {
val constructors: MutableMap<ConstructorApproximationKey, CirClassConstructorNode> = THashMap()
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = THashMap()
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = THashMap()
override val classes: MutableMap<CirName, CirClassNode> = THashMap()
val constructors: MutableMap<ConstructorApproximationKey, CirClassConstructorNode> = CommonizerMap()
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = CommonizerMap()
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = CommonizerMap()
override val classes: MutableMap<CirName, CirClassNode> = CommonizerMap()
override fun <T, R> accept(visitor: CirNodeVisitor<T, R>, data: T): R =
visitor.visitClassNode(this, data)
@@ -10,13 +10,13 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import gnu.trove.THashMap
import gnu.trove.THashSet
import org.jetbrains.kotlin.commonizer.cir.CirClass
import org.jetbrains.kotlin.commonizer.cir.CirClassifier
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
import org.jetbrains.kotlin.commonizer.cir.CirTypeAlias
import org.jetbrains.kotlin.commonizer.tree.*
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
import org.jetbrains.kotlin.commonizer.utils.CommonizerSet
fun CirClassifierIndex(tree: CirTreeRoot): CirClassifierIndex {
return CirClassifierIndexBuilder().apply { invoke(tree) }.build()
@@ -62,9 +62,9 @@ private class CirClassifierIndexBuilder {
const val initialCapacity = 1000
}
private val typeAliasesByUnderlyingType = THashMap<CirEntityId, MutableList<CirTreeTypeAlias>>(initialCapacity)
private val classifiersById = THashMap<CirEntityId, CirClassifier>(initialCapacity)
private val classifierIds = THashSet<CirEntityId>(initialCapacity)
private val typeAliasesByUnderlyingType = CommonizerMap<CirEntityId, MutableList<CirTreeTypeAlias>>(initialCapacity)
private val classifiersById = CommonizerMap<CirEntityId, CirClassifier>(initialCapacity)
private val classifierIds = CommonizerSet<CirEntityId>(initialCapacity)
operator fun invoke(tree: CirTreeRoot) {
tree.modules.forEach { module -> this(module) }
@@ -5,11 +5,11 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import gnu.trove.THashMap
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
import org.jetbrains.kotlin.commonizer.cir.CirName
import org.jetbrains.kotlin.commonizer.cir.CirPackageName
import org.jetbrains.kotlin.commonizer.cir.CirProvided
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.types.Variance
@@ -21,7 +21,7 @@ object CirFictitiousFunctionClassifiers : CirProvidedClassifiers {
private val FUNCTION_PREFIXES = arrayOf("Function", "SuspendFunction")
private val PACKAGE_NAME = CirPackageName.create("kotlin")
private val classifiers: Map<CirEntityId, CirProvided.RegularClass> = THashMap<CirEntityId, CirProvided.RegularClass>().apply {
private val classifiers: Map<CirEntityId, CirProvided.RegularClass> = CommonizerMap<CirEntityId, CirProvided.RegularClass>().apply {
(MIN_ARITY..MAX_ARITY).forEach { arity ->
FUNCTION_PREFIXES.forEach { prefix ->
buildFictitiousFunctionClass(prefix, arity, this::set)
@@ -5,9 +5,9 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import gnu.trove.THashMap
import org.jetbrains.kotlin.commonizer.TargetDependent
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
class CirKnownClassifiers(
val classifierIndices: TargetDependent<CirClassifierIndex>,
@@ -30,8 +30,8 @@ interface CirCommonizedClassifierNodes {
companion object {
fun default(allowedDuplicates: Set<CirEntityId> = setOf()) = object : CirCommonizedClassifierNodes {
private val classNodes = THashMap<CirEntityId, CirClassNode>()
private val typeAliases = THashMap<CirEntityId, CirTypeAliasNode>()
private val classNodes = CommonizerMap<CirEntityId, CirClassNode>()
private val typeAliases = CommonizerMap<CirEntityId, CirTypeAliasNode>()
override fun classNode(classId: CirEntityId) = classNodes[classId]
override fun typeAliasNode(typeAliasId: CirEntityId) = typeAliases[typeAliasId]
@@ -5,17 +5,17 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import gnu.trove.THashMap
import org.jetbrains.kotlin.commonizer.cir.CirModule
import org.jetbrains.kotlin.commonizer.cir.CirPackageName
import org.jetbrains.kotlin.commonizer.utils.CommonizedGroup
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
import org.jetbrains.kotlin.storage.NullableLazyValue
class CirModuleNode(
override val targetDeclarations: CommonizedGroup<CirModule>,
override val commonDeclaration: NullableLazyValue<CirModule>
) : CirNode<CirModule, CirModule> {
val packages: MutableMap<CirPackageName, CirPackageNode> = THashMap()
val packages: MutableMap<CirPackageName, CirPackageNode> = CommonizerMap()
override fun <T, R> accept(visitor: CirNodeVisitor<T, R>, data: T) =
visitor.visitModuleNode(this, data)
@@ -5,11 +5,11 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import gnu.trove.THashMap
import org.jetbrains.kotlin.commonizer.cir.CirName
import org.jetbrains.kotlin.commonizer.cir.CirPackage
import org.jetbrains.kotlin.commonizer.cir.CirPackageName
import org.jetbrains.kotlin.commonizer.utils.CommonizedGroup
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
import org.jetbrains.kotlin.commonizer.utils.firstNonNull
import org.jetbrains.kotlin.storage.NullableLazyValue
@@ -18,10 +18,10 @@ class CirPackageNode(
override val commonDeclaration: NullableLazyValue<CirPackage>
) : CirNodeWithMembers<CirPackage, CirPackage> {
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = THashMap()
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = THashMap()
override val classes: MutableMap<CirName, CirClassNode> = THashMap()
val typeAliases: MutableMap<CirName, CirTypeAliasNode> = THashMap()
override val properties: MutableMap<PropertyApproximationKey, CirPropertyNode> = CommonizerMap()
override val functions: MutableMap<FunctionApproximationKey, CirFunctionNode> = CommonizerMap()
override val classes: MutableMap<CirName, CirClassNode> = CommonizerMap()
val typeAliases: MutableMap<CirName, CirTypeAliasNode> = CommonizerMap()
val packageName: CirPackageName
get() = targetDeclarations.firstNonNull().packageName
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import com.intellij.util.containers.FactoryMap
import gnu.trove.THashMap
import org.jetbrains.kotlin.commonizer.ModulesProvider
import org.jetbrains.kotlin.commonizer.ModulesProvider.CInteropModuleAttributes
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
@@ -28,7 +27,7 @@ internal class CirProvidedClassifiersByModules internal constructor(
) : CirProvidedClassifiers {
private val typeAliasesByUnderlyingTypes = run {
THashMap<CirEntityId, MutableList<CirEntityId>>().also { map ->
CommonizerMap<CirEntityId, MutableList<CirEntityId>>().also { map ->
classifiers.forEach { (id, classifier) ->
if (classifier is CirProvided.TypeAlias) {
val set = map.computeIfAbsent(classifier.underlyingType.classifierId) { ArrayList() }
@@ -55,14 +54,14 @@ internal class CirProvidedClassifiersByModules internal constructor(
companion object {
fun load(modulesProvider: ModulesProvider): CirProvidedClassifiers {
val classifiers = THashMap<CirEntityId, CirProvided.Classifier>()
val classifiers = CommonizerMap<CirEntityId, CirProvided.Classifier>()
modulesProvider.moduleInfos.forEach { moduleInfo ->
val metadata = modulesProvider.loadModuleMetadata(moduleInfo.name)
readModule(metadata, classifiers::set)
}
if (classifiers.isEmpty)
if (classifiers.isEmpty())
return CirProvidedClassifiers.EMPTY
return CirProvidedClassifiersByModules(false, classifiers)
@@ -73,13 +72,13 @@ internal class CirProvidedClassifiersByModules internal constructor(
* Note: This builds a union *not an intersection* of forward declarations.
*/
fun loadExportedForwardDeclarations(modulesProviders: List<ModulesProvider>): CirProvidedClassifiers {
val classifiers = THashMap<CirEntityId, CirProvided.Classifier>()
val classifiers = CommonizerMap<CirEntityId, CirProvided.Classifier>()
modulesProviders.flatMap { moduleProvider -> moduleProvider.moduleInfos }
.mapNotNull { moduleInfo -> moduleInfo.cInteropAttributes }
.forEach { attrs -> readExportedForwardDeclarations(attrs, classifiers::set) }
if (classifiers.isEmpty) return CirProvidedClassifiers.EMPTY
if (classifiers.isEmpty()) return CirProvidedClassifiers.EMPTY
return CirProvidedClassifiersByModules(true, classifiers)
}
@@ -5,10 +5,10 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import gnu.trove.THashMap
import org.jetbrains.kotlin.commonizer.cir.CirName
import org.jetbrains.kotlin.commonizer.cir.CirRoot
import org.jetbrains.kotlin.commonizer.utils.CommonizedGroup
import org.jetbrains.kotlin.commonizer.utils.CommonizerMap
import org.jetbrains.kotlin.storage.NullableLazyValue
class CirRootNode(
@@ -16,7 +16,7 @@ class CirRootNode(
override val targetDeclarations: CommonizedGroup<CirRoot>,
override val commonDeclaration: NullableLazyValue<CirRoot>
) : CirNode<CirRoot, CirRoot> {
val modules: MutableMap<CirName, CirModuleNode> = THashMap()
val modules: MutableMap<CirName, CirModuleNode> = CommonizerMap()
override fun <T, R> accept(visitor: CirNodeVisitor<T, R>, data: T): R =
visitor.visitRootNode(this, data)
@@ -5,8 +5,8 @@
package org.jetbrains.kotlin.commonizer.mergedtree
import gnu.trove.TIntHashSet
import org.jetbrains.kotlin.commonizer.cir.*
import org.jetbrains.kotlin.commonizer.utils.CommonizerIntSet
import org.jetbrains.kotlin.commonizer.utils.Interner
import org.jetbrains.kotlin.types.Variance
@@ -191,7 +191,7 @@ private class TypeParameterTypeSignatureBuildingContext(
private val functionOrPropertyOrConstructor: CirHasTypeParameters
) : SignatureBuildingContext {
private val alreadyVisitedParameterTypeIndices = TIntHashSet()
private val alreadyVisitedParameterTypeIndices = CommonizerIntSet()
fun isVisitedFirstTime(typeParameterIndex: Int): Boolean {
return alreadyVisitedParameterTypeIndices.add(typeParameterIndex)
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.commonizer.metadata
import gnu.trove.THashMap
import kotlinx.metadata.*
import kotlinx.metadata.Modality as KmModality
import kotlinx.metadata.Visibility as KmVisibility
@@ -54,8 +53,8 @@ object CirDeserializers {
if (allValueArguments.isEmpty())
return CirAnnotation.createInterned(type = type, constantValueArguments = emptyMap(), annotationValueArguments = emptyMap())
val constantValueArguments: MutableMap<CirName, CirConstantValue> = THashMap(allValueArguments.size)
val annotationValueArguments: MutableMap<CirName, CirAnnotation> = THashMap(allValueArguments.size)
val constantValueArguments: MutableMap<CirName, CirConstantValue> = CommonizerMap(allValueArguments.size)
val annotationValueArguments: MutableMap<CirName, CirAnnotation> = CommonizerMap(allValueArguments.size)
allValueArguments.forEach { (name, constantValue) ->
val cirName = CirName.create(name)
@@ -5,12 +5,12 @@
package org.jetbrains.kotlin.commonizer.metadata
import gnu.trove.TIntObjectHashMap
import kotlinx.metadata.KmTypeParameter
import org.jetbrains.kotlin.commonizer.cir.CirEntityId
import org.jetbrains.kotlin.commonizer.cir.CirProvided
import org.jetbrains.kotlin.commonizer.mergedtree.CirProvidedClassifiers
import org.jetbrains.kotlin.commonizer.tree.deserializer.ClassesToProcess
import org.jetbrains.kotlin.commonizer.utils.CommonizerIntObjectMap
typealias TypeParameterId = Int
typealias TypeParameterIndex = Int
@@ -42,10 +42,10 @@ abstract class CirTypeResolver : CirTypeParameterResolver {
private class Nested(
private val parent: CirTypeResolver,
private val typeParameterMapping: TIntObjectHashMap<TypeParameterInfo>
private val typeParameterMapping: CommonizerIntObjectMap<TypeParameterInfo>
) : CirTypeResolver() {
override val providedClassifiers get() = parent.providedClassifiers
override val typeParameterIndexOffset = typeParameterMapping.size() + parent.typeParameterIndexOffset
override val typeParameterIndexOffset = typeParameterMapping.size + parent.typeParameterIndexOffset
override fun resolveTypeParameterIndex(id: TypeParameterId) =
typeParameterMapping[id]?.index ?: parent.resolveTypeParameterIndex(id)
@@ -60,7 +60,7 @@ abstract class CirTypeResolver : CirTypeParameterResolver {
if (typeParameters.isEmpty())
this
else {
val mapping = TIntObjectHashMap<TypeParameterInfo>(typeParameters.size * 2)
val mapping = CommonizerIntObjectMap<TypeParameterInfo>(typeParameters.size * 2)
typeParameters.forEachIndexed { localIndex, typeParameter ->
val typeParameterInfo = TypeParameterInfo(
index = localIndex + typeParameterIndexOffset,
@@ -0,0 +1,11 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.commonizer.utils
internal typealias CommonizerMap<K, V> = it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<K, V>
internal typealias CommonizerSet<E> = it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<E>
internal typealias CommonizerIntObjectMap<V> = it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap<V>
internal typealias CommonizerIntSet = it.unimi.dsi.fastutil.ints.IntOpenHashSet
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.commonizer.utils
import com.intellij.util.SmartFMap
import gnu.trove.THashMap
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
import java.util.*
import java.util.Collections.singletonList
@@ -17,7 +16,7 @@ internal inline fun <K : Any, V, R> Map<K, V>.compactMapValues(transform: (Map.E
0 -> emptyMap()
1 -> with(entries.iterator().next()) { singletonMap(key, transform(this)) }
2, 3 -> entries.fold(SmartFMap.emptyMap()) { acc, entry -> acc.plus(entry.key, transform(entry)) }
else -> mapValuesTo(THashMap(size), transform)
else -> mapValuesTo(CommonizerMap(size), transform)
}
internal inline fun <T, R> Collection<T>.compactMap(transform: (T) -> R): List<R> =
@@ -69,7 +68,7 @@ internal fun <K, V> Map<K, V>.compact(): Map<K, V> =
0 -> emptyMap()
1 -> with(entries.iterator().next()) { singletonMap(key, value) }
2, 3 -> SmartFMap.emptyMap<K, V>().plusAll(this)
else -> THashMap(this)
else -> CommonizerMap(this)
}
@Suppress("NOTHING_TO_INLINE")
@@ -83,7 +82,7 @@ internal inline fun <K : Any, V> compactMapOf(key1: K, value1: V, key2: K, value
internal inline fun <reified T> Iterable<T?>.firstNonNull() = firstIsInstance<T>()
internal inline fun <reified T, reified K : Any> Collection<T>.foldToMap(keySelector: (T) -> K): Map<K, List<T>> {
val result = fold(THashMap<K, MutableList<T>>()) { accumulator, element ->
val result = fold(CommonizerMap<K, MutableList<T>>()) { accumulator, element ->
accumulator.getOrPut(keySelector(element)) { ArrayList() } += element
accumulator
}
@@ -239,21 +239,6 @@ class CodeConformanceTest : TestCase() {
"js/js.ast/src/org/jetbrains/kotlin/js/backend/JsReservedIdentifiers.java",
"js/js.ast/src/org/jetbrains/kotlin/js/backend/JsToStringGenerationVisitor.java",
"js/js.sourcemap/src/org/jetbrains/kotlin/js/sourceMap/SourceMap3Builder.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/TargetDependent.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/konan/NativeLibrary.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/AssociatedClassifierIdsResolver.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassNode.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirClassifierIndex.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirFictitiousFunctionClassifiers.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirKnownClassifiers.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirModuleNode.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirPackageNode.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirProvidedClassifiersByModules.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirRootNode.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/mergedtree/CirTypeSignature.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirDeserializers.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/metadata/CirTypeResolver.kt",
"native/commonizer/src/org/jetbrains/kotlin/commonizer/utils/misc.kt"
)
) { _, source ->
"gnu.trove" in source