diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ImportOptimizer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ImportOptimizer.kt
index 46c5988..7f8930d 100644
--- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ImportOptimizer.kt
+++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/components/KtFe10ImportOptimizer.kt
@@ -21,7 +21,7 @@
     override val token: KtLifetimeToken
         get() = analysisSession.token
 
-    override fun analyseImports(file: KtFile): KtImportOptimizerResult = withValidityAssertion {
+    override fun analyseImports(file: KtFile): KtImportOptimizerResult {
         val (allUnderImports, otherImports) = file.importDirectives.partition { it.isAllUnder }
 
         val unusedImports = LinkedHashSet<KtImportDirective>()
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtFirAnalysisSession.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtFirAnalysisSession.kt
index 9dcf00c..aacf76d 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtFirAnalysisSession.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/KtFirAnalysisSession.kt
@@ -82,7 +82,7 @@
 
     override val referenceShortenerImpl = KtFirReferenceShortener(this, token, firResolveSession)
 
-    override val importOptimizerImpl: KtImportOptimizer = KtFirImportOptimizer(token, firResolveSession)
+    override val importOptimizerImpl: KtImportOptimizer = KtFirImportOptimizer(this, token, firResolveSession)
 
     override val symbolDeclarationRendererProviderImpl: KtSymbolDeclarationRendererProvider = KtFirRendererProvider(this, token)
 
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt
index 20fe4e5..169755a 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/components/KtFirImportOptimizer.kt
@@ -6,12 +6,15 @@
 package org.jetbrains.kotlin.analysis.api.fir.components
 
 import org.jetbrains.kotlin.KtRealSourceElementKind
+import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
 import org.jetbrains.kotlin.analysis.api.components.KtImportOptimizer
 import org.jetbrains.kotlin.analysis.api.components.KtImportOptimizerResult
 import org.jetbrains.kotlin.analysis.api.fir.getCandidateSymbols
 import org.jetbrains.kotlin.analysis.api.fir.utils.FirBodyReanalyzingVisitorVoid
 import org.jetbrains.kotlin.analysis.api.fir.utils.computeImportableName
 import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
+import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
+import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
 import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
 import org.jetbrains.kotlin.analysis.low.level.api.fir.api.getOrBuildFirFile
 import org.jetbrains.kotlin.fir.FirElement
@@ -33,19 +36,20 @@
 import org.jetbrains.kotlin.fir.types.FirErrorTypeRef
 import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
 import org.jetbrains.kotlin.fir.types.classId
+import org.jetbrains.kotlin.idea.references.KDocReference
+import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
 import org.jetbrains.kotlin.name.ClassId
 import org.jetbrains.kotlin.name.FqName
 import org.jetbrains.kotlin.name.Name
 import org.jetbrains.kotlin.name.parentOrNull
 import org.jetbrains.kotlin.psi.*
-import org.jetbrains.kotlin.psi.psiUtil.getCallNameExpression
-import org.jetbrains.kotlin.psi.psiUtil.getPossiblyQualifiedCallExpression
-import org.jetbrains.kotlin.psi.psiUtil.unwrapNullability
+import org.jetbrains.kotlin.psi.psiUtil.*
 import org.jetbrains.kotlin.resolve.ImportPath
 import org.jetbrains.kotlin.resolve.calls.util.getCalleeExpressionIfAny
 import org.jetbrains.kotlin.util.OperatorNameConventions
 
 internal class KtFirImportOptimizer(
+    override val analysisSession: KtAnalysisSession,
     override val token: KtLifetimeToken,
     private val firResolveSession: LLFirResolveSession
 ) : KtImportOptimizer() {
@@ -65,7 +69,7 @@
             .map { it.fqName }
             .toSet()
 
-        val (usedImports, unresolvedNames) = collectReferencedEntities(firFile)
+        val (usedImports, unresolvedNames) = collectReferencedEntities(firFile, file)
 
         val referencesEntities = usedImports
             .filterNot { (fqName, referencedByNames) ->
@@ -107,10 +111,45 @@
         val unresolvedNames: Set<Name>,
     )
 
-    private fun collectReferencedEntities(firFile: FirFile): ReferencedEntitiesResult {
+    private fun KDocName.getReferencedNames(): List<Pair<FqName, Name>> {
+        val kDocReferences = references.filterIsInstance<KDocReference>()
+        val kDocName = getQualifiedNameAsFqName()
+
+        return kDocReferences
+            .flatMap { reference ->
+                with(analysisSession) {
+                    val symbols = reference.resolveToSymbols()
+                    symbols.mapNotNull { symbol ->
+                        when (symbol) {
+                            is KtClassLikeSymbol -> symbol.classIdIfNonLocal?.asSingleFqName()?.takeIf { kDocName.parentOrNull()?.isRoot == true }
+                            is KtCallableSymbol -> symbol.callableIdIfNonLocal?.asSingleFqName()
+                            else -> null
+                        }
+                    }
+                }
+            }
+            .filterNot { it == kDocName }
+            .map { it to kDocName.shortName() }
+    }
+
+    private fun collectKDocReferences(ktFile: KtFile): List<Pair<FqName, Name>> {
+        val kDocNames = ktFile.collectDescendantsOfType<KDocName>()
+
+        return kDocNames.flatMap { it.getReferencedNames() }.distinct()
+    }
+
+    private fun collectReferencedEntities(firFile: FirFile, ktFile: KtFile): ReferencedEntitiesResult {
         val usedImports = mutableMapOf<FqName, MutableSet<Name>>()
         val unresolvedNames = mutableSetOf<Name>()
 
+        fun saveReferencedItem(importableName: FqName, referencedByName: Name) {
+            usedImports.getOrPut(importableName) { hashSetOf() } += referencedByName
+        }
+
+        collectKDocReferences(ktFile).forEach { (importableName, referencedByName) ->
+            saveReferencedItem(importableName, referencedByName)
+        }
+
         firFile.accept(object : FirBodyReanalyzingVisitorVoid(firResolveSession) {
             override fun visitElement(element: FirElement) {
                 element.acceptChildren(this)
@@ -242,10 +281,6 @@
 
                 saveReferencedItem(importableName, referencedByName)
             }
-
-            private fun saveReferencedItem(importableName: FqName, referencedByName: Name) {
-                usedImports.getOrPut(importableName) { hashSetOf() } += referencedByName
-            }
         })
 
         return ReferencedEntitiesResult(usedImports, unresolvedNames)
diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
index 62e157f..8c039e37 100644
--- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
+++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/importOptimizer/FirIdeNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
@@ -155,6 +155,88 @@
     }
 
     @Nested
+    @TestMetadata("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs")
+    @TestDataPath("$PROJECT_ROOT")
+    public class Kdocs {
+        @Test
+        public void testAllFilesPresentInKdocs() throws Exception {
+            KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
+        }
+
+        @Test
+        @TestMetadata("callables.kt")
+        public void testCallables() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_alias.kt")
+        public void testCallables_alias() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_alias.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_member.kt")
+        public void testCallables_member() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_member.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_overloads.kt")
+        public void testCallables_overloads() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloads.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_overloadsFromDifferentPlaces.kt")
+        public void testCallables_overloadsFromDifferentPlaces() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloadsFromDifferentPlaces.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_unused.kt")
+        public void testCallables_unused() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_unused.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_alias.kt")
+        public void testClassifier_alias() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_alias.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_nested_1.kt")
+        public void testClassifier_nested_1() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_1.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_nested_2.kt")
+        public void testClassifier_nested_2() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_2.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_typealias.kt")
+        public void testClassifier_typealias() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_typealias_member.kt")
+        public void testClassifier_typealias_member() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_member.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_typealias_unused.kt")
+        public void testClassifier_typealias_unused() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_unused.kt");
+        }
+    }
+
+    @Nested
     @TestMetadata("analysis/analysis-api/testData/components/importOptimizer/analyseImports/referencesWithErrors")
     @TestDataPath("$PROJECT_ROOT")
     public class ReferencesWithErrors {
diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
index e0b6dd5..0feaba4 100644
--- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
+++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/importOptimizer/FirStandaloneNormalAnalysisSourceModuleAnalysisApiImportOptimizerTestGenerated.java
@@ -155,6 +155,88 @@
     }
 
     @Nested
+    @TestMetadata("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs")
+    @TestDataPath("$PROJECT_ROOT")
+    public class Kdocs {
+        @Test
+        public void testAllFilesPresentInKdocs() throws Exception {
+            KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
+        }
+
+        @Test
+        @TestMetadata("callables.kt")
+        public void testCallables() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_alias.kt")
+        public void testCallables_alias() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_alias.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_member.kt")
+        public void testCallables_member() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_member.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_overloads.kt")
+        public void testCallables_overloads() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloads.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_overloadsFromDifferentPlaces.kt")
+        public void testCallables_overloadsFromDifferentPlaces() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloadsFromDifferentPlaces.kt");
+        }
+
+        @Test
+        @TestMetadata("callables_unused.kt")
+        public void testCallables_unused() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_unused.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_alias.kt")
+        public void testClassifier_alias() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_alias.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_nested_1.kt")
+        public void testClassifier_nested_1() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_1.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_nested_2.kt")
+        public void testClassifier_nested_2() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_2.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_typealias.kt")
+        public void testClassifier_typealias() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_typealias_member.kt")
+        public void testClassifier_typealias_member() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_member.kt");
+        }
+
+        @Test
+        @TestMetadata("classifier_typealias_unused.kt")
+        public void testClassifier_typealias_unused() throws Exception {
+            runTest("analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_unused.kt");
+        }
+    }
+
+    @Nested
     @TestMetadata("analysis/analysis-api/testData/components/importOptimizer/analyseImports/referencesWithErrors")
     @TestDataPath("$PROJECT_ROOT")
     public class ReferencesWithErrors {
diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtImportOptimizer.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtImportOptimizer.kt
index 9833ca6..e836775 100644
--- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtImportOptimizer.kt
+++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/components/KtImportOptimizer.kt
@@ -10,7 +10,7 @@
 import org.jetbrains.kotlin.psi.KtFile
 import org.jetbrains.kotlin.psi.KtImportDirective
 
-public abstract class KtImportOptimizer : KtLifetimeOwner {
+public abstract class KtImportOptimizer : KtAnalysisSessionComponent() {
     public abstract fun analyseImports(file: KtFile): KtImportOptimizerResult
 }
 
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables.imports
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables.imports
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables.kt
new file mode 100644
index 0000000..b83f68c
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables.kt
@@ -0,0 +1,17 @@
+// FILE: main.kt
+package test
+
+import dependency.function
+import dependency.property
+
+/**
+ * [function]
+ * [property]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+fun function() {}
+val property: Int = 0
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_alias.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_alias.imports
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_alias.imports
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_alias.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_alias.kt
new file mode 100644
index 0000000..c288739
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_alias.kt
@@ -0,0 +1,14 @@
+// FILE: main.kt
+package test
+
+import dependency.function as aliased
+
+/**
+ * [aliased]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+fun function() {}
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_member.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_member.imports
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_member.imports
@@ -0,0 +1 @@
+
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_member.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_member.kt
new file mode 100644
index 0000000..71b2d9f
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_member.kt
@@ -0,0 +1,18 @@
+// FILE: main.kt
+package test
+
+import dependency.MyClass
+
+/**
+ * [MyClass.function]
+ * [MyClass.property]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+class MyClass {
+    fun function() {}
+    val property: Int = 0
+}
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloads.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloads.imports
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloads.imports
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloads.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloads.kt
new file mode 100644
index 0000000..51744b4
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloads.kt
@@ -0,0 +1,16 @@
+// FILE: main.kt
+package test
+
+import dependency.function
+
+/**
+ * [function]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+fun function() {}
+fun function(i: Int) {}
+fun function(s: String) {}
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloadsFromDifferentPlaces.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloadsFromDifferentPlaces.imports
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloadsFromDifferentPlaces.imports
@@ -0,0 +1 @@
+
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloadsFromDifferentPlaces.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloadsFromDifferentPlaces.kt
new file mode 100644
index 0000000..71afba2
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_overloadsFromDifferentPlaces.kt
@@ -0,0 +1,20 @@
+// FILE: main.kt
+package test
+
+import dependency1.function
+import dependency2.function
+
+/**
+ * [function]
+ */
+fun usage() {}
+
+// FILE: dependency1.kt
+package dependency1
+
+fun function(s: String) {}
+
+// FILE: dependency2.kt
+package dependency2
+
+fun function(s: String) {}
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_unused.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_unused.imports
new file mode 100644
index 0000000..41c0cf3
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_unused.imports
@@ -0,0 +1,2 @@
+dependency.function
+dependency.property
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_unused.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_unused.kt
new file mode 100644
index 0000000..444da5d
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/callables_unused.kt
@@ -0,0 +1,17 @@
+// FILE: main.kt
+package test
+
+import dependency.function
+import dependency.property
+
+/**
+ * [dependency.function]
+ * [dependency.property]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+fun function() {}
+val property: Int = 0
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_alias.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_alias.imports
new file mode 100644
index 0000000..9c951b7
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_alias.imports
@@ -0,0 +1 @@
+dependency.MyClass
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_alias.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_alias.kt
new file mode 100644
index 0000000..d66f6d4
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_alias.kt
@@ -0,0 +1,15 @@
+// FILE: main.kt
+package test
+
+import dependency.MyClass
+import dependency.MyClass as MyAlias
+
+/**
+ * [MyAlias]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+class MyClass
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_1.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_1.imports
new file mode 100644
index 0000000..9c951b7
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_1.imports
@@ -0,0 +1 @@
+dependency.MyClass
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_1.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_1.kt
new file mode 100644
index 0000000..ba87bf5
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_1.kt
@@ -0,0 +1,17 @@
+// FILE: main.kt
+package test
+
+import dependency.MyClass
+import dependency.MyClass.Nested
+
+/**
+ * [Nested]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+class MyClass {
+    class Nested
+}
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_2.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_2.imports
new file mode 100644
index 0000000..a5ff173
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_2.imports
@@ -0,0 +1 @@
+dependency.MyClass.Nested
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_2.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_2.kt
new file mode 100644
index 0000000..23ef0eb
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_nested_2.kt
@@ -0,0 +1,17 @@
+// FILE: main.kt
+package test
+
+import dependency.MyClass
+import dependency.MyClass.Nested
+
+/**
+ * [MyClass.Nested]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+class MyClass {
+    class Nested
+}
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias.imports
new file mode 100644
index 0000000..6889ea6
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias.imports
@@ -0,0 +1 @@
+dependency.MyClass
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias.kt
new file mode 100644
index 0000000..9f12e4e
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias.kt
@@ -0,0 +1,17 @@
+// FILE: main.kt
+package test
+
+import dependency.MyClass
+import dependency.MyTypealias
+
+/**
+ * [MyTypealias]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+class MyClass
+
+typealias MyTypealias = MyClass
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_member.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_member.imports
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_member.imports
@@ -0,0 +1 @@
+
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_member.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_member.kt
new file mode 100644
index 0000000..7b00135
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_member.kt
@@ -0,0 +1,18 @@
+// FILE: main.kt
+package test
+
+import dependency.MyTypealias
+
+/**
+ * [MyTypealias.function]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+class MyClass {
+    fun function() {}
+}
+
+typealias MyTypealias = MyClass
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_unused.imports b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_unused.imports
new file mode 100644
index 0000000..6c68ed13
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_unused.imports
@@ -0,0 +1 @@
+dependency.MyTypealias
diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_unused.kt b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_unused.kt
new file mode 100644
index 0000000..a728a07
--- /dev/null
+++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/kdocs/classifier_typealias_unused.kt
@@ -0,0 +1,16 @@
+// FILE: main.kt
+package test
+
+import dependency.MyTypealias
+
+/**
+ * [dependency.MyTypealias]
+ */
+fun usage() {}
+
+// FILE: dependency.kt
+package dependency
+
+class MyClass
+
+typealias MyTypealias = MyClass
\ No newline at end of file
