@startuml
!include style.puml

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR
participant "u:RedoCommand" as RedoCommand LOGIC_COLOR
end box

box Model MODEL_COLOR_T1
participant ":Model" as Model MODEL_COLOR
participant ":AddressBook" as AddressBook MODEL_COLOR
end box
[-> LogicManager : execute(redo)
activate LogicManager

LogicManager -> AddressBookParser : parseCommand(redo)
activate AddressBookParser

create RedoCommand
AddressBookParser -> RedoCommand
activate RedoCommand

RedoCommand --> AddressBookParser
deactivate RedoCommand

AddressBookParser --> LogicManager : u
deactivate AddressBookParser

LogicManager -> RedoCommand : execute()
activate RedoCommand

RedoCommand -> Model : checkOriginal()
activate Model

Model -> AddressBook : checkOriginal()
activate AddressBook

AddressBook --> Model : true
deactivate AddressBook

Model --> RedoCommand : true
deactivate Model

RedoCommand -> Model : restoreOriginal()
activate Model

Model -> AddressBook : restoreOriginal()
activate AddressBook

AddressBook --> Model
deactivate AddressBook

Model --> RedoCommand
deactivate Model

RedoCommand --> LogicManager : result
deactivate RedoCommand
RedoCommand -[hidden]-> LogicManager : result
destroy RedoCommand

[<--LogicManager
deactivate LogicManager
@enduml
