override fun remove()

in hot-reload-analysis/src/main/kotlin/org/jetbrains/compose/reload/analysis/MutableApplicationInfoImpl.kt [85:132]


    override fun remove(classId: ClassId) {
        val previousClassInfo = classIndex.remove(classId) ?: return

        previousClassInfo.methods.forEach { methodInfo ->
            methodIndex.remove(methodInfo.key)
        }

        previousClassInfo.fields.forEach { fieldInfo ->
            fieldIndex.remove(fieldInfo.key)
        }

        val previousAllScopes = previousClassInfo.methods.values.map { it.rootScope }
            .withClosure<ScopeInfo> { scope -> scope.children }

        previousAllScopes.forEach { scope ->
            groupIndex[scope.group]?.apply {
                remove(scope)
                if (isEmpty()) groupIndex.remove(scope.group)
            }

            scope.methodDependenciesList.forEach { methodId ->
                dependencyIndex[methodId]?.apply {
                    remove(scope)
                    if (isEmpty()) dependencyIndex.remove(methodId)
                }
            }

            scope.fieldDependenciesList.forEach { fieldId ->
                dependencyIndex[fieldId]?.apply {
                    remove(scope)
                    if (isEmpty()) dependencyIndex.remove(fieldId)
                }
            }
        }

        val previousSuperClassifiers = listOfNotNull(
            previousClassInfo.superClass,
            *previousClassInfo.superInterfaces.toTypedArray()
        )

        superIndex.remove(classId)
        previousSuperClassifiers.forEach { superClassifier ->
            superIndexInverse[superClassifier]?.apply {
                remove(classId)
                if (isEmpty()) superIndexInverse.remove(superClassifier)
            }
        }
    }