diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirGlobalResolveComponents.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirGlobalResolveComponents.kt index 09bcd33a9fc..c06c98037c4 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirGlobalResolveComponents.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirGlobalResolveComponents.kt @@ -6,9 +6,8 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LockProvider +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider import org.jetbrains.kotlin.analysis.project.structure.KtModule -import org.jetbrains.kotlin.fir.declarations.FirFile @Suppress("unused") internal class LLFirGlobalResolveComponents( @@ -16,5 +15,5 @@ internal class LLFirGlobalResolveComponents( val project: Project, ) { val phaseRunner: LLFirPhaseRunner = LLFirPhaseRunner() - val lockProvider: LockProvider = LockProvider() + val lockProvider: LLFirLockProvider = LLFirLockProvider() } \ No newline at end of file diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirModuleResolveComponents.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirModuleResolveComponents.kt index f895d1e5cd2..cc2f14dffd3 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirModuleResolveComponents.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirModuleResolveComponents.kt @@ -9,7 +9,7 @@ import com.intellij.openapi.roots.ProjectRootModificationTracker import com.intellij.psi.util.PsiModificationTracker import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostics.DiagnosticsCollector import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.FirElementBuilder -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.FirFileBuilder +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirFileBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.ModuleFileCache import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.ModuleFileCacheImpl import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.FileStructureCache @@ -26,7 +26,7 @@ internal class LLFirModuleResolveComponents( val scopeProvider: FirScopeProvider, ) { val cache: ModuleFileCache = ModuleFileCacheImpl(this) - val firFileBuilder: FirFileBuilder = FirFileBuilder(this) + val firFileBuilder: LLFirFileBuilder = LLFirFileBuilder(this) val lazyFirDeclarationsResolver = FirLazyDeclarationResolver(this) val scopeSessionProvider: LLFirScopeSessionProvider = LLFirScopeSessionProvider.create( diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirPhaseRunner.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirPhaseRunner.kt index d2ff33a482e..b3a3702fa40 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirPhaseRunner.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/LLFirPhaseRunner.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.executeWithoutPCE internal class LLFirPhaseRunner { /** * We temporary disable multi-locks to fix deadlocks problem - * @see org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LockProvider + * @see org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider */ inline fun runPhaseWithCustomResolve(@Suppress("UNUSED_PARAMETER") phase: FirResolvePhase, crossinline resolve: () -> Unit) = runPhaseWithCustomResolveWithoutLock(resolve) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostics/FileStructureElementDiagnostics.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostics/FileStructureElementDiagnostics.kt index 480cae79d9b..4902d7937de 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostics/FileStructureElementDiagnostics.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostics/FileStructureElementDiagnostics.kt @@ -9,7 +9,6 @@ import com.intellij.psi.PsiElement import com.intellij.util.SmartList import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LockProvider import org.jetbrains.kotlin.diagnostics.KtPsiDiagnostic import org.jetbrains.kotlin.fir.declarations.FirFile diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/ModuleFileCache.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirDeclrationsCacheForModule.kt similarity index 100% rename from analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/ModuleFileCache.kt rename to analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirDeclrationsCacheForModule.kt diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/FirFileBuilder.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirFileBuilder.kt similarity index 97% rename from analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/FirFileBuilder.kt rename to analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirFileBuilder.kt index 0232d5a1119..bd7222abbbc 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/FirFileBuilder.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirFileBuilder.kt @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.psi.KtFile * Responsible for building [FirFile] by [KtFile] */ @ThreadSafe -internal class FirFileBuilder( +internal class LLFirFileBuilder( val moduleComponents: LLFirModuleResolveComponents, ) { fun buildRawFirFileWithCaching(ktFile: KtFile): FirFile = moduleComponents.cache.fileCached(ktFile) { diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LockProvider.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt similarity index 72% rename from analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LockProvider.kt rename to analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt index fb822b9361c..0cf6c339271 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LockProvider.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/builder/LLFirLockProvider.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder -import org.jetbrains.kotlin.analysis.api.impl.barebone.annotations.PrivateForInline import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.util.lockWithPCECheck @@ -14,21 +13,18 @@ import kotlin.concurrent.withLock /** * Keyed locks provider. - * !!! We temporary remove its correct implementation to fix deadlocks problem. Do not use this until this comment is present */ -internal class LockProvider { - //We temporary disable multi-locks to fix deadlocks problem +internal class LLFirLockProvider { + //We temporarily disable multi-locks to fix deadlocks problem private val globalLock = ReentrantLock() - @OptIn(PrivateForInline::class) - inline fun withWriteLock(@Suppress("UNUSED_PARAMETER") key: KEY, action: () -> R): R { + inline fun withWriteLock(@Suppress("UNUSED_PARAMETER") key: FirFile, action: () -> R): R { val startTime = System.currentTimeMillis() return globalLock.withLock { ResolveTreeBuilder.lockNode(startTime, action) } } - @OptIn(PrivateForInline::class) - inline fun withWriteLockPCECheck(@Suppress("UNUSED_PARAMETER") key: KEY, lockingIntervalMs: Long, action: () -> R): R { + inline fun withWriteLockPCECheck(@Suppress("UNUSED_PARAMETER") key: FirFile, lockingIntervalMs: Long, action: () -> R): R { val startTime = System.currentTimeMillis() return globalLock.lockWithPCECheck(lockingIntervalMs) { ResolveTreeBuilder.lockNode(startTime, action) } } @@ -37,7 +33,7 @@ internal class LockProvider { /** * Runs [resolve] function (which is considered to do some resolve on [firFile]) under a lock for [firFile] */ -internal inline fun LockProvider.runCustomResolveUnderLock( +internal inline fun LLFirLockProvider.runCustomResolveUnderLock( firFile: FirFile, checkPCE: Boolean, body: () -> R diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyDeclarationResolver.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyDeclarationResolver.kt index c9d19024b17..1eb72ffed88 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyDeclarationResolver.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/lazy/resolve/FirLazyDeclarationResolver.kt @@ -10,8 +10,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesigna import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignationWithFile import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignationWithFile import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.FirFileBuilder -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LockProvider import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.runCustomResolveUnderLock import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirFileAnnotationsResolveTransformer import org.jetbrains.kotlin.analysis.low.level.api.fir.transformers.LLFirFirProviderInterceptor diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProviderHelper.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProviderHelper.kt index 110be791679..36f4a0549b4 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProviderHelper.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirProviderHelper.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.FirFileBuilder +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirFileBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.ModuleFileCache import org.jetbrains.kotlin.analysis.low.level.api.fir.util.FirElementFinder import org.jetbrains.kotlin.analysis.low.level.api.fir.util.executeOrReturnDefaultValueOnPCE @@ -27,7 +27,7 @@ import java.util.* internal class LLFirProviderHelper( private val cache: ModuleFileCache, - private val firFileBuilder: FirFileBuilder, + private val firFileBuilder: LLFirFileBuilder, private val declarationProvider: KotlinDeclarationProvider, private val packageProvider: KotlinPackageProvider, ) { diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSourcesSession.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSourcesSession.kt index 0e8b07c7632..2b59a934b52 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSourcesSession.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/sessions/LLFirSourcesSession.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.sessions import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.FirFileBuilder +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirFileBuilder import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule import org.jetbrains.kotlin.fir.BuiltinTypes import org.jetbrains.kotlin.fir.PrivateSessionConstructor diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirLibraryOrLibrarySourceResolvableModuleResolveState.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirLibraryOrLibrarySourceResolvableModuleResolveState.kt index 5dfb76d1a5e..5d537df2681 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirLibraryOrLibrarySourceResolvableModuleResolveState.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirLibraryOrLibrarySourceResolvableModuleResolveState.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.state import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.FirFileBuilder +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirFileBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyDeclarationResolver import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionProvider import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirLibraryOrLibrarySourceResolvableModuleSession diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirSourceModuleResolveState.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirSourceModuleResolveState.kt index 2e92ad0fe4a..c24c11a67d4 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirSourceModuleResolveState.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/state/LLFirSourceModuleResolveState.kt @@ -9,7 +9,7 @@ import com.intellij.openapi.project.Project import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents import org.jetbrains.kotlin.analysis.low.level.api.fir.api.DiagnosticCheckerFilter import org.jetbrains.kotlin.analysis.low.level.api.fir.diagnostics.DiagnosticsCollector -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.FirFileBuilder +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirFileBuilder import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyDeclarationResolver import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionProvider import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedSupertypeResolverTransformer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedSupertypeResolverTransformer.kt index b49979d7d67..09006e379ca 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedSupertypeResolverTransformer.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirDesignatedSupertypeResolverTransformer.kt @@ -17,8 +17,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignation import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignationWithFile import org.jetbrains.kotlin.analysis.low.level.api.fir.api.collectDesignation -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LockProvider -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.ModuleFileCache +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.runCustomResolveUnderLock import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.FirLazyDeclarationResolver import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveTreeBuilder @@ -35,7 +34,7 @@ internal class LLFirDesignatedSupertypeResolverTransformer( private val session: FirSession, private val scopeSession: ScopeSession, private val firLazyDeclarationResolver: FirLazyDeclarationResolver, - private val lockProvider: LockProvider, + private val lockProvider: LLFirLockProvider, private val firProviderInterceptor: FirProviderInterceptor?, private val checkPCE: Boolean, ) : LLFirLazyTransformer { diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt index d3875cb36f5..cabf0e1fde6 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/declarationUtils.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.util import org.jetbrains.kotlin.analysis.low.level.api.fir.api.throwUnexpectedFirElementError import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration -import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.FirFileBuilder +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirFileBuilder import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirFile @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject * 'Non-local' stands for not local classes/functions/etc. */ internal fun KtDeclaration.findSourceNonLocalFirDeclaration( - firFileBuilder: FirFileBuilder, + firFileBuilder: LLFirFileBuilder, provider: FirProvider, containerFirFile: FirFile? = null ): FirDeclaration { @@ -34,7 +34,7 @@ internal fun KtDeclaration.findSourceNonLocalFirDeclaration( } internal fun KtDeclaration.findFirDeclarationForAnyFirSourceDeclaration( - firFileBuilder: FirFileBuilder, + firFileBuilder: LLFirFileBuilder, provider: FirProvider, ): FirDeclaration { val nonLocalDeclaration = getNonLocalContainingOrThisDeclaration() @@ -49,7 +49,7 @@ internal fun KtDeclaration.findFirDeclarationForAnyFirSourceDeclaration( } internal inline fun KtDeclaration.findFirDeclarationForAnyFirSourceDeclarationOfType( - firFileBuilder: FirFileBuilder, + firFileBuilder: LLFirFileBuilder, provider: FirProvider, ): FirDeclaration { val fir = findFirDeclarationForAnyFirSourceDeclaration(firFileBuilder, provider) @@ -58,7 +58,7 @@ internal inline fun KtDeclaration.findFirDeclaratio } private fun KtDeclaration.findSourceOfNonLocalFirDeclarationByTraversingWholeTree( - firFileBuilder: FirFileBuilder, + firFileBuilder: LLFirFileBuilder, containerFirFile: FirFile?, ): FirDeclaration? { val firFile = containerFirFile ?: firFileBuilder.buildRawFirFileWithCaching(containingKtFile) @@ -69,7 +69,7 @@ private fun KtDeclaration.findSourceOfNonLocalFirDeclarationByTraversingWholeTre } private fun KtDeclaration.findSourceNonLocalFirDeclarationByProvider( - firFileBuilder: FirFileBuilder, + firFileBuilder: LLFirFileBuilder, provider: FirProvider, containerFirFile: FirFile? ): FirDeclaration? {