~
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/InlineFunctionCollectingVisitor.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/DependentFileCollectingVisitor.kt
similarity index 83%
rename from analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/InlineFunctionCollectingVisitor.kt
rename to analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/DependentFileCollectingVisitor.kt
index 674023e..31ab987 100644
--- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/InlineFunctionCollectingVisitor.kt
+++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/DependentFileCollectingVisitor.kt
@@ -6,11 +6,14 @@
 package org.jetbrains.kotlin.analysis.low.level.api.fir.compiler
 
 import org.jetbrains.kotlin.fir.FirElement
+import org.jetbrains.kotlin.fir.FirSession
 import org.jetbrains.kotlin.fir.analysis.checkers.declaration.isLocalMember
+import org.jetbrains.kotlin.fir.analysis.checkers.toClassLikeSymbol
 import org.jetbrains.kotlin.fir.contracts.FirContractDescription
 import org.jetbrains.kotlin.fir.declarations.*
 import org.jetbrains.kotlin.fir.declarations.utils.hasBody
 import org.jetbrains.kotlin.fir.declarations.utils.isInline
+import org.jetbrains.kotlin.fir.declarations.utils.isLocal
 import org.jetbrains.kotlin.fir.expressions.FirBlock
 import org.jetbrains.kotlin.fir.expressions.FirResolvable
 import org.jetbrains.kotlin.fir.expressions.impl.FirContractCallBlock
@@ -18,14 +21,18 @@
 import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
 import org.jetbrains.kotlin.fir.symbols.SymbolInternals
 import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
+import org.jetbrains.kotlin.fir.types.FirTypeRef
 import org.jetbrains.kotlin.fir.unwrapSubstitutionOverrides
 import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitorVoid
 import org.jetbrains.kotlin.psi.KtClassOrObject
-import org.jetbrains.kotlin.psi.KtCodeFragment
 import org.jetbrains.kotlin.psi.KtFile
 import org.jetbrains.kotlin.utils.addIfNotNull
 
-internal class InlineFunctionCollectingVisitor : FirDefaultVisitorVoid() {
+/**
+ * Collects files needed for compilation of a given declaration.
+ * Basically, it collects files with called inline functions, and a context file if local functions/classes are used.
+ */
+internal class DependentFileCollectingVisitor(private val session: FirSession) : FirDefaultVisitorVoid() {
     private val processed = mutableSetOf<FirDeclaration>()
     private val queue = ArrayDeque<FirDeclaration>()
 
@@ -68,8 +75,9 @@
     }
 
     override fun visitElement(element: FirElement) {
-        if (element is FirResolvable) {
-            processResolvable(element)
+        when (element) {
+            is FirResolvable -> processResolvable(element)
+            is FirTypeRef -> processTypeRef(element)
         }
 
         element.acceptChildren(this)
@@ -133,4 +141,11 @@
             else -> {}
         }
     }
+
+    private fun processTypeRef(typeRef: FirTypeRef) {
+        val symbol = typeRef.toClassLikeSymbol(session) ?: return
+        if (symbol.isLocal) {
+            recordFile(symbol.fir)
+        }
+    }
 }
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/LLCompilerFacade.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/LLCompilerFacade.kt
index 5c9ba26..c55d96a 100644
--- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/LLCompilerFacade.kt
+++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compiler/LLCompilerFacade.kt
@@ -7,7 +7,6 @@
 
 import com.intellij.openapi.progress.ProcessCanceledException
 import com.intellij.openapi.progress.ProgressManager
-import com.intellij.openapi.util.Key
 import org.jetbrains.kotlin.analysis.low.level.api.fir.api.*
 import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirResolvableModuleSession
 import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
@@ -85,7 +84,7 @@
             val scopeSession = session.moduleComponents.scopeSessionProvider.getScopeSession()
 
             val mainFirFile = resolveSession.getOrBuildFirFile(file)
-            val inlineCollector = InlineFunctionCollectingVisitor().apply { process(mainFirFile) }
+            val inlineCollector = DependentFileCollectingVisitor(session).apply { process(mainFirFile) }
 
             val filesToCompile = when (file) {
                 is KtCodeFragment -> (inlineCollector.files - file) + file