@startuml skinparam BackgroundColor F0F0F0 interface AppDesktopActionHandler { handle(Action) } abstract class Action { } class RequestPinAction { GSM::SIM sim unsigned int attempts } class RequestPukAction { GSM::SIM sim unsigned int attempts } class SimUnlockedAction { GSM::SIM sim } class ChangePinAction { GSM::SIM sim } class UnhandledCMEAction { unsigned int cme_code } class SimBlockedAction { GSM::SIM sim } Action <|-- RequestPinAction Action <|-- RequestPukAction Action <|-- SimUnlockedAction Action <|-- ChangePinAction Action <|-- UnhandledCMEAction Action <|-- SimBlockedAction AppDesktopActionHandler *-- Action : use @enduml