@startuml
!include style.puml
skinparam arrowThickness 1.1
skinparam arrowcolor LOGIC_COLOR_T3

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR_T3
participant ":FindCommandParser" as FridayParser LOGIC_COLOR_T3
participant "fc:FindCommand" as FindCommand LOGIC_COLOR_T3
participant "r:CommandResult" as CommandResult LOGIC_COLOR_T3
end box

box Model MODEL_COLOR_T1
participant "m:ModelManager" as Model MODEL_COLOR
participant ":fs:FilteredList" as FilteredList MODEL_COLOR
end box
[-> LogicManager : execute("find alice")
activate LogicManager

LogicManager -> FridayParser : parse("find alice")
activate FridayParser

create FindCommand
FridayParser -> FindCommand : findCommand(p)
activate FindCommand

FindCommand --> FridayParser : fc
deactivate FindCommand

FridayParser --> LogicManager : fc
deactivate FridayParser

LogicManager -> FindCommand : fc.execute(m)
activate FindCommand

FindCommand [MODEL_COLOR]-> Model : m.updateFilteredStudentList(p)
activate Model

Model [MODEL_COLOR]-> FilteredList : fs.setPredicate(p)
activate FilteredList


FilteredList -[MODEL_COLOR]--> Model :
deactivate FilteredList

Model -[MODEL_COLOR]--> FindCommand
deactivate Model

create CommandResult
FindCommand -> CommandResult :
activate CommandResult

CommandResult --> FindCommand : r
deactivate CommandResult
FindCommand --> LogicManager : r
deactivate FindCommand


[<--LogicManager : r
deactivate LogicManager
@enduml
