diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KaFe10SymbolRelationProvider.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KaFe10SymbolRelationProvider.kt
index 158b7d8..7b32994 100644
--- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KaFe10SymbolRelationProvider.kt
+++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KaFe10SymbolRelationProvider.kt
@@ -6,8 +6,10 @@
 package org.jetbrains.kotlin.analysis.api.descriptors.components
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.search.GlobalSearchScope
 import com.intellij.psi.search.ProjectScope
+import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
 import org.jetbrains.kotlin.analysis.api.KaSession
 import org.jetbrains.kotlin.analysis.api.components.KaSymbolRelationProvider
 import org.jetbrains.kotlin.analysis.api.descriptors.KaFe10Session
@@ -167,6 +169,9 @@
             override val librarySources: KaLibrarySourceModule? = null
             override val isSdk: Boolean = false
             override val binaryRoots: Collection<Path> = listOf(libraryPath)
+
+            @KaExperimentalApi
+            override val binaryVirtualFiles: Collection<VirtualFile> = emptyList()
             override val directRegularDependencies: List<KaModule> = emptyList()
             override val directDependsOnDependencies: List<KaModule> = emptyList()
             override val transitiveDependsOnDependencies: List<KaModule> = emptyList()
diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt
index a6479df..26f1632 100644
--- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt
+++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/configurators/AnalysisApiBaseTestServiceRegistrar.kt
@@ -124,11 +124,15 @@
             testServices.environmentManager.getProjectEnvironment(),
         ).distinct()
 
+        val mainBinaryVirtualFiles = mainBinaryModules.flatMap { it.binaryVirtualFiles }.distinct()
+
         val sharedBinaryRoots = StandaloneProjectFactory.getVirtualFilesForLibraryRoots(
             sharedBinaryDependencies.flatMap { binary -> binary.binaryRoots },
             testServices.environmentManager.getProjectEnvironment()
         ).distinct()
 
+        val sharedBinaryVirtualFiles = sharedBinaryDependencies.flatMap { it.binaryVirtualFiles }.distinct()
+
         project.apply {
             registerService(KotlinAnnotationsResolverFactory::class.java, KotlinStandaloneAnnotationsResolverFactory(project, testKtFiles))
 
@@ -143,8 +147,8 @@
                 val declarationProviderFactory = KotlinStandaloneDeclarationProviderFactory(
                     project,
                     testKtFiles,
-                    binaryRoots = mainBinaryRoots,
-                    sharedBinaryRoots = sharedBinaryRoots,
+                    binaryRoots = mainBinaryRoots + mainBinaryVirtualFiles,
+                    sharedBinaryRoots = sharedBinaryRoots + sharedBinaryVirtualFiles,
                     skipBuiltins = testServices.moduleStructure.allDirectives.contains(NO_RUNTIME),
                     shouldBuildStubsForBinaryLibraries = shouldBuildStubsForBinaryLibraries,
                 )
diff --git a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/projectStructure/StandaloneProjectFactory.kt b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/projectStructure/StandaloneProjectFactory.kt
index 879ccf0..a5f66b4 100644
--- a/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/projectStructure/StandaloneProjectFactory.kt
+++ b/analysis/analysis-api-standalone/analysis-api-standalone-base/src/org/jetbrains/kotlin/analysis/api/standalone/base/projectStructure/StandaloneProjectFactory.kt
@@ -20,6 +20,7 @@
 import com.intellij.openapi.util.io.FileUtil
 import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.openapi.vfs.VirtualFileManager
+import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
 import com.intellij.psi.*
 import com.intellij.psi.impl.file.impl.JavaFileManager
 import com.intellij.psi.impl.smartPointers.PsiClassReferenceTypePointerFactory
@@ -342,10 +343,13 @@
         .flatMap { it.getJavaRoots(environment) }
 
     fun createSearchScopeByLibraryRoots(
-        roots: Collection<Path>,
+        binaryRoots: Collection<Path>,
+        binaryVirtualFiles: Collection<VirtualFile>,
         environment: KotlinCoreProjectEnvironment,
     ): GlobalSearchScope {
-        val virtualFileUrls = getVirtualFileUrlsForLibraryRootsRecursively(roots, environment)
+        val virtualFileUrlsFromBinaryRoots = getVirtualFileUrlsForLibraryRootsRecursively(binaryRoots, environment)
+        val virtualFileUrlsFromBinaryVirtualFiles = getVirtualFileUrlsForLibraryRootsRecursively(binaryVirtualFiles)
+        val virtualFileUrls = virtualFileUrlsFromBinaryRoots + virtualFileUrlsFromBinaryVirtualFiles
 
         return object : GlobalSearchScope(environment.project) {
             override fun contains(file: VirtualFile): Boolean = file.url in virtualFileUrls
@@ -370,6 +374,17 @@
             }
         }
 
+    @OptIn(KaImplementationDetail::class)
+    private fun getVirtualFileUrlsForLibraryRootsRecursively(
+        binaryVirtualFiles: Collection<VirtualFile>
+    ): Set<String> =
+        buildSet {
+            for (vf in binaryVirtualFiles) {
+                LibraryUtils.getAllVirtualFilesFromRoot(vf, includeRoot = true)
+                    .mapTo(this) { it.url }
+            }
+        }
+
     fun getVirtualFilesForLibraryRoots(
         roots: Collection<Path>,
         environment: KotlinCoreProjectEnvironment,
@@ -420,10 +435,12 @@
         }
     }
 
