@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 ":EditCommandParser" as EditCommandParser LOGIC_COLOR
participant "e:EditCommand" as EditCommand 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("edit 2 f/Aglio-olio t/depression")
activate LogicManager

LogicManager -> AddressBookParser : parseCommand("edit 2 f/Aglio-olio t/depression")
activate AddressBookParser

create EditCommandParser
AddressBookParser -> EditCommandParser
activate EditCommandParser

EditCommandParser --> AddressBookParser
deactivate EditCommandParser

AddressBookParser -> EditCommandParser : parse("edit 2 f/Aglio-olio t/depression")
activate EditCommandParser

Create EditCommand
EditCommandParser -> EditCommand
activate EditCommand

EditCommand --> EditCommandParser : e
deactivate EditCommand

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

AddressBookParser --> LogicManager : e
deactivate AddressBookParser

LogicManager -> EditCommand : execute(m)
activate EditCommand

EditCommand -> Model : setPatient(args)
activate Model

Model --> EditCommand
deactivate Model

EditCommand -> Model : updateFilteredPatientList(args)
activate Model

Model --> EditCommand
deactivate Model

create CommandResult
EditCommand -> CommandResult
activate CommandResult

CommandResult --> EditCommand
deactivate CommandResult

EditCommand --> LogicManager : r
deactivate EditCommand

EditCommand -[hidden]-> AddressBookParser
destroy EditCommand

[<--LogicManager
deactivate LogicManager

@enduml
