@startuml "" class "mxGraph\nComponent" package "application"{ class "Application\nLanguage" package "actions"{ abstract class "Abstract\nPopupAction" } package "editor"{ class "Editor" abstract class "Stage" package "stages"{ class "ControlFlow\nDelegationStage" class "ControlFlow\nDelegationCellEditor" '------------------------------------------ "Stage" <|--- "ControlFlow\nDelegationStage" ControlFlow\nDelegationCellEditor o-up-> ControlFlow\nDelegationStage } package "views"{ abstract class "PopupMenuBase" class "Navigation\nWindow" package "controlFlowDelegation"{ class "ControlFlow\nDelegationStage\nPopupMenu" class "FlowLayerWindow" '------------------------------------------ "PopupMenuBase" <|-- "ControlFlow\nDelegationStage\nPopupMenu" "FlowLayerWindow" o---> "ControlFlow\nDelegationStage" } } "Editor" o-up-> "mxGraph\nComponent" "Editor" o---> "Stage" ControlFlow\nDelegationStage\nPopupMenu o--> ControlFlow\nDelegationStage } } package "models"{ package "controlFlowModel"{ class "CallEdge" class "CallEdge\nAttribute" class "Composite\nCallEdgeAttribute" class "EventChannel\nObjectNode" class "ObjectNode" class "Stateful\nObjectNode" class "ObjectNode\nAttribute" class "CallGraph" class "ControlFlowGraph" class "ControlFlow\nDelegator" '------------------------------------------ "ObjectNode" <|-- "Stateful\nObjectNode" "ObjectNode" <|-- "EventChannel\nObjectNode" "CallEdge\nAttribute" o-r-> "CallEdge" "CallEdge\nAttribute" o--> "ObjectNode" "Composite\nCallEdgeAttribute" "1 " o----> "1..*" "CallEdge\nAttribute" "CallEdge\nAttribute" <|---- "Composite\nCallEdgeAttribute" "ObjectNode\nAttribute" o--> "ObjectNode" "ControlFlow\nDelegator" o--> "ControlFlowGraph" "ControlFlowGraph" "1" o--> "2" "CallGraph" } } @enduml