+    @OptIn(KaExperimentalApi::class)
     private fun KaLibraryModule.getJavaRoots(
         environment: KotlinCoreProjectEnvironment,
     ): List<JavaRoot> {
-        return getVirtualFilesForLibraryRoots(binaryRoots, environment).map { root ->
+        val binaryRootsAsVirtualFiles = getVirtualFilesForLibraryRoots(binaryRoots, environment) + binaryVirtualFiles
+        return binaryRootsAsVirtualFiles.map { root ->
             JavaRoot(root, JavaRoot.RootType.BINARY)
         }
     }
diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaBinaryModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaBinaryModuleBuilder.kt
index d53fa58..b034ff7 100644
--- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaBinaryModuleBuilder.kt
+++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaBinaryModuleBuilder.kt
@@ -5,11 +5,13 @@
 
 package org.jetbrains.kotlin.analysis.project.structure.builder
 
+import com.intellij.openapi.vfs.VirtualFile
 import java.nio.file.Path
 
 @KtModuleBuilderDsl
 public abstract class KtBinaryModuleBuilder : KtModuleBuilder() {
     private val binaryRoots: MutableList<Path> = mutableListOf()
+    private val binaryVirtualFiles: MutableList<VirtualFile> = mutableListOf()
 
     /**
      * Adds a [root] to the current library.
@@ -36,4 +38,14 @@
     }
 
     protected fun getBinaryRoots(): List<Path> = binaryRoots.distinct()
+
+    public fun addBinaryVirtualFile(virtualFile: VirtualFile) {
+        binaryVirtualFiles.add(virtualFile)
+    }
+
+    public fun addBinaryVirtualFiles(virtualFiles: Collection<VirtualFile>) {
+        binaryVirtualFiles.addAll(virtualFiles)
+    }
+
+    protected fun getBinaryVirtualFiles(): List<VirtualFile> = binaryVirtualFiles.distinct()
 }
\ No newline at end of file
diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaLibraryModuleBuilder.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaLibraryModuleBuilder.kt
index 3128be3..dc8ab76 100644
--- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaLibraryModuleBuilder.kt
+++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/builder/KaLibraryModuleBuilder.kt
@@ -5,6 +5,7 @@
 
 package org.jetbrains.kotlin.analysis.project.structure.builder
 
+import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
 import org.jetbrains.kotlin.analysis.api.standalone.base.projectStructure.StandaloneProjectFactory
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibraryModule
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibrarySourceModule
@@ -23,9 +24,12 @@
 
     override fun build(): KaLibraryModule = build(isSdk = false)
 
+    @OptIn(KaExperimentalApi::class)
     protected fun build(isSdk: Boolean): KaLibraryModule {
         val binaryRoots = getBinaryRoots()
-        val contentScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, kotlinCoreProjectEnvironment)
+        val binaryVirtualFiles = getBinaryVirtualFiles()
+        val contentScope =
+            StandaloneProjectFactory.createSearchScopeByLibraryRoots(binaryRoots, binaryVirtualFiles, kotlinCoreProjectEnvironment)
         return KaLibraryModuleImpl(
             directRegularDependencies,
             directDependsOnDependencies,
@@ -34,6 +38,7 @@
             platform,
             kotlinCoreProjectEnvironment.project,
             binaryRoots,
+            binaryVirtualFiles,
             libraryName,
             librarySources,
             isSdk,
diff --git a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KaLibraryModuleImpl.kt b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KaLibraryModuleImpl.kt
index 3f01881..500d706 100644
--- a/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KaLibraryModuleImpl.kt
+++ b/analysis/analysis-api-standalone/src/org/jetbrains/kotlin/analysis/project/structure/impl/KaLibraryModuleImpl.kt
@@ -6,7 +6,9 @@
 package org.jetbrains.kotlin.analysis.project.structure.impl
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.search.GlobalSearchScope
+import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
 import org.jetbrains.kotlin.analysis.api.KaPlatformInterface
 import org.jetbrains.kotlin.analysis.api.platform.projectStructure.computeTransitiveDependsOnDependencies
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibraryModule
@@ -15,6 +17,7 @@
 import org.jetbrains.kotlin.platform.TargetPlatform
 import java.nio.file.Path
 
+@KaExperimentalApi
 internal class KaLibraryModuleImpl(
     override val directRegularDependencies: List<KaModule>,
     override val directDependsOnDependencies: List<KaModule>,
@@ -23,6 +26,7 @@
     override val targetPlatform: TargetPlatform,
     override val project: Project,
     override val binaryRoots: Collection<Path>,
+    override val binaryVirtualFiles: Collection<VirtualFile>,
     override val libraryName: String,
     override val librarySources: KaLibrarySourceModule?,
 
diff --git a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/StandaloneSessionBuilderTest.kt b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/StandaloneSessionBuilderTest.kt
index 55e9916..0685cde 100644
--- a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/StandaloneSessionBuilderTest.kt
+++ b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/StandaloneSessionBuilderTest.kt
@@ -19,6 +19,8 @@
 import org.jetbrains.kotlin.analysis.api.symbols.KaLocalVariableSymbol
 import org.jetbrains.kotlin.analysis.api.symbols.KaNamedFunctionSymbol
 import org.jetbrains.kotlin.analysis.api.types.KaClassType
+import org.jetbrains.kotlin.analysis.api.standalone.StandaloneAnalysisAPISession
+import org.jetbrains.kotlin.analysis.api.standalone.base.projectStructure.StandaloneProjectFactory
 import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtLibraryModule
 import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtSdkModule
 import org.jetbrains.kotlin.analysis.project.structure.builder.buildKtSourceModule
@@ -281,6 +283,88 @@
                 )
             }
         }
+        checkOtherModuleUsage(session, sourceModule)
+    }
+
+    @Test
+    fun testKotlinBinaryModuleSessionWithVirtualFile() {
+        val root = "otherModuleUsage"
+        lateinit var sourceModule: KaSourceModule
+        val session = buildStandaloneAnalysisAPISession(disposable) {
+            buildKtModuleProvider {
+                platform = JvmPlatforms.defaultJvmPlatform
+                val compiledJar = compileToJar(testDataPath(root).resolve("dependent"))
+                val dep = addModule(
+                    buildKtLibraryModule {
+                        // addBinaryRoot(compiledJar)
+                        // Instead, add [VirtualFile]
+                        val virtualFiles =
+                            StandaloneProjectFactory.getVirtualFilesForLibraryRoots(listOf(compiledJar), kotlinCoreProjectEnvironment)
+                        addBinaryVirtualFiles(virtualFiles)
+                        platform = JvmPlatforms.defaultJvmPlatform
+                        libraryName = "dependent"
+                    }
+                )
+                sourceModule = addModule(
+                    buildKtSourceModule {
+                        addSourceRoot(testDataPath(root).resolve("main"))
+                        addRegularDependency(dep)
+                        platform = JvmPlatforms.defaultJvmPlatform
+                        moduleName = "main"
+                    }
+                )
+            }
+        }
+        checkOtherModuleUsage(session, sourceModule)
+    }
+
+    @Test
+    fun testKotlinSourceAndBinaryModuleSessionWithVirtualFile() {
+        val root = "otherModuleUsage"
+        lateinit var sourceModule: KaSourceModule
+        val session = buildStandaloneAnalysisAPISession(disposable) {
+            buildKtModuleProvider {
+                platform = JvmPlatforms.defaultJvmPlatform
+                val compiledJar = compileToJar(testDataPath(root).resolve("dependent"))
+                val dep = addModule(
+                    buildKtLibraryModule {
+                        // addBinaryRoot(compiledJar)
+                        // Instead, add [VirtualFile]
+                        val virtualFiles =
+                            StandaloneProjectFactory.getVirtualFilesForLibraryRoots(listOf(compiledJar), kotlinCoreProjectEnvironment)
+                        addBinaryVirtualFiles(virtualFiles)
+                        platform = JvmPlatforms.defaultJvmPlatform
+                        libraryName = "dependent"
+                    }
+                )
+                sourceModule = addModule(
+                    buildKtSourceModule {
+                        // addSourceRoot(testDataPath(root).resolve("main"))
+                        // Instead, add [VirtualFile] on-the-fly
+                        val virtualFile = createDumbVirtualFile(
+                            project,
+                            "test.kt",
+                            """
+                                fun main() {
+                                    foo()
+                                }
+                            """.trimIndent()
+                        )
+                        addSourceVirtualFile(virtualFile)
+                        addRegularDependency(dep)
+                        platform = JvmPlatforms.defaultJvmPlatform
+                        moduleName = "main"
+                    }
+                )
+            }
+        }
+        checkOtherModuleUsage(session, sourceModule)
+    }
+
+    private fun checkOtherModuleUsage(
+        session: StandaloneAnalysisAPISession,
+        sourceModule: KaSourceModule,
+    ) {
         val ktFile = session.modulesWithFiles.getValue(sourceModule).single() as KtFile
         val ktCallExpression = ktFile.findDescendantOfType<KtCallExpression>()!!
         ktCallExpression.assertIsCallOf(CallableId(FqName.ROOT, Name.identifier("foo")))
diff --git a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/sessionBuilderTestUtils.kt b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/sessionBuilderTestUtils.kt
index db677ab..177be9f 100644
--- a/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/sessionBuilderTestUtils.kt
+++ b/analysis/analysis-api-standalone/tests/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/session/builder/sessionBuilderTestUtils.kt
@@ -59,6 +59,20 @@
     return testKlib
 }
 
+internal fun compileToJar(sourceRoot: Path): Path {
+    val ktFiles = Files.walk(sourceRoot).asSequence().filter { it.extension == "kt" }.toList()
+    val testJar = KtTestUtil.tmpDir("testLibrary").resolve("library.jar").toPath()
+
+    val arguments = buildList {
+        ktFiles.mapTo(this) { it.absolutePathString() }
+        add("-d")
+        add(testJar.absolutePathString())
+    }
+    MockLibraryUtil.runJvmCompiler(arguments)
+
+    return testJar
+}
+
 internal fun createDumbVirtualFile(
     project: Project,
     fileName: String,
diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/projectStructure/KaModule.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/projectStructure/KaModule.kt
index f4d634e..c9e8e04 100644
--- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/projectStructure/KaModule.kt
+++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/projectStructure/KaModule.kt
@@ -8,6 +8,7 @@
 package org.jetbrains.kotlin.analysis.api.projectStructure
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.PsiFile
 import com.intellij.psi.search.GlobalSearchScope
 import org.jetbrains.kotlin.analysis.api.KaExperimentalApi
@@ -141,6 +142,12 @@
     public val binaryRoots: Collection<Path>
 
     /**
+     * A list of binary files in [VirtualFile] form if the library module represents a library in in-memory file system.
+     */
+    @KaExperimentalApi
+    public val binaryVirtualFiles: Collection<VirtualFile>
+
+    /**
      * A library source, if any. If current module is a binary JAR, then [librarySources] corresponds to the sources JAR.
      */
     public val librarySources: KaLibrarySourceModule?
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaLibraryModuleImpl.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaLibraryModuleImpl.kt
index eb3204e..cdf8c4e 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaLibraryModuleImpl.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaLibraryModuleImpl.kt
@@ -6,6 +6,7 @@
 package org.jetbrains.kotlin.analysis.test.framework.projectStructure
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.search.GlobalSearchScope
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibraryModule
 import org.jetbrains.kotlin.analysis.api.projectStructure.KaLibrarySourceModule
@@ -26,5 +27,7 @@
     override val directDependsOnDependencies: MutableList<KaModule> = mutableListOf()
     override val directFriendDependencies: MutableList<KaModule> = mutableListOf()
 
+    override val binaryVirtualFiles: Collection<VirtualFile> = emptyList()
+
     override fun toString(): String = libraryName
 }
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaSourceModuleByCompilerConfiguration.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaSourceModuleByCompilerConfiguration.kt
index 79a888a..68f9dac9 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaSourceModuleByCompilerConfiguration.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KaSourceModuleByCompilerConfiguration.kt
@@ -6,6 +6,7 @@
 package org.jetbrains.kotlin.analysis.test.framework.projectStructure
 
 import com.intellij.openapi.project.Project
+import com.intellij.openapi.vfs.VirtualFile
 import com.intellij.psi.PsiFile
 import com.intellij.psi.search.GlobalSearchScope
 import org.jetbrains.kotlin.analysis.api.platform.projectStructure.computeTransitiveDependsOnDependencies
@@ -73,6 +74,7 @@
         val jdkHomePaths = StandaloneProjectFactory.getDefaultJdkModulePaths(project, jdkHome.toPath())
         val scope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(
             jdkHomePaths,
+            emptyList(),
             testServices.environmentManager.getProjectEnvironment()
         )
 
@@ -148,6 +150,7 @@
     override val libraryName: String get() = testModule.name
     override val librarySources: KaLibrarySourceModule? get() = null
     override val isSdk: Boolean get() = false
+    override val binaryVirtualFiles: Collection<VirtualFile> = emptyList()
 
     override val contentScope: GlobalSearchScope =
         GlobalSearchScope.filesScope(project, psiFiles.map { it.virtualFile })
@@ -174,6 +177,7 @@
 ) : KaLibraryModule {
     override val contentScope: GlobalSearchScope = StandaloneProjectFactory.createSearchScopeByLibraryRoots(
         roots,
+        emptyList(),
         testServices.environmentManager.getProjectEnvironment(),
     )
     override val libraryName: String get() = "Test Library $roots"
@@ -184,6 +188,7 @@
     override val targetPlatform: TargetPlatform get() = parentModule.targetPlatform
     override val binaryRoots: Collection<Path> get() = roots
     override val isSdk: Boolean get() = false
+    override val binaryVirtualFiles: Collection<VirtualFile> = emptyList()
 
     override fun equals(other: Any?): Boolean {
         if (this === other) return true
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibraryBinaryTestModuleFactoryBase.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibraryBinaryTestModuleFactoryBase.kt
index 1fa92bb..1ec30ad 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibraryBinaryTestModuleFactoryBase.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibraryBinaryTestModuleFactoryBase.kt
@@ -38,6 +38,7 @@
                 testModule.targetPlatform,
                 StandaloneProjectFactory.createSearchScopeByLibraryRoots(
                     listOf(binaryRoot),
+                    emptyList(),
                     testServices.environmentManager.getProjectEnvironment(),
                 ),
                 project,
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibrarySourceTestModuleFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibrarySourceTestModuleFactory.kt
index 8c4723e..7f3ef5e 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibrarySourceTestModuleFactory.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/KtLibrarySourceTestModuleFactory.kt
@@ -59,6 +59,7 @@
         testModule.targetPlatform,
         StandaloneProjectFactory.createSearchScopeByLibraryRoots(
             listOf(libraryJar),
+            emptyList(),
             testServices.environmentManager.getProjectEnvironment(),
         ),
         project,
diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/TestModuleStructureFactory.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/TestModuleStructureFactory.kt
index d6866aa..f0d6c82 100644
--- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/TestModuleStructureFactory.kt
+++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/projectStructure/TestModuleStructureFactory.kt
@@ -219,6 +219,7 @@
     fun getScopeForLibraryByRoots(roots: Collection<Path>, testServices: TestServices): GlobalSearchScope {
         return StandaloneProjectFactory.createSearchScopeByLibraryRoots(
             roots,
+            emptyList(),
             testServices.environmentManager.getProjectEnvironment()
         )
     }
