@startuml
!include style.puml

box Logic LOGIC_COLOR_T1
participant ":LogicManager" as LogicManager LOGIC_COLOR
participant ":MainCatalogueParser" as MainCatalogueParser LOGIC_COLOR
participant ":XYZCommand" as XYZCommand LOGIC_COLOR
participant ":InvalidScopeException" as InvalidScopeException LOGIC_COLOR
end box

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

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

LogicManager -> Model : getStatus()
activate Model

Model --> LogicManager : status
deactivate Model

activate MainCatalogueParser

opt commandWord == "XYZ":
alt status is expected status
create XYZCommand
MainCatalogueParser -> XYZCommand
activate XYZCommand

XYZCommand --> MainCatalogueParser
deactivate XYZCommand

MainCatalogueParser -> XYZCommand : parse("...")
activate XYZCommand

XYZCommand --> MainCatalogueParser
deactivate XYZCommand

else

create InvalidScopeException
MainCatalogueParser -> InvalidScopeException
activate InvalidScopeException

InvalidScopeException --> XYZCommand
deactivate InvalidScopeException
end
end

MainCatalogueParser --> LogicManager
deactivate MainCatalogueParser

[<--LogicManager
deactivate LogicManager
@enduml
