@startuml
!include style.puml
skinparam ArrowFontStyle plain

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR
participant "u:FindFreePersonCommandParser" as FindFreePersonCommandParser LOGIC_COLOR
participant "u:FindFreePersonCommand" as FindFreePersonCommand LOGIC_COLOR
participant "r:CommandResult" as CommandResult LOGIC_COLOR
end box

box Model MODEL_COLOR_T1
participant "m:Model" as Model MODEL_COLOR
end box
[-> LogicManager : execute("whoisfree Tue:0700")
activate LogicManager

LogicManager -> AddressBookParser : parseCommand("whoisfree Tue:0700")
activate AddressBookParser

create FindFreePersonCommandParser
AddressBookParser -> FindFreePersonCommandParser
activate FindFreePersonCommandParser

FindFreePersonCommandParser --> AddressBookParser
deactivate FindFreePersonCommandParser

AddressBookParser -> FindFreePersonCommandParser : parse("Tue:0700")
activate FindFreePersonCommandParser

create FindFreePersonCommand
FindFreePersonCommandParser -> FindFreePersonCommand
activate FindFreePersonCommand

FindFreePersonCommand --> FindFreePersonCommandParser
deactivate FindFreePersonCommand

FindFreePersonCommandParser --> AddressBookParser
deactivate FindFreePersonCommandParser
'Hidden arrow to position the destroy marker below the end of the activation bar.
FindFreePersonCommandParser -[hidden]-> AddressBookParser
destroy FindFreePersonCommandParser

AddressBookParser --> LogicManager
deactivate AddressBookParser

LogicManager -> FindFreePersonCommand : execute(m)
activate FindFreePersonCommand

FindFreePersonCommand -> Model : updateFilteredPersonList(...)
activate Model

Model --> FindFreePersonCommand
deactivate Model

FindFreePersonCommand -> Model : getFilteredPersonList()
activate Model

Model --> FindFreePersonCommand
deactivate Model

create CommandResult
FindFreePersonCommand -> CommandResult
activate CommandResult

CommandResult --> FindFreePersonCommand
deactivate CommandResult

FindFreePersonCommand --> LogicManager
deactivate FindFreePersonCommand

[<--LogicManager
deactivate LogicManager
@enduml
