@startuml
!include style.puml

title Initialising TagNoteMap at Application Start-Up

box Main
participant ":MainApp" as MainApp MAIN_COLOR
end box

box Model MODEL_COLOR_T1
participant ":ModelManager" as Model MODEL_COLOR
participant ":TagNoteMap" as TagNoteMap MODEL_COLOR
end box

[-> MainApp : init()
activate MainApp

MainApp -> MainApp : initModelManager(storage, userPrefs)
activate MainApp


create Model
MainApp -> Model : ModelManager(initialData, userPrefs)
activate Model
create TagNoteMap
Model --> TagNoteMap
activate TagNoteMap
TagNoteMap --> Model
deactivate TagNoteMap

Model -> Model : initialiseTagNoteMap()
activate Model

Model -> TagNoteMap : initTagNoteMapFromClients(clients)
activate TagNoteMap
Model <-- TagNoteMap
deactivate TagNoteMap

Model -> TagNoteMap : initTagNoteMapFromCountryNotes(countryNotes)
activate TagNoteMap
Model <-- TagNoteMap
deactivate TagNoteMap
Model <--- Model
deactivate Model

Model --> MainApp
deactivate Model

MainApp --> MainApp
deactivate MainApp
[<-- MainApp
deactivate MainApp


@enduml
