@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 ":BookCommandParser" as BookCommandParser LOGIC_COLOR
participant "toAdd:Booking" as Booking LOGIC_COLOR
participant "book:BookCommand" as BookCommand LOGIC_COLOR
participant "r:CommandResult" as CommandResult LOGIC_COLOR
end box

box Model MODEL_COLOR_T1
participant "model:Model" as Model MODEL_COLOR
end box

[-> LogicManager : execute(...)
activate LogicManager

LogicManager -> AddressBookParser : parseCommand(...)
activate AddressBookParser

create BookCommandParser
AddressBookParser -> BookCommandParser
activate BookCommandParser

BookCommandParser --> AddressBookParser
deactivate BookCommandParser

AddressBookParser -> BookCommandParser : parse(...)
activate BookCommandParser

create Booking
BookCommandParser -> Booking
activate Booking

Booking --> BookCommandParser :
deactivate Booking

create BookCommand
BookCommandParser -> BookCommand : toAdd
activate BookCommand

BookCommand --> BookCommandParser :
deactivate BookCommand

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

AddressBookParser --> LogicManager : book
deactivate AddressBookParser

LogicManager -> BookCommand : execute(model)
activate BookCommand

BookCommand -> Model : addBooking()
activate Model

Model --> BookCommand
deactivate Model

create CommandResult
BookCommand -> CommandResult
activate CommandResult

CommandResult --> BookCommand
deactivate CommandResult

BookCommand --> LogicManager : r
deactivate BookCommand

[<--LogicManager
deactivate LogicManager
@enduml

