[IR][Native] Decouple CacheDeserializationStrategy from KonanIrLinker

^KT-73754 Fixed
diff --git a/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/CacheDeserializationStrategy.kt b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/CacheDeserializationStrategy.kt
new file mode 100644
index 0000000..e5e5bf4
--- /dev/null
+++ b/compiler/ir/serialization.native/src/org/jetbrains/kotlin/backend/konan/CacheDeserializationStrategy.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2010-2024 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.backend.konan
+
+import org.jetbrains.kotlin.konan.file.File
+import org.jetbrains.kotlin.library.KotlinLibrary
+import org.jetbrains.kotlin.name.FqName
+
+class PartialCacheInfo(val klib: KotlinLibrary, val strategy: CacheDeserializationStrategy)
+
+sealed class CacheDeserializationStrategy {
+    abstract fun contains(filePath: String): Boolean
+    abstract fun contains(fqName: FqName, fileName: String): Boolean
+
+    object Nothing : CacheDeserializationStrategy() {
+        override fun contains(filePath: String) = false
+        override fun contains(fqName: FqName, fileName: String) = false
+    }
+
+    object WholeModule : CacheDeserializationStrategy() {
+        override fun contains(filePath: String) = true
+        override fun contains(fqName: FqName, fileName: String) = true
+    }
+
+    class SingleFile(val filePath: String, val fqName: String) : CacheDeserializationStrategy() {
+        override fun contains(filePath: String) = filePath == this.filePath
+
+        override fun contains(fqName: FqName, fileName: String) =
+            fqName.asString() == this.fqName && File(filePath).name == fileName
+    }
+
+    class MultipleFiles(filePaths: List<String>, fqNames: List<String>) : CacheDeserializationStrategy() {
+        private val filePaths = filePaths.toSet()
+
+        private val fqNamesWithNames = fqNames.mapIndexed { i: Int, fqName: String -> Pair(fqName, File(filePaths[i]).name) }.toSet()
+
+        override fun contains(filePath: String) = filePath in filePaths
+
+        override fun contains(fqName: FqName, fileName: String) = Pair(fqName.asString(), fileName) in fqNamesWithNames
+    }
+}
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt
index 2fa0886..b66c77a 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CacheSupport.kt
@@ -16,7 +16,6 @@
 import org.jetbrains.kotlin.konan.target.KonanTarget
 import org.jetbrains.kotlin.library.KotlinLibrary
 import org.jetbrains.kotlin.library.metadata.resolver.KotlinLibraryResolveResult
-import org.jetbrains.kotlin.name.FqName
 import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite
 import org.jetbrains.kotlin.backend.common.serialization.proto.IrFile as ProtoFile
 
@@ -44,40 +43,6 @@
     }
 }
 
-sealed class CacheDeserializationStrategy {
-    abstract fun contains(filePath: String): Boolean
-    abstract fun contains(fqName: FqName, fileName: String): Boolean
-
-    object Nothing : CacheDeserializationStrategy() {
-        override fun contains(filePath: String) = false
-        override fun contains(fqName: FqName, fileName: String) = false
-    }
-
-    object WholeModule : CacheDeserializationStrategy() {
-        override fun contains(filePath: String) = true
-        override fun contains(fqName: FqName, fileName: String) = true
-    }
-
-    class SingleFile(val filePath: String, val fqName: String) : CacheDeserializationStrategy() {
-        override fun contains(filePath: String) = filePath == this.filePath
-
-        override fun contains(fqName: FqName, fileName: String) =
-                fqName.asString() == this.fqName && File(filePath).name == fileName
-    }
-
-    class MultipleFiles(filePaths: List<String>, fqNames: List<String>) : CacheDeserializationStrategy() {
-        private val filePaths = filePaths.toSet()
-
-        private val fqNamesWithNames = fqNames.mapIndexed { i: Int, fqName: String -> Pair(fqName, File(filePaths[i]).name) }.toSet()
-
-        override fun contains(filePath: String) = filePath in filePaths
-
-        override fun contains(fqName: FqName, fileName: String) = Pair(fqName.asString(), fileName) in fqNamesWithNames
-    }
-}
-
-class PartialCacheInfo(val klib: KotlinLibrary, val strategy: CacheDeserializationStrategy)
-
 class CacheSupport(
         private val configuration: CompilerConfiguration,
         private val resolvedLibraries: KotlinLibraryResolveResult,