@startuml
hide footbox

participant ": TopoCommand" as TopoCommand
participant "topicManager: TopicManager" as TopicManager
participant ": Topic" as Topic
participant "topicCS2040CFiles: ArrayList<String>" as topicCS2040CFiles

TopoCommand -> TopicManager : getAllCS2040CFilesBeforeTopic(CS2040CFileName: String)
activate TopicManager
    loop TOPO_ORDER
        TopicManager -> Topic: isInsideTopic(CS2040CFileName: String)
        activate Topic
        return : boolean

        opt isPartOfTopoOrder
            TopicManager -> TopicManager: getCS2040CFilesByTopicToPrint(topicName: String)
            activate TopicManager
                TopicManager -> Topic: getAllCS2040CFilesInTopicToPrint()
                activate Topic
                    Topic -> topicCS2040CFiles **
                    activate topicCS2040CFiles
                    return

                    loop cs2040cFiles
                        Topic -> topicCS2040CFiles: add(cs2040cFileNameWithLabel: String)
                        activate topicCS2040CFiles
                        return
                    end
                return topicCS2040CFiles: ArrayList<String>
            return topicCS2040CFiles: ArrayList<String>
        end
    end
return toPrintCS2040CFiles: LinkedHashMap<String, ArrayList<String>>
@enduml